Oggi, durante la conferenza virtuale per sviluppatori del linguaggio Perl, il progetto Perl 7, che proseguirà senza soluzione di continuità lo sviluppo della serie Perl 5 senza apportare cambiamenti radicali. Perl 7 sarà analogo alla versione , ad eccezione di alcune impostazioni predefinite diverse, meglio allineate 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 significativo cambio di numero di versione rappresenterà una sorta di confine per il passaggio a un nuovo modello di espansione delle funzionalità del linguaggio Perl senza violare tangibilmente la retrocompatibilità.
Si prevede che la creazione di Perl 7 aiuterà ad attrarre nuovi sviluppatori verso Perl e a facilitare l'inserimento nel linguaggio di significative nuove funzionalità, mantenendo al contempo la compatibilità con il codice sorgente dei progetti esistenti. Il numero 7 è stato scelto poiché Perl 6 era stato utilizzato nella costruzione del linguaggio, che ora ha un nome separato, Raku. Il primo rilascio di Perl 7 è atteso per il prossimo anno. La serie Perl 5.32 sarà l'ultima della linea Perl 5 e si prevede che sarà supportata per un periodo di 5-10 anni.
La modifica più significativa in Perl 7 sarà l'inclusione per impostazione predefinita della modalità ««, che prevede un controllo rigoroso della dichiarazione delle variabili, dell'uso dei puntatori simbolici e dell'assegnazione delle funzioni. L'uso di «use strict» è considerato una buona pratica e adottato dalla maggior parte degli sviluppatori. In modo simile, si prevede di attivare per impostazione predefinita la gestione dei warning (««).
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 e automatizzare il controllo del loro numero (si potrà scrivere «sub foo ($left, $right) {» invece di «sub foo { my($left, $right) = @_;»). Si prevede di includere per impostazione predefinita anche il supporto per l'operatore «isa» per verificare se un oggetto è un'istanza della classe specificata o di una classe derivata («if( $obj isa Package::Name )», così come le operazioni di dereferenziazione postfissa (postderef) «$sref->$*» invece di «${ $sref }», «$aref->@*» invece di «@{ $aref }» e «$href->%{ … }» invece di «%$href{ … }».
I candidati per la disattivazione per impostazione predefinita in Perl 7 sono:
- Notazione indiretta per chiamare oggetti (««) — un metodo obsoleto per chiamare oggetti, in cui invece di «->» si utilizza uno spazio («method $object @param» invece di «$object->$method(@param)»). Ad esempio, invece di «my $cgi = new CGI» si dovrà sempre utilizzare «my $cgi = CGI->new».
- Descrittori di file nudi senza dichiarazione di variabili (««) — l'uso di costruzioni come «open FH, $file» porterà a un errore; si deve utilizzare «open my $fh, $file». La modifica non influirà sui descrittori di file standard STDIN, STDOUT, STDERR, ARGV, ARGVOUT e DATA.
- Array e hash multidimensionali fittizi in stile Perl 4 (««).
Ad esempio, specificare «$hash{1, 2}» porterà a un errore; si deve utilizzare un array intermedio, ad esempio «$hash{join($;, 1, 2)}». - Dichiarazione di prototipi in stile Perl 4 (si deve utilizzare «use :prototype()»).
Nei piani futuri, per default, si prevede l'inclusione del supporto Unicode, il che libererà gli sviluppatori dall'obbligo di specificare «use utf8» nel codice. Per i moduli e gli script che riscontrano problemi con le nuove impostazioni predefinite, è prevista la possibilità di ripristinare il comportamento di Perl 5 aggiungendo nel codice la riga «use compat::perl5». Alcune impostazioni rimarranno disponibili e potranno essere modificate singolarmente.
Fonte: opennet.ru
