Perl 7 continuerà senza soluzione di continuità lo sviluppo di Perl 5 senza interrompere la compatibilità con le versioni precedenti

Il Consiglio direttivo del progetto Perl ha delineato i piani per l'ulteriore sviluppo del ramo Perl 5 e la creazione di un ramo Perl 7. Durante le discussioni, il Consiglio direttivo ha convenuto che non è accettabile interrompere la compatibilità con il codice già scritto per Perl 5, a meno che non venga violata la compatibilità è necessaria per correggere le vulnerabilità. Il Consiglio ha inoltre concluso che il linguaggio dovrebbe evolversi e che le nuove funzionalità dovrebbero essere promosse più intensamente, facilitando al tempo stesso l'accesso alle innovazioni emergenti e incoraggiandone l'adozione.

A differenza delle intenzioni originali di consentire l'inclusione predefinita nel ramo Perl 7 di modifiche che interrompono la compatibilità con le versioni precedenti, il nuovo piano prevede la transizione graduale del ramo Perl 5 in Perl 7 senza interrompere la compatibilità con le versioni precedenti con il codice esistente. Il rilascio di Perl 7.0 non sarà concettualmente diverso dal prossimo ramo Perl 5.xx.

Lo sviluppo delle nuove versioni di Perl 5 continuerà come prima: le nuove funzionalità aggiunte al ramo che sono incompatibili con il vecchio codice verranno incluse, come prima, solo se il pragma "usa versione" o "usa funzionalità funzionalità" è esplicitamente specificato nel codice. Ad esempio, Perl 5.010 ha introdotto una nuova parola chiave "say", ma poiché il codice esistente poteva utilizzare funzioni denominate "say", il supporto per la nuova parola chiave veniva abilitato solo specificando esplicitamente il pragma "usa funzionalità 'say'".

La nuova sintassi aggiunta al linguaggio, che quando elaborata nelle versioni precedenti portava a un errore, diventa immediatamente disponibile senza la necessità di specificare pragma speciali. Ad esempio, Perl 5.36 introdurrà una sintassi semplificata per elaborare più valori di lista contemporaneamente (“foreach my ($key, $value) (%hash) {”) che sarà immediatamente disponibile, anche nel codice senza il comando “use pragma v5.36”.

Nella sua forma attuale, Perl 5.36 utilizza il pragma "use v5.36" per abilitare 13 funzionalità che compromettono l'interoperabilità ('say', 'state', 'current_sub', 'fc', 'lexical_subs', 'signatures', 'isa ', ' bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' e 'unicode_strings'), abilitano le modalità "usa rigoroso" e "usa avvisi" per impostazione predefinita e disabilitano il supporto per la notazione indiretta legacy per chiamando oggetti (quando invece di "- >" utilizza uno spazio) e array e hash multidimensionali in stile Perl 4 ("$hash{1, 2}").

Quando si saranno accumulate modifiche sufficienti, invece della versione successiva di Perl 5.x, verrà generata una versione di Perl 7.0, che diventerà una sorta di istantanea dello stato, ma rimarrà completamente compatibile con Perl 5. Per abilitare modifiche e impostazioni che interrompono la compatibilità, sarà necessario aggiungere esplicitamente al codice il pragma “use v7”. Quelli. il codice con il pragma "use v7" può essere trattato come "Perl moderno", in cui sono disponibili modifiche linguistiche che interrompono la compatibilità, e senza - "Perl conservativo", che rimarrà completamente retrocompatibile con le versioni precedenti.

Fonte: opennet.ru

Aggiungi un commento