Après un an de développement publié sortie d'une nouvelle branche stable du langage de programmation Perl - 5.44. Avec en train de préparer La nouvelle version a modifié environ 270 000 lignes de code (hors documentation et code généré automatiquement - 110 000), les modifications ont affecté 860 fichiers et 71 développeurs ont participé au développement.
La branche 5.44 a été publiée conformément au calendrier de développement établi il y a treize ans, qui prévoit la publication d'une nouvelle branche stable une fois par an et de mises à jour mineures tous les trois mois. La première mise à jour mineure, Perl 5.44.1, devrait être disponible d'ici un mois environ et corrigera les bogues les plus importants découverts lors du développement de Perl 5.44.0. Avec la publication de Perl 5.44, le support de la branche 5.40 est terminé ; des mises à jour pourront être publiées ultérieurement uniquement en cas de découverte de failles de sécurité critiques. Commencé le processus de développement de la branche expérimentale 5.45, qui servira de base à la publication stable de Perl 5.46 au premier semestre 2027, est suspendu, sauf décision contraire. aller sur à la numérotation 7.x.
Clé changements:
- Ajouté par possibilité expérimentale d'utiliser des paramètres nommés dans signatures Les fonctions qui définissent la liste des variables passées à la fonction ne se trouvent pas dans son corps, mais lors de sa déclaration. Cette nouvelle fonctionnalité permet de passer les paramètres dans n'importe quel ordre, à l'aide de paires clé/valeur et d'une syntaxe similaire à l'affectation d'éléments dans des tables de hachage.
- 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 prise en charge expérimentale de l'utilisation d'alias (pointeurs vers des pointeurs) dans les boucles foreach avec plusieurs variables. Cette fonctionnalité permet de créer un alias dans une boucle foreach lors de la récupération de plusieurs valeurs en une seule itération. Par exemple, vous pouvez créer un alias pour un élément de hachage avec un tableau lors de l'itération sur les clés et les 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, un déréférencement était nécessaire : foreach my ( $key, $var ) ( %hash ) { say "Le tableau $key contient : @$var"; }` } # Sans les fonctionnalités expérimentales de 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 Le mode expérimental « enhanced_xx » permet d'utiliser le modificateur /xx avec les classes de caractères entre crochets ([a-zA-Z]) pour les répartir sur plusieurs lignes ou insérer des commentaires. Par exemple, la condition if ($text =~ m/[a-zA-Z]/){ pourrait s'écrire : if ($text =~ m/[ a-z # lettres minuscules A-Z # lettres majuscules ]/xx) {
- Le générateur de nombres pseudo-aléatoires utilise l'appel système getentropy() pour obtenir l'entropie sur les systèmes qui le prennent en charge (Linux, BSD, macOSSur d'autres systèmes, l'entropie est obtenue en lisant à partir du périphérique /dev/urandom ou en utilisant un hachage de l'heure, de l'identifiant du processus et de la valeur du pointeur.
- Prise en charge des spécifications ajoutée Unicode 17.0.
- Le respect strict des règles Unicode est désormais assuré pour les noms d'identificateurs et les groupes d'expressions régulières. Environ 160 caractères Unicode, auparavant inclus dans la classe w, sont désormais interdits. Par exemple, la classe w, qui couvre toutes les lettres, les chiffres et le caractère de soulignement, exclut désormais les lettres latines encerclées, qui ressemblent à des lettres mais n'en sont pas. Ce changement de comportement concerne uniquement les programmes utilisant le mode utf8.
- Correction des vulnérabilités causées par des dépassements de tampon dans les fonctions Perl_study_chunk (CVE-2026-8376, apparaît dans les assemblages 32 bits) et S_measure_struct (CVE-2026-57432), ainsi que le dépassement du compteur 16 bits dans le moteur Regex (CVE-2026-13221), ce qui peut entraîner l'échec de l'expression régulière.
- Il est interdit de se déplacer dans les boucles et les blocs à l'aide de l'opérateur goto. Cette fonctionnalité a été dépréciée en 2010.
- Des optimisations de performance ont été apportées pour accélérer l'addition, la soustraction et la multiplication des entiers, le traitement des signatures de fonctions et le remplissage des tables de hachage à partir de listes clé/valeur avec des clés de type chaîne connues au moment de la compilation.
Source: linux.org.ru
