Rilascio del linguaggio di programmazione Perl 5.30.0

Dopo 11 mesi di sviluppo si è tenuto rilascio di un nuovo ramo stabile del linguaggio di programmazione Perl — 5.30. Durante la preparazione della nuova versione, circa 620.000 righe di codice sono state modificate, coinvolgendo 1300 file, con la partecipazione di 58 sviluppatori.

Il ramo 5.30 è stato rilasciato secondo il piano di sviluppo fisso approvato sei anni fa, che prevede il rilascio di nuovi rami stabili una volta all'anno e di aggiornamenti correttivi ogni tre mesi. Circa un mese dopo, è previsto il rilascio del primo aggiornamento correttivo Perl 5.30.1, che correggerà i principali bug riscontrati durante l'implementazione di Perl 5.30.0. Contestualmente al lancio di Perl 5.30, il supporto per il ramo 5.26 è stato interrotto, per il quale in futuro potrebbero essere rilasciati aggiornamenti solo in caso di problemi critici di sicurezza. È anche iniziato il processo di sviluppo del ramo sperimentale 5.31, da cui sarà formata la versione stabile Perl 5.32 nel maggio 2020.

Chiave modifiche:

  • È stata aggiunta il supporto sperimentale per le operazioni nelle espressioni regolari «(?‹!pattern)» e «(?‹=pattern)» per accesso limitato a modelli nominati precedentemente elaborati. La definizione del modello deve essere entro 255 caratteri dal punto di riferimento;
  • Aumentato a 65534 il valore massimo del specificatore di dimensione («n») nei blocchi «{m,n}» delle espressioni regolari;
  • Aggiunta limitata supporto maschere per evidenziare determinate categorie di caratteri nelle espressioni regolari, coprendo diversi set di Unicode. Ad esempio, l'espressione «qr! \p{nv= /(?x) \A [0-5] \z / }!» permette di evidenziare tutti i caratteri Unicode che definiscono numeri da 0 a 5, inclusi i varianti thailandesi o bengalesi della scrittura dei numeri;
  • Nelle espressioni regolari è stato aggiunto il supporto per i caratteri nominati
    all'interno dei modelli delimitati da virgolette singole (qr’\N{name}’);
  • Il supporto per la specifica Unicode è stato aggiornato alla versione 12.1. Rimosso il contrassegno di sviluppo sperimentale dalle chiamate sv_utf8_downgrade e sv_utf8_decode, utilizzati nello sviluppo di estensioni in linguaggio C;
  • È stata aggiunta la possibilità di compilare Perl con l'implementazione delle operazioni con la località, supportando il funzionamento in modalità multi-thread (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). In precedenza, tale implementazione era utilizzata solo durante la compilazione della variante multi-thread di Perl, ma ora può essere inclusa per qualsiasi tipo di compilazione;
  • La combinazione dei flag '-Dv' (output di debug avanzato) e '-Dr' (debug di espressioni regolari) ora attiva tutte le possibili modalità di debug delle espressioni regolari;
  • Rimosse le funzionalità precedentemente dichiarate obsolette:
    • Come caratteri separatori di righe e modelli ora è consentito l'uso solo di grafemi (i caratteri compositi Unicode sono vietati).
    • Interrotta il supporto di alcune forme di utilizzo obsolette da tempo delle espressioni regolari con il carattere '{' senza escaping.
    • Vietato l'uso delle funzionalità sysread(), syswrite(), recv() e send() con gestori ':utf8'.
    • Vietato l'uso delle definizioni 'my' in operatori condizionali falsi di per sé (ad esempio, 'my $x if 0').
    • Rimossa la supporto delle variabili speciali '$*' e '$#'.
      Interrotta la supporto della chiamata implicita della funzione dump() (ora è necessario specificare esplicitamente CORE::dump()).
    • La funzione File::Glob::glob è stata rimossa (utilizzare File::Glob::bsd_glob).
    • È stata aggiunta una protezione in pack() contro il ritorno di sequenze Unicode non valide.
    • Il termine per la cessazione del supporto per l'uso nel codice XS (blocchi C) dei macro che eseguono operazioni con UTF-8 è stato rinviato alla prossima versione.
  • Ottimizzazioni delle prestazioni:
    • Le operazioni di traduzione da UTF-8 ai punti di codice sono state accelerate (code point), ad esempio, l'esecuzione dell'operazione ord(«\x7fff») ora richiede il 12% in meno di istruzioni. È stata inoltre migliorata l'efficienza delle operazioni di verifica delle sequenze di caratteri UTF-8;
    • Le chiamate ricorsive nella funzione finalize_op() sono state eliminate;
    • Piccole ottimizzazioni sono state apportate al codice di consolidamento dei caratteri identici e alla determinazione delle classi di caratteri nelle espressioni regolari;
    • Ottimizzati i tipi di conversione da segnati a non segnati (IV in UV);
    • Accelerato l'algoritmo di conversione degli interi in stringa trattando due cifre contemporaneamente anziché una;
    • Sono stati apportati miglioramenti, preparati sulla base dell'analisi dell'azienda LGTM;
    • Ottimizzato il codice nei file regcomp.c, regcomp.h e regexec.c;
    • Nella gestione delle espressioni regolari è stata notevolmente accelerata l'elaborazione di modelli del tipo «qr/[^a]/» con caratteri ASCII.
  • Ripristinato il supporto per la piattaforma Minix3. È possibile compilare utilizzando il compilatore Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Aggiornate le versioni dei moduli inclusi nella distribuzione di base. Sono stati rimossi i moduli principali B::Debug e Locale::Codes.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster