Debian Instable passe à Perl 5.40
Debian Unstable a été mis à jour vers Perl 5.40.0, apportant une gamme de nouvelles fonctionnalités, des mises à jour de sécurité et des corrections de bogues. Le développeur Debian Niko Tyni a annoncé la transition sur la liste de diffusion Debian, notant que les utilisateurs devraient s'attendre à une désinstallabilité généralisée dans sid (le nom de code pour Debian Unstable) pendant quelques jours jusqu'à ce que les reconstructions nécessaires soient terminées.
Les nouveaux paquets Perl apparaîtront d'abord dans la branche Instable de Debian. De là, ils passeront à la branche Testing et seront probablement inclus dans la prochaine version stable de Debian, probablement l'année prochaine.
La mise à niveau de Debian Unstable vers Perl 5.40.0 est une avancée notable. Elle introduit de nouvelles fonctionnalités du langage, améliore la sécurité et corrige de nombreux bugs. Parlons de certaines nouvelles fonctionnalités, améliorations et changements notables dans Perl 5.40.
Nouvelles fonctionnalités dans Perl 5.40.0
Perl 5.40.0 est une version majeure avec plusieurs améliorations, y compris :
- Le mot-clé
class: Ce nouveau mot-clé permet aux développeurs d'écrire un code Perl plus moderne et orienté objet. À l'intérieur d'une méthode, d'un blocADJUSTou d'une expression d'initialisation de champ, le mot-clé__CLASS__renvoie le nom de la classe de l'instance d'objet actuelle. Cela facilite la distribution des méthodes, en particulier dans les constructeurs où l'accès à$selfn'est pas autorisé. - Espace dans l'option de ligne de commande
-M: Perl permet désormais un espace entre l'option-Met le nom du module qui suit, reflétant le comportement de l'option-I. - Opérateur logique XOR (
^^) : Un nouvel opérateur logique XOR (^^) a été introduit, complétant l'ensemble des opérateurs logiques et binaires. - Stabilisation de
try/catchet de l'itérationformulti-valeur : Les fonctionnalités introduites dans les versions précédentes,try/catchpour la gestion des exceptions et l'itération sur plusieurs valeurs avecfor, sont désormais considérées comme stables et ne déclenchent plus d'avertissements. - Stabilisation du module
builtin: Le modulebuiltin, introduit dans Perl 5.36.0, est désormais considéré comme stable. Cependant, certaines fonctions du module restent expérimentales. use v5.40bundle de fonctionnalités : Utiliseruse v5.40;(ou une version ultérieure) importe le bundle de fonctionnalités correspondant, y compris la fonctionnalitétryrécemment stabilisée. De plus, il importe le bundle de versionbuiltinpertinent.
Améliorations de la sécurité
Deux vulnérabilités de sécurité importantes ont été corrigées dans cette version :
- CVE-2023-47038 : Cette vulnérabilité concernait un débordement de tampon potentiel via une expression régulière conçue. Elle a été corrigée dans les versions 5.30.0 à 5.38.0.
- CVE-2023-47039 : Une vulnérabilité de détournement binaire spécifique à Perl pour Windows a été corrigée. Cette vulnérabilité découle de la dépendance de Perl au chemin système pour localiser
cmd.exe, le rendant susceptible d'exploitation en plaçant uncmd.exemalveillant dans un répertoire aux permissions faibles.
Modifications notables
La mise à niveau comprend également quelques modifications incompatibles :
reset EXPRcomportement :reset EXPRinvoque désormais "set-magic" sur les scalaires, pouvant potentiellement provoquer des changements dans les états internes ou déclencher des exceptions.- Appel de la méthode d'importation d'un package indéfini : Appeler
importouunimportsur une classe indéfinie avec un argument génère désormais un avertissement, aidant à détecter les fautes de frappe et les usages potentiellement incorrects. - Interdiction des objets indirects avec
return: L'opérateurreturnne permet plus les objets indirects, éliminant une source de confusion. - Restriction sur les mots nus de classe dans les appels de méthodes : Les mots nus de classe ne sont plus interprétés comme des gestionnaires de fichiers dans certains appels de méthodes sous la condition
no feature "bareword_filehandles".
Mises à jour du module
Plusieurs modules principaux ont été mis à jour, avec des améliorations notables incluant :
- Archive::Tar mis à jour de 2.40 à 3.02_001.
- Term::Table ajouté au noyau (version 0.018).
- Test2::Suite ajouté au noyau (version 0.000162), fournissant des outils pour des tests unitaires complets.
module intégré: La fonctionload_module()ajoutée.
Divers autres modules ont reçu des mises à jour, y compris mais sans s'y limiter bytes, Compress::Raw::Bzip2, Compress::Raw::Zlib, Data::Dumper, DB_File, Devel::Peek, Devel::PPPort, diagnostics, et bien d'autres.
La liste complète des changements est documentée dans le document delta de Perl, qui fournit des informations détaillées pour les développeurs. Si vous rencontrez des problèmes que vous pensez être des bugs, veuillez suivre les instructions de signalement sur https://github.com/Perl/perl5/issues.
Ressource:
- Transition vers Perl 5.40 en cours