Vue normale

Reçu avant avant-hier

Perl 5.42 est sorti

Perl est un langage généraliste créé en 1987 par Larry Wall. Il est distribué sous une double licence : Artistic Licence et GPL v1+. La plupart des modules du CPAN, dépôt de référence pour des modules tiers, sont également sous ces deux licences. Perl est inclus dans la quasi-totalité des distributions GNU/Linux, parfois installé par défaut.

La toute dernière version de Perl, la 5.42.0, est sortie le 3 juillet 2025. Vous la retrouverez bientôt dans votre distribution préférée.

L’association Les Mongueurs de Perl fait la promotion du langage dans les pays francophones, et ce depuis la fin de l’année 2001

Sommaire

Améliorations principales

Nouveaux sous-programmes CORE::

chdir a été ajouté comme sous-programme à l'espace de noms CORE::.

Jusqu’ici, du code comme &CORE::chdir($dir) ou my $ref = \&CORE::chdir;
$ref->($dir)
renvoyait une erreur indiquant que &CORE::chdir ne peut pas être appelé directement. Ces cas sont désormais entièrement pris en charge.

Nouveau pragma source::encoding

Voir source::encoding

Ceci vous permet de déclarer que la partie d’un programme correspondant au reste de la portée lexicale de ce pragma est encodée soit entièrement en ASCII (pour use source::encoding 'ascii'), ou que l’UTF-8 est autorisé également (pour use source::encoding 'utf8'). Aucun autre codage n’est accepté. La seconde forme est entièrement équivalente à use utf8 et peut être utilisée de manière interchangeable.

Ce pragma a pour but de détecter rapidement les cas où vous avez oublié de spécifier use utf8.

use source::encoding 'ascii' est automatiquement activé dans la portée lexicale d’un use v5.41.0 ou supérieur.

no source::encoding désactive toutes ces vérifications pour le reste de sa portée lexicale. La signification des caractères non-ASCII n’est alors pas définie.

Nouvel attribut :writer sur les variables de champ

Les classes définies avec use feature 'class' peuvent désormais créer automatiquement des accesseurs d’écriture pour les champs scalaires, à l’aide de l’attribut :writer, de la même manière que :reader crée déjà des accesseurs de lecture.

class Point {
field $x :reader :writer :param;
field $y :reader :writer :param;
}


my $p = Point->new( x => 20, y => 40 );
$p->set\_x(60);

Nouveaux opérateurs any et all

Ajout de deux nouvelles fonctionnalités expérimentales, introduisant les opérateurs de traitement de liste any et all.

use v5.42 ;
use feature 'keyword\_all' ;
no warning 'experimental::keyword\_all' ;


my @nombres = ...


if ( all { $\_ % 2 == 0 } @nombres ) {
  say "Tous les nombres sont pairs" ;
}

Ces mots-clés fonctionnent de manière similaire à grep, sauf qu’ils ne renvoient que vrai ou faux, testant si un des éléments (ou tous) de la liste fait que le bloc de test renvoie vrai. De ce fait, ils peuvent court-circuiter, évitant ainsi de tester d’autres éléments si un élément donné détermine le résultat final.

Ces fonctions s’inspirent des fonctions du même nom du module List::Util, à la différence qu’elles sont implémentées comme des opérateurs de base directs, et donc plus rapides, et ne génèrent pas de trame de pile d’appel de sous-routine supplémentaire pour invoquer le bloc de code.

