Il consiglio di gestione del progetto Perl ha riassunto i piani per lo sviluppo futuro della serie Perl 5 e la creazione della serie Perl 7. Durante le discussioni, il consiglio ha concordato che non è accettabile violare la compatibilità con il codice già scritto per Perl 5, eccetto nei casi in cui la violazione della compatibilità è necessaria per risolvere vulnerabilità. Il consiglio ha anche concluso che il linguaggio deve evolversi e che è necessario promuovere più intensamente le nuove opportunità, semplificando l'accesso alle innovazioni emergenti e incoraggiandone l'adozione.
A differenza delle iniziali intenzioni, che prevedevano l'inclusione predefinita di modifiche nella serie Perl 7 che violavano la retro-compatibilità, il nuovo piano implica una transizione graduale della serie Perl 5 in Perl 7 senza compromettere la compatibilità con il codice esistente. Il rilascio di Perl 7.0 non sarà concettualmente diverso da una nuova serie Perl 5.xx.
Lo sviluppo di nuove release di Perl 5 continuerà come prima: le nuove funzionalità aggiunte alla serie, incompatibili con il vecchio codice, verranno incluse solo se esplicitamente richiesto nel codice tramite la pragma «use version» o «use feature capability». Ad esempio, nella versione Perl 5.010 è stata introdotta la nuova parola chiave «say», ma poiché nel codice esistente potrebbero essere state utilizzate funzioni con il nome «say», il supporto per la nuova parola chiave è stato attivato solo se esplicitamente richiesto tramite la pragma «use feature 'say'».
La nuova sintassi introdotta nel linguaggio, che in precedenti release produceva un errore, sarà disponibile immediatamente senza la necessità di specificare pragma speciali. Ad esempio, in Perl 5.36 verrà introdotta una sintassi semplificata per l'elaborazione simultanea di più valori in una lista («foreach my ($key, $value) (%hash) {«), che sarà accessibile subito, anche in codice privo di pragma «use v5.36».
Nella sua attuale forma, in Perl 5.36 attivando la pragma «use v5.36» vengono abilitate 13 funzionalità che violano la compatibilità (‘say’, ‘state’, ‘current_sub’, ‘fc’, ‘lexical_subs’, ‘signatures’, ‘isa’, ‘bareword_filehandles’, ‘bitwise’, ‘evalbytes’, ‘postderef_qq’, ‘unicode_eval’ e ‘unicode_strings’), vengono abilitati per impostazione predefinita i modi «use strict» e «use warnings» e viene disabilitato il supporto per la notazione obsoleta per la chiamata degli oggetti (quando al posto di «->» viene usato uno spazio) e per gli array e i hash multidimensionali in stile Perl 4 («$hash{1, 2}«).
Quando ci saranno abbastanza modifiche, invece di un'altra release Perl 5.x verrà creata una versione Perl 7.0, che sarà una sorta di istantanea dello stato attuale, ma rimarrà completamente retro-compatibile con Perl 5. Per includere modifiche e impostazioni che violano la compatibilità, sarà necessaria l'aggiunta esplicita nel codice della pragma «use v7». Quindi, il codice con la pragma «use v7» può essere considerato come «Perl moderno», in cui sono disponibili modifiche che violano la compatibilità del linguaggio, mentre senza di essa sarà un «Perl conservativo», che rimarrà completamente retro-compatibile con le versioni precedenti.
Fonte: opennet.ru
