Sortie du langage de programmation Perl 5.30.0

Après 11 mois de développement a eu lieu sortie d'une nouvelle branche stable du langage de programmation Perl - 5.30. Lors de la préparation de la nouvelle version, environ 620 1300 lignes de code ont été modifiées, les modifications ont affecté 58 XNUMX fichiers et XNUMX développeurs ont participé au développement.

La branche 5.30 a été publiée conformément au calendrier de développement fixe approuvé il y a six ans, ce qui implique la sortie de nouvelles branches stables une fois par an et des versions correctives tous les trois mois. Dans environ un mois, il est prévu de publier la première version corrective de Perl 5.30.1, qui corrigera les erreurs les plus importantes identifiées lors de la mise en œuvre de Perl 5.30.0. Parallèlement à la sortie de Perl 5.30, la prise en charge de la branche 5.26 a été interrompue, pour laquelle des mises à jour ne pourront être publiées à l'avenir que si des problèmes de sécurité critiques sont identifiés. Le processus de développement de la branche expérimentale 5.31 a également commencé, sur la base duquel une version stable de Perl 2020 sera formée en mai 5.32.

Clé changements:

  • La prise en charge expérimentale des opérations "" a été ajoutée aux expressions régulières.(?<!modèle)"Et"(?‹=motif)» pour un accès limité aux modèles nommés précédemment traités. La définition du motif doit se trouver à moins de 255 caractères du point de référence ;
  • La valeur maximale du spécificateur de taille (« n ») dans les blocs d'expression régulière « {m,n} » a été augmentée à 65534 XNUMX ;
  • Ajout limité soutenir des masques pour mettre en évidence certaines catégories de caractères dans les expressions régulières, couvrant différents ensembles Unicode. Par exemple, l'expression « qr ! \p{nv= /(?x) \A [0-5] \z / } ! » vous permet de sélectionner tous les caractères Unicode qui définissent les nombres de 0 à 5, y compris les orthographes thaï ou bengali des nombres ;
  • Ajout de la prise en charge des caractères nommés dans les expressions régulières
    à l'intérieur de motifs délimités par des guillemets simples (qr'\N{name}') ;

  • Prise en charge des spécifications Unicode mise à jour vers la version 12.1. L'indicateur de développement expérimental a été supprimé des appels sv_utf8_downgrade et sv_utf8_decode, utilisé dans le développement d'extensions en langage C ;
  • Ajout de la possibilité de construire Perl avec l'implémentation d'opérations avec une locale prenant en charge les opérations multithread (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Auparavant, une telle implémentation n'était utilisée que lors de la construction d'une version multithread de Perl, mais peut désormais être activée pour n'importe quelle version ;
  • La combinaison des indicateurs "-Dv" (sortie de débogage améliorée) et "-Dr" (débogage des expressions régulières) entraîne désormais l'activation de tous les modes de débogage d'expressions régulières possibles ;
  • Les fonctionnalités précédemment obsolètes ont été supprimées :
    • Désormais disponible sous forme de séparateur de ligne et de caractères génériques permis utiliser seulement graphèmes (les caractères Unicode composites ne sont pas autorisés).
    • Discontinué prise en charge de certaines formes obsolètes depuis longtemps d'utilisation du caractère « { » dans les expressions régulières sans y échapper.
    • Interdit en utilisant les fonctions sysread(), syswrite(), recv() et send() avec les gestionnaires ":utf8".
    • Il est interdit d'utiliser des définitions de « mon » dans des déclarations conditionnelles intrinsèquement fausses (par exemple, « mon $x si 0 »).
    • La prise en charge des variables spéciales « $* » et « $# » a été supprimée.
      La prise en charge de l'appel implicite de la fonction dump() a été interrompue (vous devez désormais spécifier explicitement CORE::dump()).

    • La fonction File::Glob::glob a été supprimée (vous devez utiliser File::Glob::bsd_glob).
    • Ajout d'une protection à pack() contre le retour de séquences Unicode incorrectes.
    • La fin du support pour l'utilisation de macros effectuant des opérations avec UTF-8 dans le code XS (blocs C) a été reportée à la prochaine version.
  • Optimisations des performances :
    • Les opérations de traduction de l'UTF-8 vers la disposition des caractères ont été accélérées (point de code), par exemple, l’exécution de l’opération ord(“\x7fff”) nécessite désormais 12 % d’instructions en moins. Les performances des opérations vérifiant l'exactitude des séquences de caractères UTF-8 ont également été augmentées ;
    • Les appels récursifs dans la fonction finalize_op() ont été éliminés ;
    • Optimisations mineures du code pour réduire les caractères identiques et définir des classes de caractères dans les expressions régulières ;
    • Optimisé convertir les définitions de types signés en définitions non signées (IV en UV) ;
    • L'algorithme de conversion d'entiers en chaîne a été accéléré en traitant deux chiffres à la fois au lieu d'un ;
    • Des améliorations ont été apportées préparé basé sur l'analyse du LGTM ;
    • Code optimisé dans les fichiers regcomp.c, regcomp.h et regexec.c ;
    • Dans les expressions régulières, le traitement des modèles comme « qr/[^a]/ » avec des caractères ASCII a été considérablement accéléré.
  • Le support de la plateforme Minix3 a été restauré. Il est possible de construire à l'aide du compilateur Microsoft Visual Studio 2019 (Visual C++ 14.2) ;
  • Versions mises à jour des modules inclus dans le package de base. Les modules ont été supprimés de la composition principale B :: Débogage и Paramètres régionaux : : Codes.

Source: opennet.ru

Ajouter un commentaire