Les indicateurs de fonctionnalité activant ces mots-clés ont été nommés keyword_any et keyword_all afin d’éviter toute confusion avec la capacité du module feature à faire référence à toutes ses fonctionnalités à l’aide de la balise d’exportation :all. [GH #23104]

Les indicateurs d’avertissement expérimentaux associés sont donc nommés experimental::keyword_any et experimental::keyword_all.

L’apostrophe comme séparateur de noms global peut être désactivée.

Ceci a été déclaré obsolète dans Perl 5.38 et supprimé comme prévu dans Perl 5.41.3, mais, après discussion, il a été rétabli par défaut.

Ceci peut être contrôlé avec la fonctionnalité apostrophe_as_package_separator, activée par défaut, mais désactivée à partir du bundle de fonctionnalités 5.41.

Si vous souhaitez désactiver son utilisation dans votre propre code, vous pouvez la désactiver explicitement :

no feature "apostrophe\_as\_package\_separator";

Notez que la désactivation de cette fonctionnalité empêche uniquement l’utilisation de l’apostrophe comme séparateur de paquets dans le code ; les références symboliques traitent toujours ' comme :: même si la fonctionnalité est désactivée :

my $symref = "My'Module'Var";
\# fonctionnalités par défaut
my $x = $My'Module'Var; # fine
no feature "apostrophe\_as\_package\_separator";
no strict "refs";
my $y = $$symref; # comme $My::Module::Var
my $z = $My'Module'Var; # erreur de syntaxe

[GH #22644]

Déclaration de méthode lexicale avec my method

Comme sub depuis la version 5.18 de Perl, method peut désormais être préfixé par le mot-clé my. Cela déclare une sous-routine avec une visibilité lexicale, plutôt que de package. Voir perlclass pour plus de détails.

Opérateur d’invocation de méthode lexicale ->&

Outre la possibilité de déclarer des méthodes de manière lexicale, cette version permet également d’invoquer une sous-routine lexicale comme s’il s’agissait d’une méthode, sans passer par la résolution habituelle des méthodes par nom.

Combinées à la déclaration de méthode lexicale, ces deux nouvelles fonctionnalités créent l’effet de méthodes privées.

Opérateur de commutation et de correspondance intelligente conservé, derrière une fonctionnalité

La fonctionnalité « switch » et l’opérateur de correspondance intelligente, ~~, ont été introduits dans la version 5.10. Leur comportement a été considérablement modifié dans la version 5.10.1. Avec l’ajout du système « experiment » dans la version 5.18.0, le « switch » et le smartmatch ont été rétroactivement déclarés expérimentaux. Au fil des ans, les propositions visant à corriger ou à compléter ces fonctionnalités ont été nombreuses et ont été abandonnées.

Elles ont été déclarées obsolètes dans Perl v5.38.0 et leur suppression était prévue dans Perl v5.42.0. Après de longues discussions, leur suppression a été reportée sine die. Leur utilisation ne génère plus d’avertissement d’obsolescence.

Switch lui-même nécessite toujours la fonctionnalité switch, activée par défaut pour les bundles de fonctionnalités de la version 5.9.5 à la version 5.34. Switch reste désactivé dans les bundles de fonctionnalités 5.35 et ultérieurs, mais peut être activé séparément :

\# pas de switch ici
use v5.10;
\# switch accepté ici
use v5.36;
\# pas de switch ici
use feature "switch"; # switch accepté ici

La correspondance intelligente nécessite désormais la fonctionnalité smartmatch, activée par défaut et incluse dans tous les bundles de fonctionnalités jusqu’à la version 5.40. Elle est désactivée à partir de la version 5.41, mais peut être activée séparément :

\# smartmatch accepté ici
use v5.41;
\# pas de smartmatch ici
use feature "smartmatch";
\# smartmatch accepté ici

[GH #22752]

Unicode 16.0 pris en charge

Perl prend désormais en charge Unicode 16.0, y compris les modifications introduites dans la version 15.1.

Assignation de l’opérateur logique xor ^^=

Perl 5.40.0 avait introduit l’opérateur logique OU exclusif à priorité moyenne ^^. L’absence de la variante d’assignation ^^= n’avait pas été remarquée à l’époque. Cet oubli est désormais corrigé.

Sécurité

[CVE-2024-56406] Vulnérabilité de dépassement de tampon avec tr//

Une vulnérabilité de dépassement de tampon a été découverte dans Perl.

Lorsque des octets non-ASCII se trouvent à gauche de l’opérateur tr, S_do_trans_invmap() peut faire déborder le pointeur de destination d.

$ perl -e '$\_ = "\x{FF}" x 1000000; tr/\xFF/\x{100}/;'
Segmentation fault (core dumped)

On pense que cette vulnérabilité peut permettre des attaques par déni de service ou par exécution de code arbitraire sur les plateformes dépourvues de défenses suffisantes.

Ce problème a été découvert par Nathan Mills et déclaré [CVE-2024-56406] par le groupe de sécurité CPAN.

Le correctif pour corriger ce problème (87f42aa0e0096e9a346c9672aa3a0bd3bef8c1dd) s’applique à tous les Perl vulnérables, y compris ceux qui ne sont plus pris en charge.

[CVE-2025-40909] Les threads Perl présentent une situation de concurrence entre les répertoires de travail : les opérations sur les fichiers peuvent cibler des chemins non prévus.

Le clonage de threads Perl présentait une situation de concurrence entre les répertoires de travail : les opérations sur les fichiers peuvent cibler des chemins non prévus. Perl 5.42 ne fera plus un chdir avec chaque handle.

Ce problème a été découvert par Vincent Lefèvre via [GH #23010] et déclaré [CVE-2025-40909] par le groupe de sécurité CPAN.

Des correctifs ont été fournis via [GH #23019] et [GH #23361].

Modifications incompatibles

Suppression des références de fonctions englobantes pour les fonctions sans évaluation

Perl 5.40 a réintroduit les références inconditionnelles des fonctions vers les fonctions englobantes afin de corriger un bug introduit dans Perl 5.18 qui perturbait le comportement spécial de eval EXPR dans le paquet DB utilisé par le débogueur.

Dans certains cas, cette modification entraînait des chaînes de références circulaires entre les fermetures et d’autres références existantes, entraînant des fuites de mémoire.

Cette modification a été annulée, corrigeant le problème [GH #22547], mais le perturbant à nouveau [GH #19370].

Cela signifie que les boucles de référence ne se produiront pas et que les variables lexicales et les fonctions lexicales des fonctions englobantes pourraient ne pas être visibles dans le débogueur.

Notez que l’appel inconditionnel de eval EXPR dans une fonction force celle-ci à référencer ses fonctions englobantes comme elle l’a toujours fait.

Améliorations des performances

  • Les chaînes obtenues par une formule évaluée à la compilation sont désormais partageables via le mécanisme de copie sur écriture. [GH #22163]

Le code suivant aurait auparavant alloué onze tampons de chaînes, contenant chacun un million de « A » :

    my @scalars; push @scalars, ("A" x 1\_000\_000) for 0..9;

Un seul tampon est désormais alloué et partagé entre une opération CONST et les dix éléments scalaires de @scalars.

Notez que tout code utilisant ce type de constante pour simuler des fuites mémoire (par exemple dans des fichiers de test) doit désormais permuter la chaîne afin de déclencher une copie de la chaîne et l’allocation de tampons séparés. Par exemple, ("A" x 1_000_000).time pourrait être une petite modification appropriée.

  • tr/// s’exécute désormais à la même vitesse, quelle que soit la représentation interne de son opérande, tant que les seuls caractères traduits sont de type ASCII, par exemple : tr/A-Z/a-z/. Auparavant, si l’encodage interne était UTF-8, une implémentation plus lente et plus générale était utilisée.
  • Le code qui utilise la fonction indexed du module builtin pour générer une liste de paires index/valeur à partir d’un tableau ou d’une liste, puis la transmettre à une liste foreach à deux variables pour les décompresser, est désormais optimisé pour être plus efficace.
    my @array = (...);


    foreach my ($idx, $val) (builtin::indexed @array) {
    ...
    }



    foreach my ($idx, $val) (builtin::indexed LIST...) {
    ...
    }

En particulier, il n’y a plus génération d’une liste temporaire deux fois plus grande que l’originale. Au lieu de cela, la boucle parcourt le tableau ou la liste d’origine directement sur place, de la même manière que foreach (@array) ou foreach (LIST).

  • L’optimiseur à lucarne reconnaît les motifs substr à décalage nul suivants et les remplace par un nouvel opérateur dédié (OP_SUBSTR_LEFT). [GH #22785]
    substr($x, 0, ...)
    substr($x, 0, ..., '')
  • La transformation en chaîne des entiers par "print" in perlfunc et "say" in perlfunc, lorsqu’ils proviennent d’un SVt_IV, est désormais plus efficace. [GH #22927]
  • L’inversion de chaîne à partir d’un seul argument, lorsque le tampon de chaîne n’est pas « balayé », s’effectue désormais en une seule passe et est sensiblement plus rapide. L’ampleur de l’amélioration dépend du compilateur et du matériel. [GH #23012]

Commentaires : voir le flux Atom ouvrir dans le navigateur

Acteurs du Libre : l'édition 2025 du concours est ouverte !

28 juillet 2025 à 20:30

Professionnels de l’open source ou responsables d’entreprises utilisatrices de solutions ouvertes : candidatez au concours des Acteurs du Libre et tentez votre chance de mettre votre projet sous les projecteurs à Open Source Experience 2025 !

Bannière Acteurs du Libre 2025

Le concours vise à récompenser les actions qui contribuent au développement du Logiciel Libre et de l’Open Source. Il s’adresse aux éditeurs, intégrateurs, entreprises ou administrations intégrant des solutions ouvertes, start-ups proposant de l’open source, associations ou projets centrés sur le Libre. Les prix des Acteurs du Libre permettent de mettre en lumière les réussites entrepreneuriales de la filière libre française et européenne. Le concours est organisé par le CNLL dans le cadre d'Open Source Experience, qui change de lieu cette année et se déroulera à la Cité des Sciences de Paris les 10 et 11 décembre 2025.

Les candidats peuvent soumettre dans l’une des six catégories :

La date limite pour postuler et envoyer le dossier de participation complété est le 10 octobre 2025. La cérémonie de remise de prix aura lieu à l'occasion d’Open Source Experience, les 10 et 11 décembre à Paris.

Quelques règles à noter:

  • Le concours est ouvert, les organisations non membres du CNLL peuvent candidater.
  • La thématique du concours porte sur le logiciel, le matériel n’est pas concerné.
  • Les organisations domiciliées hors France et en Europe sont autorisées à candidater dans la catégorie “Europe/APELL”.
  • La catégorie “Service Public” concerne les administrations centrales et déconcentrées uniquement, les collectivités territoriales ne sont pas concernées et doivent candidater au concours des Territoires Numériques du Libre.
  • Un seul dossier par candidat, dans une seule catégorie.
  • Les gagnants de la session précédente ne sont pas autorisés à candidater à nouveau.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Conférence OW2con'25, 17-18 juin à Paris

La 16ᵉ édition d’OW2con rassemble des développeurs, entreprises, universitaires et organisations à but non lucratif. La conférence met également en lumière trois projets OW2 avec les "OW2con'25 Best Project Awards" distinguant des réussites dans plusieurs domaines : technologies, marché, communauté. L'inscription est gratuite et les conférences sont en anglais.

OW2con′25 Annual conference

Thème 2025 : L'IA open source et responsable

Thème 2025 : L'IA open source et responsable

Pour cette édition, les organisateurs mettent l'accent sur le thème de l'IA open source et responsable, en abordant des sujets tels que les biens communs, la souveraineté des données, la vie privée, l'explicabilité, le cadre juridique, la pile technique, le financement, la durabilité, la recherche, l'éducation, et l'impact sur le travail et la société. D'autres sujets seront abordés également : gouvernance et financement de l’open source, projets technologiques OW2 ou autres, cloud-edge, les données et la cybersécurité.

Parmi les temps forts, 5 keynotes :

  • Artur Queiroz, Responsable d’Unité pour la Commission Européenne, partagera une vision prospective d’une Europe portée par l’IA ;
  • Yann lechelle, Fondateur de la startup Probabl.ai, fera une présentation autour du thème « Maitrisez votre IA » ;
  • Alberto Pace, Responsable au CERN, viendra parler de (r)évolution autour de la science des données ;
  • Matthieu Porte, Coordonnateur IA pour l’IGN, abordera les challenges liés à l’Intelligence Artificielle pour l’Institut National de l’information géographique.

Des « breakout sessions » ponctueront les 3 jours :

  • Le CRA (Cyber Resilience Act) et son impact sur les acteurs open source, le 17 juin de 15h à 18h
  • L'open source dans l'éducation, la science et la recherche, le 18 juin, journée entière
  • Programme Européen NGI : "Success Stories" et NGI Innovators Meetup, le 18 juin, de 9h à 12h30

Enfin, un débat animé par Clément Oudot de Worteks, sur le thème de “souveraineté et open source” en Europe viendra conclure cette édition 2025.

Logistique

Cela se déroulera comme chaque année dans les locaux d’Orange Gardens Innovation Center à Châtillon en banlieue parisienne. L'inscription est gratuite (voir le lien ci-dessous). Pour des raisons logistiques et de places limitées, si vous devez annuler votre présence, merci de nous prévenir pour libérer votre place).

Sponsors

L’édition 2025 est soutenue par 12 sponsors proches d’OW2 : Centreon, Dropsolid, Groupe BPCE, Huawei, Linagora, Linphone, MAIF, NGI, OnlyOffice, OpenUp, Thales et Worteks.

Commentaires : voir le flux Atom ouvrir dans le navigateur

❌