Perl 5.44


3

Après un an de développement publiée lancement de la nouvelle branche stable du langage de programmation Perl — 5.44. Lors de la préparation de la nouvelle version, environ 270 000 lignes de code ont été modifiées (sans documentation et code généré automatiquement — 110 000), les changements ont concerné 860 fichiers, et 71 développeurs ont participé au développement.

La branche 5.44 a été publiée conformément à un calendrier de développement fixe établi il y a treize ans, prévoyant la sortie de nouvelles branches stables chaque année et de mises à jour correctives tous les trois mois. Environ un mois après, la première mise à jour corrective Perl 5.44.1 sera publiée, corrigera les erreurs les plus significatives détectées lors de l'implémentation de Perl 5.44.0. À compter de la sortie de Perl 5.44, la prise en charge de la branche 5.40 a été interrompue, et des mises à jour ne pourront être publiées à l'avenir qu'en cas de problèmes critiques de sécurité. Le processus de développement de la branche expérimentale 5.45 a commencé, sur la base de laquelle une version stable de Perl 5.46 sera formée au premier semestre 2027, sauf si une décision est prise de passer à la numérotation 7.x.

Améliorations clés modifications:

  • Ajouté une nouvelle fonctionnalité expérimentale permettant d'utiliser des paramètres nommés dans les signatures des fonctions, définissant la liste des variables transmises à la fonction non pas dans le corps de la fonction, mais lors de sa déclaration. La nouvelle fonctionnalité permet de transmettre des paramètres non pas dans un ordre strict, mais dans un ordre libre en utilisant des paires clé/valeur et une syntaxe similaire à celle de l'attribution d'éléments dans des hachages :
    • ancienne syntaxe : sub f { my ($x, $y) = @_; …} f(1, 2);
    • signatures : sub f ($x, $y) { … } f(1, 2);
    • signatures avec paramètres nommés : sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • Ajout d'une fonctionnalité expérimentale permettant d'utiliser des alias (pointeurs vers des pointeurs) dans les boucles foreach avec plusieurs variables. La fonctionnalité mise en œuvre permet de créer un alias dans une boucle foreach tout en extrayant plusieurs valeurs simultanément lors d'une itération de la boucle. Par exemple, on peut former un alias pour un élément de hachage avec un tableau lors du parcours simultané des clés et des valeurs du hachage : use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "Le tableau $key contient : @items"; } # Avant la version 5.44, il aurait fallu effectuer un désencapsulage : foreach my ( $key, $var ) ( %hash ) { say "Le tableau $key contient : @$var"; } # Sans les fonctionnalités expérimentales refaliasing et declared_refs : foreach my $key (keys %hash) { say "Le tableau $key contient : @{$hash{$key}}"; }
  • Dans les expressions régulières mis en œuvre mode expérimental ‘enhanced_xx’ permettant d'utiliser le modificateur /xx avec des classes de symboles dans des crochets ([a-zA-Z]) pour les répartir sur plusieurs lignes ou pour insérer des commentaires. Par exemple, la condition if ($text =~ m/[a-zA-Z]/) peut être écrite comme suit : if ($text =~ m/[ a-z # lettres minuscules A-Z # lettres majuscules ]/xx) {
  • Dans le générateur de nombres pseudo-aléatoires, l'appel système getentropy() est utilisé pour obtenir de l'entropie sur les systèmes qui le supportent (Linux, BSD, macOS). Sur les autres systèmes, l'entropie est obtenue par la lecture de l'appareil /dev/urandom ou l'utilisation d'un hachage basé sur l'heure, l'identifiant du processus et la valeur du pointeur.
  • Ajout du support de la spécification Unicode 17.0.
  • Assurance du respect strict des règles Unicode pour les noms d'identifiants et les groupes d'expressions régulières, dans lesquels environ 160 symboles Unicode sont désormais interdits d'utilisation, auparavant considérés comme appartenant à la classe w. Par exemple, les lettres latines en cercles, qui ressemblent à de vraies lettres mais ne le sont pas, ont été exclues de l'action de la classe w, englobant toutes les lettres, chiffres et le caractère de soulignement. Ce changement de comportement n'affecte que les programmes utilisant le mode use utf8.
  • Correction des vulnérabilités causées par des dépassements de tampon dans les fonctions Perl_study_chunk (CVE-2026-8376, se manifestant dans des compilations 32 bits) et S_measure_struct (CVE-2026-57432), ainsi que le débordement d'un compteur 16 bits dans le moteur Regex (CVE-2026-13221), ce qui peut entraîner un déclenchement incorrect d'une expression régulière.
  • Il est interdit de passer par l'opérateur goto à l'intérieur des boucles et des constructions de blocs. Cette possibilité a été déclarée obsolète en 2010.
  • Des optimisations de performance ont été réalisées, accélérant les opérations d'addition, de soustraction et de multiplication des entiers, le traitement des signatures de fonctions et le remplissage des hachages à partir des listes au format clé/valeur avec des clés de chaîne connues au moment de la compilation.

Source : linux.org.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster