Rilascio del linguaggio di programmazione Perl 5.30.0

Dopo 11 mesi di sviluppo ha avuto luogo rilascio di un nuovo ramo stabile del linguaggio di programmazione Perl - 5.30. Nella preparazione della nuova release sono state modificate circa 620mila righe di codice, le modifiche hanno interessato 1300 file e allo sviluppo hanno preso parte 58 sviluppatori.

Il ramo 5.30 è stato rilasciato secondo il programma di sviluppo fisso approvato sei anni fa, che prevede il rilascio di nuovi rami stabili una volta all'anno e rilasci correttivi ogni tre mesi. Tra circa un mese è previsto il rilascio della prima versione correttiva di Perl 5.30.1, che correggerà gli errori più significativi identificati durante l'implementazione di Perl 5.30.0. Con il rilascio di Perl 5.30 è stato interrotto il supporto per il ramo 5.26, per il quale in futuro potranno essere rilasciati aggiornamenti solo se verranno identificati problemi critici di sicurezza. È stato inoltre avviato il processo di sviluppo del ramo sperimentale 5.31, sulla base del quale a maggio 2020 verrà formata una release stabile di Perl 5.32.

Chiave modifiche:

  • Il supporto sperimentale per le operazioni "" è stato aggiunto alle espressioni regolari.(?<!modello)"E"(?‹=modello)» per un accesso limitato ai modelli denominati precedentemente elaborati. La definizione del modello deve trovarsi entro 255 caratteri dal punto di riferimento;
  • Il valore massimo dell'identificatore di dimensione (“n”) nei blocchi di espressioni regolari “{m,n}” è stato aumentato a 65534;
  • Aggiunto limitato sostegno maschere per evidenziare determinate categorie di caratteri nelle espressioni regolari, coprendo diversi set Unicode. Ad esempio, l'espressione “qr! \p{nv= /(?x) \A [0-5] \z / }!” consente di selezionare tutti i caratteri Unicode che definiscono i numeri da 0 a 5, inclusa l'ortografia dei numeri tailandese o bengalese;
  • Aggiunto il supporto per i caratteri con nome nelle espressioni regolari
    all'interno di schemi delimitati da virgolette singole (qr'\N{nome}');

  • Supporto della specifica Unicode aggiornato alla versione 12.1. Il flag di sviluppo sperimentale è stato rimosso dalle chiamate sv_utf8_downgrade e sv_utf8_decode, utilizzato nello sviluppo di estensioni nel linguaggio C;
  • Aggiunta la possibilità di creare perl con l'implementazione di operazioni con una locale che supporta operazioni multi-thread (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). In precedenza, tale implementazione veniva utilizzata solo durante la creazione di una versione multi-thread di Perl, ma ora può essere abilitata per qualsiasi build;
  • La combinazione dei flag "-Dv" (output di debug migliorato) e "-Dr" (debug regex) ora abilita tutte le possibili modalità di debug delle espressioni regolari;
  • Le funzionalità precedentemente deprecate sono state rimosse:
    • Ora disponibile come separatore di riga e caratteri jolly permesso Usare solo grafemi (non sono ammessi caratteri Unicode compositi).
    • Interrotto supporto per alcune forme ormai obsolete di utilizzo del carattere "{" nelle espressioni regolari senza eseguirne l'escape.
    • Proibito utilizzando le funzioni sysread(), syswrite(), recv() e send() con i gestori ":utf8".
    • È vietato utilizzare le definizioni di “mio” in affermazioni condizionali intrinsecamente false (ad esempio, “mio $x se 0”).
    • Il supporto per le variabili speciali “$*” e “$#” è stato rimosso.
      Il supporto per la chiamata implicita della funzione dump() è stato interrotto (ora è necessario specificare esplicitamente CORE::dump()).

    • La funzione File::Glob::glob è stata rimossa (dovresti usare File::Glob::bsd_glob).
    • Aggiunta protezione a pack() contro la restituzione di sequenze Unicode errate.
    • La fine del supporto per l'utilizzo delle macro che eseguono operazioni con UTF-8 in codice XS (blocchi C) è stata posticipata al prossimo rilascio.
  • Ottimizzazioni delle prestazioni:
    • Le operazioni di traduzione da UTF-8 al layout dei caratteri sono state accelerate (punto di codice), ad esempio, l'esecuzione dell'operazione ord(“\x7fff”) ora richiede il 12% di istruzioni in meno. Sono state inoltre incrementate le prestazioni delle operazioni di verifica della correttezza delle sequenze di caratteri UTF-8;
    • Le chiamate ricorsive nella funzione finalize_op() sono state eliminate;
    • Sono state apportate piccole ottimizzazioni al codice per comprimere caratteri identici e definire classi di caratteri nelle espressioni regolari;
    • Ottimizzato convertire le definizioni di tipo con segno in quelle senza segno (da IV a UV);
    • L'algoritmo per convertire gli interi in una stringa è stato accelerato elaborando due cifre contemporaneamente invece di una;
    • Sono stati apportati miglioramenti qualificato sulla base dell'analisi di LGTM;
    • Codice ottimizzato nei file regcomp.c, regcomp.h e regexec.c;
    • Nelle espressioni regolari, l'elaborazione di modelli come "qr/[^a]/" con caratteri ASCII è stata notevolmente accelerata.
  • Il supporto per la piattaforma Minix3 è stato ripristinato. È possibile compilare utilizzando il compilatore Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Versioni aggiornate dei moduli inclusi nel pacchetto base. I moduli sono stati rimossi dalla composizione principale B::Debug и Locale::Codici.

Fonte: opennet.ru

Aggiungi un commento