anglaisfrançaisespagnol

Icône de favori OnWorks

perl5200delta - En ligne dans le Cloud

Exécutez perl5200delta dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande perl5200delta qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

Nom


perl5200delta - Quoi de neuf pour perl v5.20.0

DESCRIPTION


Ce document décrit les différences entre la version 5.18.0 et la version 5.20.0.

Si vous effectuez une mise à niveau à partir d'une version antérieure telle que 5.16.0, lisez d'abord perl5180delta,
qui décrit les différences entre 5.16.0 et 5.18.0.

Core Améliorations


Expérimental Sous-programme signatures
Syntaxe déclarative pour dérouler la liste d'arguments en variables lexicales. "sous foo ($a,$b)
{...}" vérifie le nombre d'arguments et place les arguments dans des variables lexicales.
Les signatures ne sont pas équivalentes à l'idiome existant de "sub foo { my($a,$b) = @_; ... }".
Les signatures ne sont disponibles qu'en activant une fonctionnalité autre que celle par défaut et génèrent des avertissements
d'être expérimental. Le conflit syntaxique avec les prototypes est géré en désactivant le
syntaxe de prototype courte lorsque les signatures sont activées.

Voir "Signatures" dans perlsub pour plus de détails.

"sous" maintenant prendre a "prototype" attribuer
Lors de la déclaration ou de la définition d'un "sous", le prototype peut désormais être spécifié à l'intérieur d'un
attribut "prototype" au lieu d'être entre parenthèses après le nom.

Par exemple, "sub foo($$){}" pourrait être réécrit comme "sub foo : prototype($$){}".

Plus cohérent prototype analyse
Les points-virgules multiples dans les prototypes de sous-programmes ont longtemps été tolérés et traités comme un
point-virgule unique. Il y a eu un cas où cela ne s'est pas produit. Un sous-programme dont
prototype commence par "*" ou ";*" peut affecter si un mot nu est considéré comme une méthode
nom ou sous-appel. Ceci s'applique maintenant également à ";;;*".

Les espaces blancs ont longtemps été autorisés dans les prototypes de sous-programmes, donc "sub( $ $ )" est
équivalent à "sub($$)", mais jusqu'à présent, il était supprimé lors de l'analyse du sous-programme.
Par conséquent, l'espace était ne sauraient autorisé dans les prototypes définis par "Scalar::Util::set_prototype". Maintenant
c'est autorisé, et l'analyseur ne supprime plus les espaces. Cela signifie « prototype
&mysub" renvoie le prototype d'origine, les espaces et tout.

"rand" maintenant Usages a cohérent aléatoire nombre générateur
Auparavant, perl utilisait un générateur de nombres aléatoires spécifique à la plate-forme, variant entre le
libc rand (), aléatoire () or drand48().

Cela signifiait que la qualité des nombres aléatoires de perl varierait d'une plate-forme à l'autre,
des 15 bits de rand () sur Windows à 48 bits sur les plates-formes POSIX telles que Linux avec
drand48().

Perl utilise maintenant son propre drand48() mise en œuvre sur toutes les plateformes. Cela ne
rendre le "rand" de perl sécurisé cryptographiquement. [perle #115928]

New tranche syntaxe
La nouvelle syntaxe %hash{...} et %array[...] renvoie une liste de clé/valeur (ou index/valeur)
paires. Voir « Slices de hachage de clé/valeur » dans perldata.

Expérimental Postfix Déréférencement
Lorsque la fonction "postderef" est en vigueur, les équivalences syntaxiques suivantes sont définies
up:

$sref->$* ; # identique à ${ $sref } # interpole
$aref->@* ; # identique à @{ $aref } # interpole
$href->%* ; # identique à %{ $href }
$cref->&*; # identique à &{ $cref }
$gref->** ; # identique à *{ $gref }

$aref->$#* ; # identique à $#{ $aref }

$gref->*{ $slot } ; # identique à *{ $gref }{ $slot }

$aref->@[ ... ]; # identique à @$aref[ ... ] # interpole
$href->@{ ... } ; # identique à @$href{ ... } # interpole
$aref->%[ ... ]; # identique à %$aref[ ... ]
$href->%{ ... } ; # identique à %$href{ ... }

Ceux marqués comme interpolants n'interpolent que si la fonction "postderef_qq" associée est
également activé. Cette fonctionnalité est expérimental et déclenchera
avertissements de catégorie "experimental::postderef" lorsqu'ils sont utilisés, à moins qu'ils ne soient supprimés.

Pour plus d'informations, consultez la section Syntaxe de déréférencement de Postfix de perlref.

Unicode 6.3 maintenant soutenu
Perl prend désormais en charge et est livré avec Unicode 6.3 (bien que Perl puisse être recompilé avec n'importe quel
version précédente d'Unicode également). Une liste détaillée des modifications d'Unicode 6.3 est disponible sur
<http://www.unicode.org/versions/Unicode6.3.0/>.

New "\p{Unicode}" Standard expression modèle propriété
Ceci est un synonyme de "\p{Any}" et correspond à l'ensemble des points de code définis par Unicode 0 -
0x10FFFF.

Rapidité 64-bits Support
Sur les plates-formes 64 bits, les fonctions de tableau internes utilisent désormais des décalages 64 bits, permettant à Perl
tableaux pour contenir plus de 2**31 éléments, si vous avez la mémoire disponible.

Le moteur d'expressions régulières prend désormais en charge les chaînes de plus de 2**31 caractères. [perle
#112790, #116907]

Les fonctions PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt et PerlIO_set_ptrcnt maintenant
ont SSize_t, plutôt que int, renvoie des valeurs et des paramètres.

"utilisation lieu" maintenant vos contrats on UTF-8 local
Jusqu'à cette version, seuls les paramètres régionaux à un octet, tels que la série ISO 8859, étaient pris en charge.
Désormais, les paramètres régionaux UTF-8 multi-octets de plus en plus courants sont également pris en charge. Une locale UTF-8
est celui dans lequel le jeu de caractères est Unicode et l'encodage est UTF-8. Le POSIX
Opérations de catégorie "LC_CTYPE" (changement de casse (comme "lc()", "\U") et caractère
classification ("\w", "\D", "qr/[[:punct:]]/")) sous une telle locale fonctionne comme si ce n'était pas le cas
sous les paramètres régionaux, mais à la place comme sous "utiliser la fonctionnalité 'unicode_strings'", à l'exception des règles de souillure
sont suivis. Le tri reste par ordre de point de code dans cette version. [perl #56820].

"utilisation lieu" maintenant compile on les systèmes sans local capacité
Auparavant, cela empêchait le programme de compiler. Dans son champ d'application, le programme
se comporte comme dans la locale "C". Ainsi, les programmes écrits pour les plates-formes qui prennent en charge les locales
peut fonctionner sur des plates-formes sans paramètres régionaux sans changement. Tente de changer la locale loin de
la locale "C" échouera, bien sûr.

Plus local initialisation se retirer Options
S'il y avait une erreur avec les locales lors du démarrage de Perl, il abandonnait immédiatement et essayait
pour utiliser la locale "C". Maintenant, il essaie d'abord d'utiliser d'autres paramètres régionaux donnés par l'environnement
variables, comme détaillé dans "ENVIRONNEMENT" dans perllocale. Par exemple, si "LC_ALL" et
"LANG" sont tous deux définis, et l'utilisation de la locale "LC_ALL" échoue, Perl va maintenant essayer la "LANG"
locale, et seulement si cela échoue, il reviendra à "C". Sur les machines Windows, Perl
essayez, avant d'utiliser "C", la locale par défaut du système si toutes les locales données par l'environnement
les variables échouent.

"-DL" d'exécution option maintenant ajoutée XNUMX traçant local mise
Ceci est conçu pour les développeurs principaux de Perl pour aider au débogage sur le terrain concernant les bogues concernant
local

-F maintenant implique -a et -a implique -n
Précédemment -F sans -a était un no-op, et -a sans -n or -p était un non-op, avec ça
changer, si vous fournissez -F puis les deux -a et -n sont implicites et si vous fournissez -a puis -n is
implicite.

Vous pouvez toujours utiliser -p pour son comportement supplémentaire. [perl #116190]

$a et $b avertissements exemption
Les variables spéciales $a et $b, utilisées dans "sort", sont désormais exemptes d'avertissements "utilisé une fois",
même lorsque "sort" n'est pas utilisé. Cela permet aux modules CPAN de fournir plus facilement des fonctions
en utilisant $a et $b à des fins similaires. [perl #120462]

Sécurité


Éviter de possible lire of libre()d Mémoire pendant analyse
Il était possible que libre()d la mémoire pourrait être lue pendant l'analyse dans le cas inhabituel
circonstance du programme Perl se terminant par un heredoc et la dernière ligne du fichier sur
disque n'ayant pas de caractère de fin de ligne. Cela a maintenant été corrigé.

Incompatible Modifications


"faire" vous aucune plus long be d'utiliser à Appelez-nous sous-programmes
Le formulaire "do SUBROUTINE(LIST)" a entraîné un avertissement de dépréciation depuis Perl v5.0.0,
et est maintenant une erreur de syntaxe.

Citation-comme échapper change
Le caractère après "\c" dans une chaîne entre guillemets ("..." ou qq(...)) ou normal
expression doit maintenant être un caractère imprimable et ne peut pas être "{".

Un littéral "{" après "\B" ou "\b" est désormais fatal.

Ceux-ci étaient dépréciés dans perl v5.14.0.

Entacher arrive sous plus conditions; maintenant conforme à Documentation
Cela affecte la correspondance des expressions régulières et la modification de la casse d'une chaîne ("lc", "\U",
etc.) dans le cadre de "use locale". Le résultat est maintenant entaché d'après l'opération,
quel que soit le contenu de la chaîne, car la documentation (perlsec, "SECURITY"
dans perllocale) l'indique. Auparavant, pour l'opération de changement de boîtier, si le
la chaîne ne contenait aucun caractère dont le changement de casse pourrait être affecté par les paramètres régionaux, le
le résultat ne serait pas entaché. Par exemple, le résultat de "uc()" sur une chaîne vide ou une
contenant uniquement des points de code au-dessus de Latin1 est maintenant entaché, et ne l'était pas auparavant. Cela mène à
des résultats d'altération plus cohérents. Les modèles d'expression régulière entachent leur non-binaire
résultats (comme $&, $2) si et seulement si le motif contient des éléments dont la correspondance dépend
sur les paramètres régionaux actuels (potentiellement entachés). Comme les fonctions de changement de boîtier, le
le contenu de la chaîne en cours de correspondance n'a plus d'importance, alors qu'auparavant, c'était le cas. Pour
exemple, si le motif contient un "\w", les résultats seront entachés même si la correspondance n'a pas
pas besoin d'utiliser cette partie du modèle pour réussir ou échouer, car quel "\w"
les correspondances dépendent des paramètres régionaux. Cependant, par exemple, un "." dans un modèle ne permettra pas
entachée, car le point correspond à n'importe quel caractère et quelle est la locale actuelle
ne change en rien ce qui correspond et ce qui ne change pas.

"\p{}", "\P{}" assorti a modifié XNUMX non-unicode code des points.
"\p{}" et "\P{}" sont définis par Unicode uniquement sur les points de code définis par Unicode ("U+0000"
par "U+10FFFF"). Leur comportement lors de la mise en correspondance de ces points de code Unicode légaux est
inchangé, mais il y a des changements pour les points de code 0x110000 et au-dessus. Auparavant, Perl
traité le résultat de la correspondance "\p{}" et "\P{}" contre ceux-ci comme "undef", ce qui
se traduit par "faux". Pour "\P{}", cela a ensuite été complété par "true". Un avertissement
était censé être soulevé lorsque cela s'est produit. Cependant, diverses optimisations pourraient
prévenir l'avertissement, et les résultats étaient souvent contre-intuitifs, avec à la fois un match et
son complément apparent étant faux. Désormais, tous les points de code non Unicode sont traités comme
points de code Unicode non affectés typiques. C'est généralement plus Do-What-I-Mean. Un avertissement
n'est déclenché que si les résultats sont sans doute différents d'une approche Unicode stricte, et
de ce que Perl avait l'habitude de faire. Le code qui doit être strictement conforme à Unicode peut rendre cela
warning fatal, puis Perl lève toujours l'avertissement.

Les détails sont dans "Au-delà des points de code Unicode" dans perlunicode.

"\voile}" a était étendu à rencontre tous possible code des notes bonus
L'élément de modèle d'expression régulière défini par Perl "\p{All}", inutilisé sur CPAN, utilisé pour
correspondre uniquement aux points de code Unicode ; maintenant, il correspond à tous les points de code possibles ; c'est ça
est équivalent à "qr/./s". Ainsi "\p{All}" n'est plus synonyme de "\p{Any}", qui
continue de correspondre uniquement aux points de code Unicode, comme l'indique Unicode.

Données::Dumper's sortie Au cours de cette réunion, Matthew a obtenu de précieux conseils et Linda lui a demandé de la tenir au courant de ses progrès. Change
En fonction des structures de données vidées et des paramètres définis pour Data::Dumper, le vidage
la sortie peut avoir changé par rapport aux versions précédentes.

Si vous avez des tests qui dépendent de la sortie exacte de Data::Dumper, ils peuvent échouer.

Pour éviter ce problème dans votre code, testez la structure de données en évaluant le
structure déversée, au lieu de la décharge elle-même.

Locale décimal point caractère aucune plus long fuites au contrôle of "utilisation lieu" portée
Il s'agit en fait d'une correction de bogue, mais certains codes en sont venus à s'appuyer sur la présence du bogue, donc
ce changement est répertorié ici. La locale actuelle sous laquelle le programme s'exécute n'est pas
censé être visible par le code Perl sauf dans le cadre d'un "use locale". Cependant,
jusqu'à présent dans certaines circonstances, le caractère utilisé pour un point décimal (souvent un
virgule) a fui en dehors de la portée. Si votre code est affecté par ce changement, ajoutez simplement un
"utiliser les paramètres régionaux".

Missions of Windows sockets erreur codes à $! maintenant préfère erreur.h valeurs plus de
WSAGetLastError() valeurs
Dans les versions précédentes de Perl, les codes d'erreur des sockets Windows renvoyés par WSAGetLastError()
ont été affectés à $!, et certaines constantes telles que ECONNABORTED, pas dans erreur.h en VC++ (ou
les différents ports Windows de gcc) ont été définis avec les valeurs WSAE* correspondantes pour autoriser $!
à tester par rapport aux constantes E* exportées par Errno et POSIX.

Cela a bien fonctionné jusqu'à VC++ 2010 et plus tard, qui a introduit de nouvelles constantes E* avec des valeurs
> 100 dans erreur.h, dont certains sont (re)définis par perl aux valeurs WSAE*. Cela a causé
problèmes lors de la liaison du code XS avec d'autres bibliothèques qui ont utilisé les définitions d'origine
of erreur.h constantes.

Pour éviter cette incompatibilité, perl mappe désormais les codes d'erreur WSAE* aux valeurs E* où
possible et attribue ces valeurs à $!. Les constantes E* exportées par Errno et POSIX
sont mis à jour pour correspondre afin que le test $! contre eux, dans la mesure du possible auparavant,
continuer à fonctionner comme prévu, et toutes les constantes E* trouvées dans erreur.h sont maintenant exportés de
ces modules avec leur erreur.h valeurs.

Afin d'éviter la rupture du code Perl existant qui attribue des valeurs WSAE* à $!, perl
intercepte maintenant l'affectation et effectue le même mappage aux valeurs E* qu'il utilise
en interne lors de l'affectation à $! lui-même.

Cependant, une incompatibilité descendante demeure : le code Perl existant qui compare $!
par rapport aux valeurs numériques des codes d'erreur WSAE* précédemment attribués à $!
sera désormais rompu dans les cas où une valeur E* correspondante a été attribuée
au lieu. Ceci n'est un problème que pour les valeurs E* < 100, qui ont toujours été exportées à partir de
Errno et POSIX avec leur original erreur.h valeurs, et n'a donc pas pu être utilisé pour
Tests de code d'erreur WSAE* (par exemple, WSAEINVAL est 10022, mais l'EINVAL correspondant est 22). (E*
les valeurs > 100, si présentes, ont été redéfinies en valeurs WSAE* de toute façon, donc la compatibilité peut être
obtenu en utilisant les constantes E*, qui fonctionneront à la fois avant et après ce changement,
bien qu'en utilisant différentes valeurs numériques sous le capot.)

Les fonctions "PerlIO_vsprintf" et "PerlIO_sprintf" avons était enlevé
Ces deux fonctions, non documentées, non utilisées dans le CPAN, et problématiques, ont été supprimées.

Dépréciations


Le "/\C/" caractère classe
La classe de caractères d'expression régulière "/\C/" est déconseillée. A partir de perl 5.22, il
générera un avertissement, et à partir de perl 5.24 ce sera une expression régulière
erreur du compilateur. Si vous devez examiner les octets individuels qui composent un code UTF8
caractère, puis utilisez d'abord "utf8::encode()" sur la chaîne (ou une copie).

Littéral des bactéries caractères in variable noms
Cette dépréciation affecte des choses comme $\cT, où \cT est un contrôle littéral (comme un "NAK"
ou caractère « RECONNAISSANCE NÉGATIVE ») dans le code source. Étonnamment, il semble que
à l'origine, il s'agissait du moyen canonique d'accéder à des variables telles que $^T, avec
la forme caret n'étant ajoutée qu'à titre d'alternative.

Le formulaire de contrôle littéral est déprécié pour deux raisons principales. Il a ce qui est probable
bogues non réparables, tels que $\cI ne fonctionnant pas comme un alias pour $^I, et leur utilisation n'étant pas
portable vers les plates-formes non ASCII : alors que $^T fonctionnera partout, \cT est un espace dans
EBCDIC. [perl #119123]

Références à non-entiers et non positif entiers in $/
La définition de $/ sur une référence à zéro ou une référence à un entier négatif est désormais obsolète,
et se comportera exactement comme s'il était défini sur "undef". Si vous voulez définir un comportement slurp
$/ à "undef" explicitement.

Définir $/ sur une référence à un non-entier est désormais interdit et générera une erreur. Perl
n'a jamais documenté ce qui se passerait dans ce contexte et alors qu'il se comportait
identique à la définition de $/ à l'adresse des références à l'avenir, il peut se comporter différemment,
nous avons donc interdit cet usage.

Personnage assorti routines in POSIX
L'utilisation de l'une de ces fonctions dans le module "POSIX" est désormais obsolète : "isalnum",
"isalpha", "iscntrl", "isdigit", "isgraph", "islower", "isprint", "ispunct", "isspace",
"isupper" et "isxdigit". Les fonctions sont boguées et ne fonctionnent pas sur l'encodage UTF-8
cordes. Voir leurs entrées dans POSIX pour plus d'informations.

Un avertissement est émis lors du premier appel à l'un d'entre eux depuis chaque endroit du code qu'ils
sont appelés. (Par conséquent, une instruction répétée dans une boucle ne déclenchera qu'un seul avertissement.)

Interprète discussions maintenant découragé
Les "fils basés sur des interprètes" fournis par Perl ne sont pas le système rapide et léger pour
multitâche auquel on peut s'attendre ou espérer. Les threads sont implémentés de manière à
les rendre faciles à utiliser à mauvais escient. Peu de gens savent comment les utiliser correctement ou seront capables de
fournir de l'aide.

L'utilisation de threads basés sur un interpréteur en perl est officiellement déconseillée.

Module déménagements
Les modules suivants seront supprimés de la distribution principale dans une future version, et
devra alors être installé à partir du CPAN. Distributions sur CPAN qui nécessitent
ces modules devront les répertorier comme prérequis.

Les versions principales de ces modules émettront désormais des avertissements de catégorie « obsolète » pour alerter
vous à ce fait. Pour faire taire ces avertissements de dépréciation, installez les modules en question
du CPAN.

Notez que la suppression prévue de ces modules du noyau ne reflète pas un jugement
sur la qualité du code et ne doit pas être considéré comme une suggestion que leur utilisation soit
arrêté. Leur désinclusion du noyau dépend principalement de leur nécessité d'amorcer
une installation Perl entièrement fonctionnelle et compatible CPAN, sans souci de conception.

CGI et ses CGI associés :: packages
inc::dernier
Paquet :: Constantes
Module :: Build et son Module :: Build :: packages associé

Utilité déménagements
Les utilitaires suivants seront supprimés de la distribution principale dans une future version,
et devra à ce moment-là être installé à partir du CPAN.

trouver2perl
p2p
a2p

Performance Améliorations


· Perl dispose d'un nouveau mécanisme de copie sur écriture qui évite d'avoir à copier le
tampon de chaîne lors de l'affectation d'un scalaire à un autre. Cela rend la copie volumineuse
les chaînes apparaissent beaucoup plus rapidement. Modifier l'une des deux (ou plusieurs) chaînes après une
l'affectation forcera une copie en interne. Cela rend inutile de passer des chaînes par
référence en matière d'efficacité.

Cette fonctionnalité était déjà disponible dans 5.18.0, mais n'était pas activée par défaut. C'est le
par défaut maintenant, et vous n'avez donc plus besoin de compiler perl avec le Configurer argument:

-Accflags=-DPERL_NEW_COPY_ON_WRITE

Il peut être désactivé (pour l'instant) dans une version perl avec :

-Accfflags=-DPERL_NO_COW

Sur certains systèmes d'exploitation, Perl peut être compilé de telle sorte que toute tentative de
modifier les tampons de chaîne partagés par plusieurs SV se bloquera. De cette façon, les auteurs XS peuvent tester
que leurs modules gèrent correctement les scalaires de copie sur écriture. Voir "Copier sur écriture" dans
perlguts pour les détails.

· Perl a un optimiseur pour les modèles d'expressions régulières. Il analyse le modèle pour
trouver des choses telles que la longueur minimale qu'une chaîne doit avoir pour correspondre, etc.
mieux gère les points de code qui sont au-dessus de la plage Latin1.

· Exécuter une expression régulière contenant l'ancre "^" (ou sa variante sous le drapeau "/m")
a été rendu beaucoup plus rapide dans plusieurs situations.

· Les valeurs de hachage précalculées sont désormais utilisées à plus d'endroits lors de la recherche de méthode.

· Les recherches de clé de hachage constantes ($hash{key} par opposition à $hash{$key}) ont longtemps eu le
valeur de hachage interne calculée au moment de la compilation, pour accélérer la recherche. Cette optimisation
n'a été appliqué que maintenant aux tranches de hachage.

· Opérateurs « et » et « ou » combinés dans un contexte vide, comme ceux générés pour « à moins que
($a && $b)" et "if ($a || b)" court-circuitent maintenant directement à la fin de l'instruction.
[perle #120128]

· Dans certaines situations, lorsque « return » est la dernière instruction dans le menu principal d'un sous-programme
portée, il sera optimisé. Cela signifie un code comme :

sous baz { return $cat; }

va maintenant se comporter comme :

sous baz { $cat; }

ce qui est notablement plus rapide.

[perle #120765]

· Codez comme :

mon x $ ; # ou @x, %x
mon $y ;

est maintenant optimisé pour :

mon ($x, $y);

En combinaison avec l'optimisation de padrange introduite dans la v5.18.0, cela signifie plus
non initialisé mes instructions de variable sont également optimisées, donc :

mon x $ ; mon @y; mon %z ;

devient:

mon ($x, @y, %z);

[perle #121077]

· La création de certains types de listes, y compris les tableaux et les tranches de hachage, est désormais
plus rapide.

· L'optimisation des tableaux indexés avec un petit entier constant est maintenant appliquée pour
entiers dans la plage -128..127, plutôt que 0..255. Cela devrait accélérer le code Perl
en utilisant des expressions comme $x[-1], au détriment du code (probablement beaucoup plus rare) en utilisant
expressions comme $x[200].

· La première itération sur un grand hachage (en utilisant "keys" ou "each") est maintenant plus rapide. C'est
obtenu en préallouant l'état de l'itérateur interne du hachage, plutôt que paresseusement
en le créant lors de la première itération du hachage. (Pour les petits hachages, l'itérateur est toujours
créé uniquement lorsque cela est nécessaire pour la première fois. L'hypothèse est que les petits hachages sont plus susceptibles de
être utilisés comme objets, et donc jamais alloués. Pour les gros hashs, c'est moins
probablement vrai, et le coût d'allocation de l'itérateur est submergé par le coût de
allouant de l'espace pour le hachage lui-même.)

· Lors d'une correspondance d'expression régulière globale sur une chaîne provenant de la « readline » ou « <> »
opérateur, les données ne sont plus copiées inutilement. [perle #121259]

· Le déréférencement (comme dans "$obj->[0]" ou "$obj->{k}") est désormais plus rapide lorsque $obj est un
instance d'une classe qui a des méthodes surchargées, mais ne surcharge aucun des
méthodes de déréférencement "@{}", "%{}", etc.

· L'optimiseur de Perl ne saute plus l'optimisation du code qui suit certains "eval {}"
expressions (y compris celles avec une boucle infinie apparente).

· L'implémentation fait désormais un meilleur travail pour éviter les travaux inutiles au moment de l'exécution.
Opérations "null" internes sans effet (créées comme effet secondaire de l'analyse de Perl
programmes) sont normalement supprimés lors de la compilation. Cette suppression est désormais appliquée dans
certaines situations qui n'étaient pas traitées auparavant.

· Perl effectue désormais moins d'E/S disque lorsqu'il traite des propriétés Unicode qui couvrent jusqu'à
trois plages de points de code consécutifs.

formation vidéo et Pragmatique


New formation vidéo et Pragmatique
· 0.007 expérimental a été ajouté au noyau Perl.

· IO::Socket::IP 0.29 a été ajouté au noyau Perl.

Le kit de préparation mis à jour formation vidéo et Pragmatique
· Archive : : Le goudron a été amélioré de la version 1.90 à 1.96.

· arybase a été amélioré de la version 0.06 à 0.07.

· Attribut::Handlers a été amélioré de la version 0.94 à 0.96.

· les attributs ont été mis à niveau de la version 0.21 à 0.22.

· autodie a été amélioré de la version 2.13 à 2.23.

· AutoLoader a été mis à niveau de la version 5.73 à 5.74.

· autouse a été mis à niveau de la version 1.07 à 1.08.

· B a été mis à niveau de la version 1.42 à 1.48.

· B : : Concise a été amélioré de la version 0.95 à 0.992.

· B::Debug a été amélioré de la version 1.18 à 1.19.

· B::Deparse a été amélioré de la version 1.20 à 1.26.

· la base a été mise à niveau de la version 2.18 à 2.22.

· Benchmark a été mis à niveau de la version 1.15 à 1.18.

· bignum a été mis à jour de la version 0.33 à 0.37.

· Carp a été mis à niveau de la version 1.29 à 1.3301.

· CGI a été mis à niveau de la version 3.63 à 3.65. REMARQUE : CGI est obsolète et peut être
supprimé d'une future version de Perl.

· charnames a été amélioré de la version 1.36 à 1.40.

· Classe : : Struct a été amélioré de la version 0.64 à 0.65.

· Compress::Raw::Bzip2 a été amélioré de la version 2.060 à 2.064.

· Compress::Raw::Zlib a été amélioré de la version 2.060 à 2.065.

· Config::Perl::V a été amélioré de la version 0.17 à 0.20.

· constant a été mis à niveau de la version 1.27 à 1.31.

· CPAN a été mis à niveau de la version 2.00 à 2.05.

· CPAN : : Meta a été amélioré de la version 2.120921 à 2.140640.

· CPAN::Meta::Requirements a été amélioré de la version 2.122 à 2.125.

· CPAN::Meta::YAML a été amélioré de la version 0.008 à 0.012.

· Données : : Dumper a été amélioré de la version 2.145 à 2.151.

· DB a été mis à niveau de la version 1.04 à 1.07.

· DB_File a été mis à niveau de la version 1.827 à 1.831.

· DBM_Filter a été mis à niveau de la version 0.05 à 0.06.

· Deprecate a été mis à niveau de la version 0.02 à 0.03.

· Devel::Peek a été amélioré de la version 1.11 à 1.16.

· Devel::PPPort a été amélioré de la version 3.20 à 3.21.

· le diagnostic a été mis à jour de la version 1.31 à 1.34.

· Digest::MD5 a été amélioré de la version 2.52 à 2.53.

· Condensé : : SHA a été mis à niveau de la version 5.84 à 5.88.

· DynaLoader a été mis à niveau de la version 1.18 à 1.25.

· Encode a été mis à niveau de la version 2.49 à 2.60.

· l'encodage a été mis à niveau de la version 2.6_01 à 2.12.

· L'anglais a été mis à niveau de la version 1.06 à 1.09.

$OLD_PERL_VERSION a été ajouté en tant qu'alias de $].

· Errno a été mis à niveau de la version 1.18 à 1.20_03.

· L'exportateur a été mis à niveau de la version 5.68 à 5.70.

· ExtUtils::CBuilder a été mis à niveau de la version 0.280210 à 0.280216.

· ExtUtils::Command a été mis à niveau de la version 1.17 à 1.18.

· ExtUtils::Embed a été mis à niveau de la version 1.30 à 1.32.

· ExtUtils::Install a été mis à niveau de la version 1.59 à 1.67.

· ExtUtils::MakeMaker a été amélioré de la version 6.66 à 6.98.

· ExtUtils : : Miniperl a été amélioré de la version à 1.01.

· ExtUtils::ParseXS a été mis à niveau de la version 3.18 à 3.24.

· ExtUtils::Typemaps a été mis à niveau de la version 3.19 à 3.24.

· ExtUtils::XSSymSet a été mis à niveau de la version 1.2 à 1.3.

· la fonctionnalité a été mise à niveau de la version 1.32 à 1.36.

· champs a été mis à niveau de la version 2.16 à 2.17.

· File::Basename a été amélioré de la version 2.84 à 2.85.

· Fichier : : La copie a été mise à niveau de la version 2.26 à 2.29.

· Fichier::DosGlob a été mis à niveau de la version 1.10 à 1.12.

· File::Fetch a été amélioré de la version 0.38 à 0.48.

· Fichier::Find a été amélioré de la version 1.23 à 1.27.

· File::Glob a été mis à niveau de la version 1.20 à 1.23.

· Fichier::Spec a été amélioré de la version 3.40 à 3.47.

· File::Temp a été amélioré de la version 0.23 à 0.2304.

· FileCache a été mis à niveau de la version 1.08 à 1.09.

· Filtre : : Simple a été amélioré de la version 0.89 à 0.91.

· Filter::Util::Call a été mis à niveau de la version 1.45 à 1.49.

· Getopt::Long a été amélioré de la version 2.39 à 2.42.

· Getopt::Std a été amélioré de la version 1.07 à 1.10.

· Hash::Util::FieldHash a été amélioré de la version 1.10 à 1.15.

· HTTP : : Tiny a été amélioré de la version 0.025 à 0.043.

· I18N::Langinfo a été amélioré de la version 0.10 à 0.11.

· I18N::LangTags a été amélioré de la version 0.39 à 0.40.

· si a été mis à niveau de la version 0.0602 à 0.0603.

· inc::latest a été mis à niveau de la version 0.4003 à 0.4205. REMARQUE : inc :: le dernier est
obsolète et peut être supprimé d'une future version de Perl.

· l'entier a été mis à niveau de la version 1.00 à 1.01.

· IO a été mis à niveau de la version 1.28 à 1.31.

· IO::Compress::Gzip et ses amis ont été améliorés de la version 2.060 à 2.064.

· IPC::Cmd a été amélioré de la version 0.80 à 0.92.

· IPC : : Open3 a été amélioré de la version 1.13 à 1.16.

· IPC : : SysV a été amélioré de la version 2.03 à 2.04.

· JSON::PP a été mis à niveau de la version 2.27202 à 2.27203.

· Liste : :Util a été amélioré de la version 1.27 à 1.38.

· les paramètres régionaux ont été mis à niveau de la version 1.02 à 1.03.

· Locale::Codes a été mis à niveau de la version 3.25 à 3.30.

· Paramètres régionaux : : Maketext a été mis à niveau de la version 1.23 à 1.25.

· Math::BigInt a été mis à niveau de la version 1.9991 à 1.9993.

· Math::BigInt::FastCalc a été amélioré de la version 0.30 à 0.31.

· Math::BigRat a été amélioré de la version 0.2604 à 0.2606.

· MIME : : Base64 a été amélioré de la version 3.13 à 3.14.

· Module : : La construction a été améliorée de la version 0.4003 à 0.4205. REMARQUE : Module : : Build est
obsolète et peut être supprimé d'une future version de Perl.

· Module : : CoreList a été mis à niveau de la version 2.89 à 3.10.

· Module : : La charge a été améliorée de la version 0.24 à 0.32.

· Module::Load::Conditional a été amélioré de la version 0.54 à 0.62.

· Module : : les métadonnées ont été mises à niveau de la version 1.000011 à 1.000019.

· mro a été mis à niveau de la version 1.11 à 1.16.

· Net::Ping a été amélioré de la version 2.41 à 2.43.

· Opcode a été mis à niveau de la version 1.25 à 1.27.

· Paquet : : Les constantes ont été mises à niveau de la version 0.02 à 0.04. REMARQUE:
Package::Constants est obsolète et peut être supprimé d'une future version de Perl.

· Params::Check a été amélioré de la version 0.36 à 0.38.

· parent a été mis à niveau de la version 0.225 à 0.228.

· Parse::CPAN::Meta a été amélioré de la version 1.4404 à 1.4414.

· Perl::OSType a été amélioré de la version 1.003 à 1.007.

· perlfaq a été mis à niveau de la version 5.0150042 à 5.0150044.

· PerlIO a été mis à niveau de la version 1.07 à 1.09.

· PerlIO::encoding a été amélioré de la version 0.16 à 0.18.

· PerlIO::scalar a été mis à niveau de la version 0.16 à 0.18.

· PerlIO::via a été amélioré de la version 0.12 à 0.14.

· Pod::Escapes a été amélioré de la version 1.04 à 1.06.

· Pod::Functions a été amélioré de la version 1.06 à 1.08.

· Pod::Html a été mis à niveau de la version 1.18 à 1.21.

· Pod : : L'analyseur a été amélioré de la version 1.60 à 1.62.

· Pod::Perldoc a été amélioré de la version 3.19 à 3.23.

· Pod : : L'utilisation a été améliorée de la version 1.61 à 1.63.

· POSIX a été mis à niveau de la version 1.32 à 1.38_03.

· re a été mis à niveau de la version 0.23 à 0.26.

· Safe a été mis à niveau de la version 2.35 à 2.37.

· Scalaire : : Util a été mis à niveau de la version 1.27 à 1.38.

· SDBM_File a été mis à niveau de la version 1.09 à 1.11.

· Socket a été mis à niveau de la version 2.009 à 2.013.

· Stockable a été mis à niveau de la version 2.41 à 2.49.

· strict a été mis à jour de la version 1.07 à 1.08.

· les sous-marins ont été mis à niveau de la version 1.01 à 1.02.

· Sys::Hostname a été amélioré de la version 1.17 à 1.18.

· Sys : : Syslog a été amélioré de la version 0.32 à 0.33.

· Terme : : Le chapeau a été amélioré de la version 1.13 à 1.15.

· Terme : : ReadLine a été amélioré de la version 1.12 à 1.14.

· Test::Le harnais a été amélioré de la version 3.26 à 3.30.

· Test : : Simple a été amélioré de la version 0.98 à 1.001002.

· Texte : :ParseWords a été amélioré de la version 3.28 à 3.29.

· Text::Tabs a été mis à niveau de la version 2012.0818 à 2013.0523.

· Texte : : Wrap a été mis à niveau de la version 2012.0818 à 2013.0523.

· Thread a été mis à niveau de la version 3.02 à 3.04.

· Thread::La file d'attente a été améliorée de la version 3.02 à 3.05.

· threads a été mis à niveau de la version 1.86 à 1.93.

· threads::shared a été amélioré de la version 1.43 à 1.46.

· Lien : : Le tableau a été amélioré de la version 1.05 à 1.06.

· Lien : : Le fichier a été amélioré de la version 0.99 à 1.00.

· Cravate : : Le hachage a été amélioré de la version 1.04 à 1.05.

· Cravate : : Scalar a été amélioré de la version 1.02 à 1.03.

· Lien : : StdHandle a été amélioré de la version 4.3 à 4.4.

· Temps : : HiRes a été amélioré de la version 1.9725 à 1.9726.

· Temps : : La pièce a été améliorée de la version 1.20_01 à 1.27.

· Unicode::Collate a été amélioré de la version 0.97 à 1.04.

· Unicode::Normalize a été amélioré de la version 1.16 à 1.17.

· Unicode::UCD a été amélioré de la version 0.51 à 0.57.

· utf8 a été mis à niveau de la version 1.10 à 1.13.

· la version a été mise à niveau de la version 0.9902 à 0.9908.

· vmsish a été mis à niveau de la version 1.03 à 1.04.

· les avertissements ont été mis à jour de la version 1.18 à 1.23.

· Win32 a été mis à niveau de la version 0.47 à 0.49.

· XS : : Typemap a été amélioré de la version 0.10 à 0.13.

· XSLoader a été mis à niveau de la version 0.16 à 0.17.

Documentation


New Documentation
référentiel perl

Ce document a été supprimé (en fait, renommé perlgit et a fait l'objet d'une refonte majeure) en Perl
v5.14, obligeant les sites Web de documentation Perl à afficher la version désormais obsolète dans Perl
v5.12 comme dernière version. Il a maintenant été restauré sous forme de bout, dirigeant les lecteurs vers
informations actuelles.

Modifications à Existant Documentation
données perl

· De nouvelles sections ont été ajoutées pour documenter la nouvelle tranche de tableau index/valeur et la clé/valeur
syntaxe de tranche de hachage.

perldebguts

· Les sous-routines du débogueur "DB::goto" et "DB::lsub" sont maintenant documentées. [perle #77680]

expérimenter

· "\s" correspondant à "\cK" est marqué expérimental.

· les fils de discussion ont été acceptés dans la v5.8.0 (mais sont découragés à partir de la v5.20.0).

· Les doubles longs ne sont pas considérés comme expérimentaux.

· Code dans les expressions régulières, les verbes de retour en arrière des expressions régulières et lvalue
les sous-programmes ne sont plus répertoriés comme expérimentaux. (Cela affecte également perlre et
perlsub.)

perfunc

· "chop" et "chomp" notent maintenant qu'ils peuvent réinitialiser l'itérateur de hachage.

· La gestion des arguments par "exec" est maintenant plus clairement documentée.

· "eval EXPR" contient désormais des mises en garde concernant l'expansion des nombres à virgule flottante dans certains paramètres régionaux.

· "goto EXPR" est maintenant documenté pour gérer une expression qui s'évalue à un code
référence comme si c'était "goto &$coderef". Ce comportement a au moins dix ans.

· Depuis Perl v5.10, il est possible pour les sous-routines de @INC de renvoyer une référence
à un scalaire contenant le code source initial à ajouter au fichier. C'est maintenant
documenté.

· La documentation de "ref" a été mise à jour pour recommander l'utilisation de "blessed", "isa"
et "reftype" lorsqu'il s'agit de références à des objets bénis.

perlguts

· De nombreux changements mineurs ont été apportés pour refléter les changements apportés aux composants internes de Perl dans
cette version.

· De nouvelles sections sur les valeurs en lecture seule et la copie en écriture ont été ajoutées.

perlhack

· La section Super Quick Patch Guide a été mise à jour.

astuces perlhack

· La documentation a été mise à jour pour inclure d'autres exemples d'utilisation de "gdb".

perllex avertir

· La documentation perllexwarn utilisée pour décrire la hiérarchie des catégories d'avertissement
compris par le pragma des avertissements. Cette description a maintenant été déplacée vers les avertissements
documentation elle-même, en laissant perllexwarn comme stub qui pointe vers elle. Ce changement
regroupe toute la documentation des avertissements lexicaux en un seul endroit.

perllocale

· La documentation mentionne maintenant fc() et "\F", et comprend de nombreuses clarifications et
correctifs en général.

perlop

· La conception du langage de Perl a toujours fait appel à des opérateurs monomorphes. C'est maintenant
mentionné explicitement.

perlopentut

· Le tutoriel "ouvert" a été complètement réécrit par Tom Christiansen, et se concentre maintenant
en ne couvrant que les bases, plutôt que de fournir une référence complète à tous
choses ouvrantes. Cette réécriture est le résultat d'une discussion vigoureuse sur
perl5-porters a démarré par un ensemble d'améliorations écrites par Alexander Hartmaier pour
le perlopentut existant. Un document "plus que vous n'avez jamais voulu savoir sur "ouvert""
peut suivre dans les versions ultérieures de perl.

perler

· Le fait que le moteur d'expressions rationnelles ne fait aucun effort pour appeler (?{}) et (??{}) les constructions
n'importe quel nombre de fois spécifié (bien qu'il s'agisse essentiellement d'un DWIM en cas de succès
match) a été documenté.

· Le modificateur "/r" (pour la substitution non destructive) est maintenant documenté. [perle #119151]

· La documentation pour "/x" et "(?# comment)" a été étendue et clarifiée.

perlreguts

· La documentation a été mise à jour à la lumière des récents changements apportés à regcomp.c.

sous-perl

· La nécessité de prédéclarer des fonctions récursives avec des prototypes pour que le prototype
à honorer dans l'appel récursif est maintenant documenté. [perle #2726]

· Une liste de noms de sous-programmes utilisés par l'implémentation de perl est maintenant incluse. [perle
#77680]

piège à perle

· Il y a maintenant une section JavaScript.

perlunicode

· La documentation a été mise à jour pour refléter les changements "Bidi_Class" dans Unicode 6.3.

perlvar

· Une nouvelle section expliquant les problèmes de performances de $`, $& et $', y compris
des solutions de contournement et des modifications dans différentes versions de Perl ont été ajoutées.

· Trois noms de variables anglais qui ont longtemps été documentés mais n'existent pas réellement
ont été retirés de la documentation. Il s'agissait de $OLD_PERL_VERSION, $OFMT et
$ARRAY_BASE.

(En fait, "OLD_PERL_VERSION" existent, à partir de cette révision, mais sont restés
sans papiers jusqu'à perl 5.22.0.)

perlxs

· Plusieurs problèmes dans l'exemple "MY_CXT" ont été corrigés.

Diagnostics


Les ajouts ou modifications suivants ont été apportés à la sortie de diagnostic, y compris les avertissements
et des messages d'erreur fatals. Pour la liste complète des messages de diagnostic, voir perldiag.

New Diagnostics
New Erreurs

· l'argument de suppression est une tranche de tableau d'index/valeur, utilisez une tranche de tableau

(F) Vous avez utilisé la syntaxe de tranche de tableau index/valeur (%array[...]) comme argument pour "supprimer".
Vous vouliez probablement dire @array[...] avec un symbole @ à la place.

· l'argument de suppression est une tranche de hachage clé/valeur, utilisez une tranche de hachage

(F) Vous avez utilisé la syntaxe de tranche de hachage clé/valeur (%hash{...}) comme argument pour "supprimer".
Vous vouliez probablement dire @hash{...} avec un symbole @ à la place.

· Les constantes de liste magique ne sont pas prises en charge

(F) Vous avez affecté un tableau magique à un élément de réserve, puis vous avez essayé d'utiliser le
sous-programme du même emplacement. Vous demandez à Perl de faire quelque chose qu'il ne peut pas faire,
détails sujets à changement entre les versions de Perl.

· L'ajout du paramètre $/ à une référence %s est interdit

New Avertissements

· %s sur la référence est expérimental :

La fonction "auto-deref" est expérimentale.

À partir de la v5.14.0, il était possible d'utiliser push, pop, keys et autres
fonctionne non seulement sur les types d'agrégats, mais sur les références à ceux-ci. La fonctionnalité n'était pas
déployé selon sa spécification initiale prévue, et peut maintenant devenir redondant pour
déréférencement postfixe. Il a toujours été classé comme une fonctionnalité expérimentale, et
dans la v5.20.0, il contient un avertissement en tant que tel.

Des avertissements seront désormais émis au moment de la compilation lorsque ces opérations sont détectées.

non si $] >= 5.01908, avertissements => "experimental::autoderef" ;

Envisagez cependant de remplacer l'utilisation de ces fonctionnalités, car elles peuvent modifier le comportement
à nouveau avant de devenir stable.

· Une séquence d'espaces multiples dans une définition d'alias de noms de caractères est déconseillée

L'espace de fin dans la définition d'un alias de charnames est déconseillé

Ces deux avertissements d'obsolescence impliquant "\N{...}" ont été incorrectement implémentés. Ils
n'a pas averti par défaut (maintenant ils le font) et n'a pas pu être rendu fatal via "utiliser les avertissements
FATAL => 'deprecated'" (maintenant ils le peuvent).

· Le prototype d'attribut (%s) supprime l'attribut de prototype antérieur dans le même sous

(W misc) Un sub a été déclaré comme "sub foo : prototype(A) : prototype(B) {}", pour
Exemple. Étant donné que chaque sous-ensemble ne peut avoir qu'un seul prototype, la ou les déclarations précédentes sont
rejeté tandis que le dernier est appliqué.

· Caractère \0 non valide dans %s pour %s : %s\0%s

(W syscalls) Caractères \0 intégrés dans les noms de chemin ou d'autres arguments d'appel système
produire un avertissement à partir du 5.20. Les parties après le \0 étaient auparavant ignorées par le système
appels.

· Point de code non-Unicode apparié 0x%X contre la propriété Unicode ; peut ne pas être portable.

Cela remplace le message "Le point de code 0x%X n'est pas Unicode, toutes les correspondances \p{} échouent ; toutes
\P{} correspondances réussissent".

· ']' manquant dans le prototype pour %s : %s

(W illégalproto) Un regroupement a été commencé avec "[" mais jamais fermé avec "]".

· Problème de priorité possible avec l'opérateur de flux de contrôle

(syntaxe W) Il y a un problème possible avec le mélange d'un opérateur de flux de contrôle
(par exemple "retour") et un opérateur de faible priorité comme "ou". Envisager:

sub { retourne $a ou $b; }

Ceci est analysé comme :

sub { (retourner $a) ou $b ; }

Ce qui est effectivement juste :

sous { retourne $a; }

Utilisez des parenthèses ou la variante prioritaire de l'opérateur.

Notez que cela peut également être déclenché pour des constructions telles que :

sub { 1 si mourir; }

· Le déréférencement de Postfix est expérimental

(S experimental::postderef) Cet avertissement est émis si vous utilisez l'experimental
syntaxe de déréférencement de suffixe. Supprimez simplement l'avertissement si vous souhaitez utiliser le
fonctionnalité, mais sachez qu'en agissant ainsi vous prenez le risque d'utiliser une
fonctionnalité susceptible de changer ou d'être supprimée dans une future version de Perl :

aucun avertissement "expérimental::postderef" ;
utiliser la fonctionnalité "postderef", "postderef_qq" ;
$ref->$* ;
$aref->@* ;
$aref->@[@indices] ;
... etc ...

· Prototype '%s' remplacé par l'attribut 'prototype(%s)' dans %s

(W prototype) Un prototype a été déclaré dans les deux parenthèses après le sous-nom et
via l'attribut prototype. Le prototype entre parenthèses est inutile, car il
être remplacé par le prototype de l'attribut avant qu'il ne soit utilisé.

· Valeur scalaire @%s[%s] mieux écrite sous la forme $%s[%s]

(syntaxe W) Dans un contexte scalaire, vous avez utilisé un indice de tableau/tranche de valeur (indiqué par %)
pour sélectionner un seul élément d'un tableau. En général, il vaut mieux demander un scalaire
valeur (indiquée par $). La différence est que $foo[&bar] se comporte toujours comme un
scalaire, à la fois dans la valeur qu'il renvoie et lors de l'évaluation de son argument, tandis que
%foo[&bar] fournit un contexte de liste à son indice, ce qui peut faire des choses étranges si
vous n'attendez qu'un seul indice. Lorsqu'il est appelé dans un contexte de liste, il renvoie également le
index (ce que &bar renvoie) en plus de la valeur.

· Valeur scalaire @%s{%s} mieux écrite sous la forme $%s{%s}

(syntaxe W) Dans un contexte scalaire, vous avez utilisé une clé de hachage/tranche de valeur (indiquée par %) pour
sélectionnez un seul élément d'un hachage. En général, il vaut mieux demander une valeur scalaire
(indiqué par $). La différence est que $foo{&bar} se comporte toujours comme un scalaire,
à la fois dans la valeur qu'il renvoie et lors de l'évaluation de son argument, tandis que @foo{&bar} et
fournit un contexte de liste à son indice, ce qui peut faire des choses étranges si vous êtes
n'attendant qu'un seul indice. Lorsqu'il est appelé dans un contexte de liste, il renvoie également la clé dans
en plus de la valeur.

· La définition de $/ sur une référence à %s en tant que forme de slurp est déconseillée, traitée comme undef

· Sortie inattendue %u

(S) sortie() a été appelé ou le script s'est autrement terminé avec élégance lorsque
"PERL_EXIT_WARN" a été défini dans "PL_exit_flags".

· Échec de sortie inattendu %d

(S) Un non-attrapé mourir() a été appelé lorsque "PERL_EXIT_WARN" a été défini dans "PL_exit_flags".

· L'utilisation de caractères de contrôle littéraux dans les noms de variables est déconseillée

(D obsolète) Utilisation de caractères de contrôle littéraux dans la source pour faire référence au ^FOO
les variables, telles que $^X et ${^GLOBAL_PHASE} sont désormais obsolètes. Cela n'affecte que le code
comme $\cT, où \cT est un contrôle (comme un "SOH") dans le code source : ${"\cT"} et $^T
reste valide.

· Utilisation inutile du modificateur de gourmandise

Cela corrige [Perl #42957].

Modifications à Existant Diagnostics
· Les avertissements et les erreurs du moteur d'expression régulière sont désormais propres au format UTF-8.

· Le message d'erreur « Condition de commutation inconnue » a quelques légères modifications. Cette erreur
se déclenche lorsqu'il y a une condition inconnue dans un conditionnel "(?(foo))". L'erreur
message utilisé pour lire :

Condition de commutateur inconnue (?(%s dans l'expression régulière ;

Mais ce que %s pourrait être était surtout le fruit de la chance. Pour "(?(foobar))", vous avez peut-être vu
"fo" ou "f". Pour les caractères Unicode, vous obtiendrez généralement une chaîne corrompue. Les
le message a été modifié pour lire :

Condition de commutation inconnue (?(...)) dans l'expression régulière ;

De plus, le marqueur '<-- HERE' dans l'erreur pointera désormais vers le bon endroit dans
la regex.

· L'avertissement "%s "\x%X" ne correspond pas à Unicode" est désormais correctement répertorié comme grave
avertissement plutôt que comme une erreur fatale.

· Dans de rares circonstances, on pourrait obtenir un « Impossible de forcer la REF en lecture seule à la chaîne »
au lieu de l'habituel "Modification d'une valeur en lecture seule". Cette erreur alternative
le message a été supprimé.

· « Utilisation ambiguë de * résolu en tant qu'opérateur * » : cet avertissement et des avertissements similaires concernant « % » et
"&" apparaissait dans certaines circonstances où il n'y avait pas d'opérateur du type cité,
donc l'avertissement était complètement faux. Cela a été corrigé [perl #117535, #76910].

· Les avertissements concernant les prototypes de sous-programmes malformés sont désormais plus cohérents dans la façon dont le
les prototypes sont rendus. Certains de ces avertissements tronqueraient les prototypes contenant
nuls. Dans d'autres cas, un avertissement en supprimerait un autre. L'avertissement sur l'illégalité
les personnages dans les prototypes ne disent plus "après '_'" si le mauvais caractère est venu avant
le trait de soulignement.

· Les règles de pliage Perl ne sont pas à jour pour 0x%X ; veuillez utiliser l'utilitaire perlbug pour
rapport; dans l'expression régulière ; marqué par <-- ICI en m/%s/

Ce message est maintenant uniquement dans la catégorie regexp, et non dans la catégorie obsolète.
C'est toujours un avertissement par défaut (c'est-à-dire sévère) [perl #89648].

· %%s[%s] dans un contexte scalaire mieux écrit sous la forme $%s[%s]

Cet avertissement se produit maintenant pour tout %array[$index] ou %hash{key} connu pour être en scalaire
contexte au moment de la compilation. Auparavant, il était libellé "Valeur scalaire %%s[%s] meilleure
écrit comme $%s[%s]".

· La condition de commutateur n'est pas reconnue dans l'expression régulière ; marqué par <-- ICI en m/%s/ :

La description de ce diagnostic a été étendue pour couvrir tous les cas où le
un avertissement peut se produire. Des problèmes avec le positionnement de l'indicateur de flèche ont également été
résolu.

· Les messages d'erreur pour "my($a?$b$c)" et "my(do{})" mentionnent désormais "conditional
expression" et "do block", respectivement, au lieu de lire "Impossible de déclarer null
opération dans "mon"'.

· Lorsque "use re "debug"" exécute une expression régulière contenant une référence arrière, le débogage
la sortie montre maintenant quelle chaîne est mise en correspondance.

· Le message d'erreur désormais fatal "Le caractère suivant "\c" doit être ASCII" a été reformulé
comme "Le caractère suivant "\c" doit être ASCII imprimable" pour souligner que dans "\cX", X
Doit être un imprimable (sans contrôle) caractère ASCII.

Utilité Modifications


a2p

· Un crash possible d'une erreur off-by-one lors de la tentative d'accès avant le début
d'un tampon a été corrigé. [perl #120244]

bisect.pl

L'outil de bissection git Portage/bisect.pl a eu de nombreuses améliorations.

Il est fourni dans le cadre de la distribution source mais n'est pas installé car il n'est pas
autonome car il repose sur son exécution à partir d'un git checkout. Notez également qu'il
ne fait aucune tentative pour corriger les tests, corriger les bogues d'exécution ou faire quelque chose d'utile à installer -
son but est d'apporter des modifications minimales pour obtenir toute révision historique d'intérêt à construire
et exécuter aussi près que possible de "as-was", et ainsi rendre "git bisect" facile à utiliser.

· Peut éventuellement exécuter le scénario de test avec un délai d'attente.

· Peut maintenant s'exécuter sur place dans une caisse git propre.

· Peut exécuter le cas de test sous " valgrind ".

· Peut appliquer les correctifs et les correctifs fournis par l'utilisateur à la caisse source avant la construction.

· A maintenant des correctifs pour permettre la construction de plusieurs gammes plus historiques de bleadperl, qui
peut être utile pour identifier les origines de bugs ou de changements de comportement.

trouver2perl

· find2perl gère maintenant "?" les jokers correctement. [perle #113054]

bug perl

· bug perl a maintenant une option "-p" pour attacher des correctifs avec un rapport de bogue.

· perlbug a été modifié pour fournir le modèle de rapport avec les fins de ligne CRLF sur
Les fenêtres. [perle #121277 ]

· perlbug fait maintenant le moins d'hypothèses possible sur l'encodage du rapport.
Cela changera probablement à l'avenir pour supposer UTF-8 par défaut mais autoriser un utilisateur
passer outre.

Configuration et Compilation


· Le Makefile.PL pour SDBM_File génère désormais un meilleur Makefile, ce qui évite une course
condition pendant les fabrications parallèles, ce qui pourrait entraîner l'échec de la construction. C'est le
dernier problème de fabrication parallèle connu (sur les plates-formes *nix), et nous pensons donc qu'un
parallèle make devrait maintenant toujours être sans erreur.

· installerperl et installateurLa gestion des options de a été remaniée pour utiliser Getopt::Long.
Les deux sont utilisés par le Makefile cibles "install" et ne sont pas installées, donc ces
les modifications sont susceptibles d'affecter uniquement les scripts d'installation personnalisés.

· Les options à une seule lettre ont désormais également des noms longs.

· Les options invalides sont maintenant rejetées.

· Les arguments de ligne de commande qui ne sont pas des options sont désormais rejetés.

· Chacun a maintenant une option "--help" pour afficher le message d'utilisation.

Le comportement de tous les appels documentés valides est inchangé.

· Dans la mesure du possible, la construction évite désormais les invocations récursives de a prendre une lors de la construction pure-
Extensions Perl, sans supprimer aucun parallélisme du build. Actuellement environ 80
les extensions peuvent être traitées directement par le make_ext.pl outil, ce qui signifie que 80
invocations de a prendre une et 160 invocations de miniperle ne sont plus fabriqués.

· Le système de compilation fonctionne désormais correctement lors de la compilation sous GCC ou Clang avec link-time
optimisation activée (option "-flto"). [perl #113022]

· Basenames distinctes de bibliothèque avec " d_libname_unique ".

Lors de la compilation de perl avec cette option, les fichiers de bibliothèque pour les modules XS sont nommés
quelque chose d'"unique" -- par exemple, Hash/Util/Util.so devient
Hash/Util/PL_Hash__Util.so. Ce comportement est similaire à ce qui se passe actuellement sur
VMS, et sert de base au port Android.

· Option "sysroot" pour indiquer le répertoire racine logique sous gcc et clang.

Lors de la construction avec cet ensemble d'options, Configure et les compilateurs recherchent tous les
en-têtes et bibliothèques sous cette nouvelle racine système, au lieu de /.

C'est un énorme gain de temps en cas de compilation croisée, mais peut également aider sur les versions natives si
les fichiers de votre chaîne d'outils ont des emplacements non standard.

· Le modèle de compilation croisée a été rénové. Il y a plusieurs nouvelles options, et certaines
modifications rétrocompatibles :

Nous construisons maintenant des binaires pour miniperl et generate_uudmap à utiliser sur l'hôte, plutôt
que d'exécuter chaque appel miniperl sur la cible ; cela signifie que, court de "faire le test",
nous n'avons plus besoin d'accéder au système cible une fois la configuration terminée. Vous pouvez fournir
binaires déjà construits via les options "hostperl" et "hostgenerate" pour configurer.

De plus, si vous ciblez une plate-forme EBCDIC à partir d'un hôte ASCII, ou vice-versa, vous
besoin d'exécuter Configure avec "-Uhostgenerate", pour indiquer que generate_uudmap doit
être exécuté sur la cible.

Enfin, il existe également un moyen de faire en sorte que Configure se termine plus tôt, juste après la construction du
les binaires de l'hôte, par compilation croisée sans spécifier d'"hôte cible".

Les modifications incompatibles incluent l'utilisation de xconfig.h, xlib ou Cross.pm, donc
les fichiers de configuration en conserve et les Makefiles devront être mis à jour.

· En lien avec ce qui précède, il existe maintenant un moyen de spécifier l'emplacement de sh (ou
équivalent) sur le système cible : "targetsh".

Par exemple, Android a son sh dans /system/bin/sh, donc si la compilation croisée à partir d'un plus
système Unixy normal avec sh dans / Bin / sh, "targetsh" finirait par /system/bin/sh, et
"sh" comme /bin/sh.

· Par défaut, gcc 4.9 fait quelques optimisations qui cassent perl. Les -fwrapv option
désactive ces optimisations (et probablement d'autres), donc pour gcc 4.3 et versions ultérieures (depuis
il peut y avoir des problèmes similaires sur les anciennes versions aussi, mais -fwrapv était
cassé avant 4.3, et les optimisations ne disparaîtront probablement pas), Configurer ajoute maintenant
-fwrapv à moins que l'utilisateur ne demande -fno-wrapv, ce qui désactive -fwrapv, ou
-fsanitize=non défini, qui transforme les débordements -fwrapv ignore dans les erreurs d'exécution.
[perle #121505 ]

Contrôle de qualité


· La cible make "test.valgrind" permet maintenant d'exécuter des tests en parallèle. Cette cible
permet à la suite de tests de Perl d'être exécutée sous Valgrind, qui détecte certaines sortes de C
erreurs de programmation, mais à un coût important en temps d'exécution. Sur du matériel adapté,
permettre l'exécution parallèle récupère une grande partie de ce coût supplémentaire. [perle #121431]

· Divers tests en t/portage/ ne sont plus ignorés lorsque le perl .va le répertoire est
en dehors de l'arbre perl et pointé par $GIT_DIR. [perl #120505]

· La suite de tests n'échoue plus lorsque le shell interactif de l'utilisateur maintient un $PWD
variable d'environnement, mais la / Bin / sh utilisé pour exécuter des tests ne le fait pas.

Plateforme Assistance


New Plateformes
Android
Perl peut désormais être construit pour Android, en natif ou par compilation croisée, pour
les trois architectures actuellement disponibles (ARM, MIPS et x86), sur une large gamme de
versions.

Bitrig
Le support de compilation a été ajouté pour Bitrig, un fork d'OpenBSD.

GratuitMiNT
Un support a été ajouté pour FreeMiNT, un système d'exploitation open source gratuit pour le système Atari ST et
ses successeurs, basés sur le MiNT original qui a été officiellement adopté par Atari.

Synology
Synology expédie ses boîtiers NAS avec une distribution Linux allégée (DSM) à un prix relativement bas
CPU (comme le Marvell Kirkwood mv6282 - ARMv5tel ou Freescale QorIQ P1022 ppc -
e500v2) non destiné aux postes de travail ou au développement. Ces boîtes devraient se construire maintenant. Les
les problèmes de base sont l'emplacement non standard des outils.

Discontinus Plateformes
"sfio"
Le code lié à la prise en charge du système d'E/S « sfio » a été supprimé.

Perl 5.004 a ajouté la prise en charge de l'utilisation de l'API native de "sfio", les E/S sûres/rapides d'AT&T
une bibliothèque. Ce code est toujours construit avec la v5.8.0, même si de nombreux tests de régression ont échoué,
mais a été cassé par inadvertance avant la version v5.8.1, ce qui signifie qu'il n'a pas fonctionné
sur n'importe quelle version de Perl publiée depuis lors. En plus d'une décennie, nous n'avons reçu aucun bug
rapporte à ce sujet, il est donc clair que personne n'utilise cette fonctionnalité sur aucun
version de Perl qui est toujours prise en charge à un degré quelconque.

AT&T 3b1
Configurez la prise en charge du 3b1, également connu sous le nom d'AT&T Unix PC (et le similaire AT&T
7300), a été supprimée.

DG/UX
DG/UX était un Unix vendu par Data General. La dernière version date d'avril 2001.
fonctionne sur le propre matériel de Data General.

EBCDIC
En l'absence d'une source régulière de rapports de fumée, le code destiné à prendre en charge natif
Les plates-formes EBCDIC seront supprimées de perl avant la 5.22.0.

Spécifique à la plateforme Remarques.
Cygwin
· recv () sur un handle connecté remplirait l'adresse de l'expéditeur renvoyée avec
tout ce qui s'est passé dans le tampon de travail. recv () utilise maintenant une solution de contournement
similaire au Win32 recv () wrapper et renvoie une chaîne vide lorsque recvfrom(2)
ne modifie pas la longueur de l'adresse fournie. [perle #118843]

· Correction d'une erreur de construction dans cygwin.c sur Cygwin 1.7.28.

Les tests gèrent désormais les erreurs qui se produisent lorsque "cygserver" n'est pas en cours d'exécution.

GNU / Hurd
La bibliothèque de compatibilité BSD "libbsd" n'est plus requise pour les builds.

Linux/Unix
Le fichier d'astuces recherche désormais "libgdbm_compat" uniquement si "libgdbm" lui-même est également souhaité.
Le premier n'est jamais utile sans le second, et dans certaines circonstances, y compris
pourrait effectivement empêcher la construction.

Mac OS
Le système de construction honore maintenant un paramètre "ld" fourni par l'utilisateur exécutant Configurer.

MinuitBSD
"objformat" a été supprimé de la version 0.4-RELEASE de MidnightBSD et a été
obsolète sur les versions antérieures. Cela a causé l'environnement de construction à tort
configuré pour "a.out" plutôt que "elf". Cela a maintenant été corrigé.

Plateformes mixtes-boutistes
Le code prenant en charge les opérations « pack » et « unpack » sur les plates-formes mixtes endian a été
supprimé. Nous pensons que Perl a longtemps été incapable de s'appuyer sur un endian mixte
architectures (telles que les PDP-11), nous ne pensons donc pas que ce changement affectera
plates-formes qui ont pu construire v5.18.0.

VMS
· La fonctionnalité "PERL_ENV_TABLES" pour contrôler la population de %ENV au démarrage de perl
était cassé dans Perl 5.16.0 mais a maintenant été corrigé.

· Ignorer les contrôles d'accès sur les télécommandes dans opendir(). [perl #121002]

· Une vérification des métacaractères glob dans un chemin renvoyé par l'opérateur "glob()" a
remplacé par une vérification des caractères génériques VMS. Cela permet d'économiser une part importante
nombre d'appels "lstat()" inutiles de sorte que certaines opérations de glob simples deviennent
60-80% plus rapide.

Win32
· « renommer » et « lien » sur Win32 maintenant défini $ ! à ENOSPC et EDQUOT le cas échéant.
[perle #119857]

· Les options de makefile BUILD_STATIC et ALL_STATIC pour lier certains ou (presque) tous
extensions statiquement (dans perl520.dll, et dans un perl-static.exe séparé aussi)
ont été cassés pour les versions MinGW. Cela a maintenant été corrigé.

L'option ALL_STATIC a également été améliorée pour inclure l'Encode et Win32
extensions (pour les versions VC++ et MinGW).

· La prise en charge de la construction avec Visual C++ 2013 a été ajoutée. Il y a actuellement deux
les échecs de test possibles (voir "Test de Perl sous Windows" dans perlwin32) qui
espérons être résolu bientôt.

· Un support expérimental pour la construction avec le compilateur Intel C++ a été ajouté. Les
nmake makefile (win32/Makefile) et le makefile dmake (win32/makefile.mk) peuvent être
utilisé. Un « test nmake » ne réussira pas pour le moment en raison de cpan/CGI/t/url.t.

· Tuer un arbre de processus avec "kill" dans perlfunc et un signal négatif, a été cassé
à partir de 5.18.0. Dans ce bogue, "kill" renvoyait toujours 0 pour un signal négatif
même pour les PID valides, et aucun processus n'a été terminé. Cela a été corrigé [perl
#121230].

· Le temps de compilation de perl sous Windows a été considérablement réduit (temps
des économies de l'ordre de 30 à 40 % sont généralement observées) en réduisant le nombre de,
échouent généralement, les appels d'E/S pour chaque "require()" (pour miniperl.exe seul). [perle
#121119 ]

· Environ 15 minutes de veille inactive ont été supprimées de l'exécution de "make test" en raison d'un
bug dans lequel le moniteur de timeout utilisé pour les tests ne pouvait pas être annulé une fois le
le test est terminé et le délai d'attente complet s'est écoulé avant l'exécution du test suivant
déposer. [perl #121395 ]

· Sur un perl construit sans pseudo-fork (les versions pseudo-fork n'étaient pas affectées par cela
bug), tuer un arbre de processus avec "kill()" et un signal négatif a entraîné
"kill()" en inversant la valeur renvoyée. Par exemple, si "kill()" a tué 1 processus
tree PID alors il a renvoyé 0 au lieu de 1, et si "kill()" a été passé 2 invalide
PIDs puis il a renvoyé 2 au lieu de 0. Cela a probablement été le cas depuis le
La fonctionnalité de suppression de l'arbre de processus a été implémentée sur Win32. Il a maintenant été corrigé pour
suivre le comportement documenté. [perle #121230
]

· Lors de la construction d'un perl 64 bits, une mémoire non initialisée lue miniperl.exe, utilisé
pendant le processus de construction, pourrait conduire à un 4 Go wperl.exe Étant créé. Cela a
maintenant été corrigé. (Noter que perl.exe lui-même n'a pas été affecté, mais évidemment
wperl.exe aurait été complètement cassé.) [perl #121471
]

· Perl peut maintenant être construit avec gcc version 4.8.1 dehttp://www.mingw.org>. Cette
a déjà été interrompu en raison d'une définition incorrecte de DllMain() dans l'un des perl
fichiers source. Plus tôt gcc versions ont également été affectées lors de l'utilisation de la version 4 du
paquet w32api. Versions de gcc disponible auprès
<http://mingw-w64.sourceforge.net/> n'ont pas été affectés. [perle #121643
]

· Le faisceau de test n'a désormais plus de défaillance lorsque perl est construit sur un lecteur FAT avec le
Système d'exploitation Windows sur un lecteur NTFS. [perle #21442
]

· Lors du clonage de la pile de contexte dans fourchette() émulation, Perl_cx_dup() s'écraserait
accéder aux informations de paramètre pour les entrées de la pile de contexte qui n'incluaient pas
paramètres, comme avec "&foo;". [perle #121721
]

· Présenté par perl #113536
, une fuite de mémoire sur chaque
appel à "system" et backticks (" `` "), sur la plupart des Perls Win32 à partir de 5.18.0
a été réparé. La fuite de mémoire ne s'est produite que si vous avez activé pseudo-fork dans votre
build de Win32 Perl, et exécutaient cette build sur Server 2003 R2 ou un système d'exploitation plus récent.
La fuite n'apparaît pas sur WinXP SP3. [perle #121676
]

WinCE
· Le bâtiment des modules XS a été en grande partie restauré. Plusieurs ne peuvent toujours pas (encore)
être construit mais il est maintenant possible de construire Perl sur WinCE avec seulement quelques
d'autres correctifs (à Socket et ExtUtils::MakeMaker), espérons-le être incorporés
bientôt.

· Perl peut maintenant être construit d'un seul coup sans intervention de l'utilisateur sur WinCE en exécutant
"nmake -f Makefile.ce all".

La prise en charge de la construction avec EVC (Embedded Visual C++) 4 a été restaurée. Perl peut
également être construit à l'aide de Smart Devices pour Visual C++ 2005 ou 2008.

Interne Modifications


· La représentation interne a changé pour les variables de correspondance $1, $2 etc., $`, $&,
$', ${^PREMATCH}, ${^MATCH} et ${^POSTMATCH}. Il utilise un peu moins de mémoire, évite
comparaisons de chaînes et conversions numériques lors de la recherche, et utilise 23 lignes de moins
C. Ce changement ne devrait affecter aucun code externe.

· Les tableaux utilisent maintenant NULL en interne pour représenter les emplacements inutilisés, au lieu de &PL_sv_undef.
&PL_sv_undef n'est plus traité comme une valeur spéciale, donc av_store(av, 0, &PL_sv_undef)
fera que l'élément 0 de ce tableau contiendra un scalaire non défini en lecture seule. "$tableau[0] =
n'importe quoi" croassera et "\$array[0]" sera égal à "\undef".

· Le SV renvoyé par HeSVKEY_force() reflète désormais correctement le caractère UTF8 du
clé de hachage sous-jacente lorsque cette clé n'est pas stockée en tant que SV. [perle #79074]

· Certaines fonctions et macros rarement utilisées disponibles pour le code XS sont désormais obsolètes.
Ce sont : "utf8_to_uvuni_buf" (utilisez "utf8_to_uvchr_buf" à la place),
"valid_utf8_to_uvuni" (utilisez "utf8_to_uvchr_buf" à la place), "NATIVE_TO_NEED" (cela a
ne fonctionne pas correctement de toute façon), et "ASCII_TO_NEED" (cela n'a pas fonctionné correctement de toute façon).

À partir de cette version, le code d'application n'a presque jamais besoin de distinguer
entre le jeu de caractères de la plate-forme et Latin1, sur lequel les 256 caractères les plus bas de
Unicode sont basés. Le nouveau code ne doit pas utiliser "utf8n_to_uvuni" (utilisez "utf8_to_uvchr_buf"
à la place), ni "uvuni_to_utf8" (utilisez "uvchr_to_utf8" à la place),

· Les cibles de raccourci Makefile pour de nombreux tests et profilages rarement (ou jamais) utilisés
les cibles ont été supprimées ou fusionnées dans la seule autre cible Makefile qui utilise
eux. Plus précisément, ces cibles ont disparu, ainsi que la documentation faisant référence à
ou expliqué comment les utiliser :

check.third check.utf16 check.utf8 coretest minitest.prep
minitest.utf16 perl.config.dashg perl.config.dashpg
perl.config.gcov perl.gcov perl.gprof perl.gprof.config
perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix
perl.third perl.third.config perl.valgrind.config purecovperl
pureperl quantperl test.deparse test.taintwarn test.troisième
test.torture test.utf16 test.utf8 test_notty.deparse
test_notty.third test_notty.valgrind test_prep.third
test_prep.valgrind torturetest ucheck ucheck.troisième ucheck.utf16
ucheck.valgrind utest utest.troisième utest.utf16 utest.valgrind

Il est toujours possible d'exécuter les commandes pertinentes "à la main" - pas de sous-jacent
la fonctionnalité a été supprimée.

· Il est maintenant possible d'empêcher Perl d'initialiser la gestion des paramètres régionaux. Pour la plupart,
Perl ne fait pas attention aux paramètres régionaux. (Voir perllocale.) Néanmoins, jusqu'à présent, sur
démarrage, il a toujours initialisé la gestion des paramètres régionaux sur la valeur par défaut du système, juste au cas où
le programme en cours d'exécution finit par utiliser les locales. (C'est l'une des premières choses qu'un
un programme sensible aux paramètres régionaux devrait le faire, bien avant que Perl ne sache s'il sera réellement nécessaire
ou pas.) Cela fonctionne bien sauf lorsque Perl est intégré dans une autre application qui
veut une locale qui n'est pas la valeur par défaut du système. Maintenant, si la variable d'environnement
"PERL_SKIP_LOCALE_INIT" est défini au démarrage de Perl, cette étape d'initialisation
est ignoré. Avant cela, sur les plates-formes Windows, la seule solution de contournement pour ce
Le défaut était d'utiliser une copie piratée du code Perl interne. Les applications qui ont besoin
d'utiliser des Perls plus anciens peuvent découvrir si le Perl intégré qu'ils utilisent a besoin du
solution de contournement en testant que le symbole du préprocesseur C "HAS_SKIP_LOCALE_INIT" n'est pas
défini. [RT #38193]

· "BmRARE" et "BmPREVIOUS" ont été supprimés. Ils n'ont été utilisés nulle part et ne sont pas
partie de l'API. Pour les modules XS, ils sont maintenant #définis comme 0.

· "sv_force_normal", qui croasse généralement sur les valeurs en lecture seule, utilisé pour autoriser la lecture seule
valeurs à modifier au moment de la compilation. Cela a été changé pour coasser en lecture seule
valeurs indépendamment. Ce changement a découvert plusieurs bogues de base.

· Le nouveau mécanisme de copie sur écriture de Perl (qui est maintenant activé par défaut), permet à n'importe quel
Le scalaire « SvPOK » doit être automatiquement mis à niveau vers un scalaire de copie sur écriture lors de la copie. UNE
le nombre de références sur le tampon de chaîne est stocké dans le tampon de chaîne lui-même.

Par exemple :

$ perl -MDevel::Peek -e'$a="abc"; $b = $a ; Vider $a ; Vider $b'
SV = PV(0x260cd80) at 0x2620ad8
REFCNT = 1
DRAPEAUX = (POK,IsCOW,pPOK)
PV = 0x2619bc0 "abc"\0
CUR = 3
LON = 16
VACHE_REFCNT = 1
SV = PV(0x260ce30) at 0x2620b20
REFCNT = 1
DRAPEAUX = (POK,IsCOW,pPOK)
PV = 0x2619bc0 "abc"\0
CUR = 3
LON = 16
VACHE_REFCNT = 1

Notez que les deux scalaires partagent le même tampon PV et ont un COW_REFCNT supérieur à
zéro.

Cela signifie que le code XS qui souhaite modifier le buffer "SvPVX()" d'un SV doit
appelez "SvPV_force()" ou similaire en premier, pour garantir un tampon valide (et non partagé), et pour
appelez ensuite "SvSETMAGIC()". Cela a d'ailleurs toujours été le cas (par exemple
les clés de hachage étaient déjà en copie sur écriture) ; ce changement ne fait que propager le comportement COW à un
plus grande variété de SV.

Une différence importante est qu'avant 5.18.0, les scalaires de clé de hachage partagée avaient
l'indicateur « SvREADONLY » est défini ; Ce n'est plus le cas.

Ce nouveau comportement peut toujours être désactivé en exécutant Configurer avec
-Accfflags=-DPERL_NO_COW. Cette option sera probablement supprimée dans Perl 5.22.

· "PL_sawampersand" est maintenant une constante. Le commutateur fourni par cette variable (pour
activer/désactiver la copie d'avant-match selon que $& avait été vu) a été
supprimé et remplacé par la copie sur écriture, éliminant quelques bogues.

Le comportement précédent peut toujours être activé en exécutant Configurer avec
-Accfflags=-DPERL_SAWAMPERSAND.

· Les fonctions "my_swap", "my_htonl" et "my_ntohl" ont été supprimées. C'est flou
pourquoi ces fonctions ont toujours été marquées comme A, une partie de l'API. Le code XS ne peut pas les appeler
directement, car il ne peut pas compter sur leur compilation. Sans surprise, pas de code sur CPAN
les référence.

· La signature de la fonction d'expression régulière "Perl_re_intuit_start()" a changé ; la fonction
le pointeur "intuit" dans la structure du plugin du moteur regex a également changé en conséquence. UNE
un nouveau paramètre, "strbeg" a été ajouté ; cela a la même signification que le même nom
paramètre dans "Perl_regexec_flags". Auparavant, intuit essayait de deviner le début de
la chaîne du SV passé (le cas échéant), et se tromperait parfois (par exemple avec un
SV surchargé).

· La signature de la fonction d'expression régulière "Perl_regexec_flags()" a changé ; la fonction
le pointeur "exec" dans la structure du plugin du moteur regex a également changé pour correspondre. Les
Le paramètre "minend" a désormais le type "SSize_t" pour mieux prendre en charge les systèmes 64 bits.

· Le code XS peut utiliser diverses macros pour changer la casse d'un caractère ou d'un point de code (par
exemple "toLOWER_utf8()"). Seuls quelques-uns d'entre eux ont été documentés jusqu'à présent; et maintenant
elles doivent être utilisées de préférence à l'appel des fonctions sous-jacentes. Voir "Personnage
changement de casse" dans perlapi.

· Le code traitait de manière assez incohérente avec les uids et les gids. Certains endroits ont supposé qu'ils
pourraient être stockés en toute sécurité dans des UV, d'autres dans des IV, d'autres dans des int. Quatre nouvelles macros sont
introduit : SvUID(), sv_setuid(), SvGID() et sv_setgid()

· "sv_pos_b2u_flags" a été ajouté à l'API. C'est similaire à "sv_pos_b2u", mais
prend en charge les chaînes longues sur les plates-formes 64 bits.

· "PL_exit_flags" peut maintenant être utilisé par les embedders perl ou d'autres codes XS pour avoir perl "warn"
ou "abandonner" lors d'une tentative de sortie. [perl #52000]

· La compilation avec "-Accflags=-PERL_BOOL_AS_CHAR" permet désormais aux compilateurs C99 et C++ de
émuler l'alias de "bool" à "char" que perl fait pour les compilateurs C89. [perle
#120314]

· L'argument "sv" dans "sv_2pv_flags" dans perlapi, "sv_2iv_flags" dans perlapi,
"sv_2uv_flags" dans perlapi et "sv_2nv_flags" dans perlapi et leurs anciens wrappers
sv_2pv, sv_2iv, sv_2uv, sv_2nv, est désormais non NULL. Passer NULL maintenant va planter. Lorsque
le marqueur non-NULL a été introduit en masse dans 5.9.3 les fonctions ont été marquées non-
NULL, mais depuis la création de l'API SV en 5.0 alpha 2, si NULL était passé, le
les fonctions ont renvoyé des valeurs de type 0 ou faux. Le code qui prend en charge l'argument "sv" étant
les dates non NULL à 5.0 alpha 2 directement, et indirectement à Perl 1.0 (pre 5.0 api). Les
le manque de documentation indiquant que les fonctions acceptaient un "sv" NULL a été corrigé en 5.11.0
et entre 5.11.0 et 5.19.5 les fonctions étaient marquées NULLOK. À titre d'optimisation, le
Le code NULLOK a maintenant été supprimé et les fonctions sont à nouveau marquées non NULL,
car les macros de type getter de base ne transmettent jamais NULL à ces fonctions et planteraient
avant de passer NULL.

La seule façon dont un "sv" NULL peut être transmis aux fonctions sv_2*v* est si le code XS directement
appelle sv_2*v*. Ceci est peu probable car le code XS utilise des macros Sv*V* pour obtenir le sous-jacent
valeur hors de la SV. Une situation possible qui conduit à la transmission d'un "sv" NULL à
sv_2*v*, c'est si le code XS définit ses propres macros Sv*V* de type getter, qui vérifient
pour NULL avant déréférencement et vérification des drapeaux du SV via l'API publique Sv*OK*
macros ou directement en utilisant l'API privée "SvFLAGS", et si "sv" est NULL, alors appeler le
sv_2*v fonctionne avec un littéral NULL ou en passant le "sv" contenant une valeur NULL.

· newATTRSUB est maintenant une macro

L'API publique newATTRSUB était auparavant une macro de la fonction privée
Perl_newATTRSUB. La fonction Perl_newATTRSUB a été supprimée. newATTRSUB est maintenant une macro pour
une fonction interne différente.

· Modifications des avertissements générés par "utf8n_to_uvchr()"

Cette fonction de niveau inférieur décode le premier caractère d'une chaîne UTF-8 en un code
point. Il est accessible au code de niveau "XS", mais il est déconseillé de l'utiliser
directement. Il existe des fonctions de niveau supérieur qui appellent cela et qui devraient être utilisées
à la place, comme "utf8_to_uvchr_buf" dans perlapi. Par souci d'exhaustivité, ce
documente certaines modifications. Désormais, des tests de malformations sont effectués avant tout test
pour d'autres problèmes potentiels. L'un de ces problèmes implique des points de code si grands que
ils n'ont jamais figuré dans aucune norme officielle (la norme actuelle a été mise à l'échelle
récupérer le point de code acceptable le plus élevé des versions antérieures). Il est possible (bien que
pas fait dans CPAN) pour avertir et/ou interdire ces points de code, tout en acceptant de plus petits
points de code qui sont toujours au-dessus du maximum légal Unicode. Le message d'avertissement pour
cela inclut maintenant le point de code s'il est représentable sur la machine. Auparavant, il
toujours affiché les octets bruts, ce qu'il fait toujours pour le code non représentable
des points.

· Modifications du moteur d'expression régulière qui affectent l'interface du moteur d'expression régulière enfichable

De nombreux drapeaux qui étaient exposés via regexp.h et utilisés pour remplir les drapeaux ext
membre de struct regexp ont été supprimés. Ces champs étaient techniquement privés pour
propre moteur d'expressions rationnelles de Perl et n'aurait pas dû y être exposé en premier lieu.

Les drapeaux concernés sont :

RXf_NOSCAN
RXf_CANY_SEEN
RXf_GPOS_SEEN
RXf_GPOS_FLOAT
RXf_ANCH_BOL
RXf_ANCH_MBOL
RXf_ANCH_SBOL
RXf_ANCH_GPOS

Ainsi que les masques drapeau suivants :

RXf_ANCH_SINGLE
RXf_ANCH

Tous ont été renommés en équivalents PREGf_ et déplacés vers regcomp.h.

Le comportement précédemment obtenu en définissant un ou plusieurs des drapeaux RXf_ANCH_ (via
le masque RXf_ANCH) ont maintenant été remplacés par un bit d'indicateur *single* dans extflags :

RXf_IS_ANCHORED

les moteurs regex enfichables qui utilisaient auparavant pour définir ces indicateurs devraient maintenant définir ceci
drapeau SEUL.

· Le noyau Perl utilise désormais systématiquement "av_tindex()" ("l'index supérieur d'un tableau") comme
synonyme plus clairement nommé de "av_len()".

· La variable interpréteur obscure "PL_timesbuf" devrait être supprimée au début de la
série de développement 5.21.x, de sorte que Perl 5.22.0 ne la fournira pas aux auteurs XS.
Bien que la variable existe toujours dans 5.20.0, nous espérons que cet avertissement préalable du
la dépréciation aidera quiconque utilise cette variable.

Sélectionné Punaise Correctifs


Régulier Expressions
· Correction d'un petit nombre de constructions d'expressions régulières qui pouvaient ne pas correspondre ou se bloquer
perl lorsque la chaîne à comparer a été allouée au-dessus de la ligne de 2 Go sur 32 bits
systèmes. [RT #118175]

· Diverses fuites de mémoire impliquant l'analyse de l'expression régulière "(?[...])"
construction ont été corrigés.

· "(?[...])" permet désormais l'interpolation de modèles précompilés constitués de "(?[...])"
avec des classes de caractères entre crochets à l'intérieur ("$pat = qr/(?[ [a] ])/; /(?[ $pat ])/").
Auparavant, les crochets confondaient l'analyseur d'expressions régulières.

· Le message d'avertissement « Quantificateur inattendu sur une expression de longueur nulle » peut apparaître
deux fois à partir de Perl v5.10 pour une expression régulière contenant également des alternances
(par exemple, "a|b") déclenchant l'optimisation du trie.

· Perl v5.18 a introduit par inadvertance un bogue par lequel l'interpolation a mélangé vers le haut et vers le bas
les chaînes UTF-8 graduées dans une expression régulière peuvent entraîner un UTF-8 mal formé dans le modèle :
en particulier si un caractère dégradé dans la plage "\x80..\xff" suivait un UTF-8
chaîne, par exemple

utf8::upgrade( mon $u = "\x{e5}");
utf8::downgrade(mon $d = "\x{e5}");
/$u$d/

[RT n° 118297]

· Dans les expressions régulières contenant plusieurs blocs de code, les valeurs de $1, $2, etc.,
défini par des appels d'expressions régulières imbriqués fuirait d'un bloc à l'autre. À présent
ces variables font toujours référence à l'expression régulière externe au début d'un
bloc intégré [perl #117917].

· "/$qr/p" était cassé dans Perl 5.18.0; le drapeau "/p" a été ignoré. Cela a été corrigé.
[perle #118213]

· À partir de Perl 5.18.0, une construction comme "/[#](?{})/x" aurait son "#" incorrectement
interprété comme un commentaire. Le bloc de code serait ignoré, non analysé. Cela a été
corrigée.

· À partir de Perl 5.001, une expression régulière comme "/[#$a]/x" ou "/[#]$a/x" aurait
son "#" mal interprété comme un commentaire, donc la variable ne serait pas interpolée.
Cela a été corrigé. [perle #45667]

· Perl 5.18.0 a rendu fausses par inadvertance les expressions régulières déréférencées ("${ qr// }") comme
booléens. Cela a été corrigé.

· L'utilisation de "\G" dans les expressions régulières, où il n'est pas au début du motif, est
maintenant un peu moins buggé (même si cela reste un peu problématique).

· Lorsqu'une expression régulière incluait des blocs de code ("/(?{...})/"), et où l'utilisation de
une surcharge constante a déclenché une recompilation du bloc de code, la seconde
la compilation n'a pas vu sa portée lexicale externe. Il s'agissait d'une régression dans Perl 5.18.0.

· La position de la chaîne définie par "pos" pourrait changer si la chaîne changeait de représentation
en interne vers ou depuis utf8. Cela peut arriver, par exemple, avec des références à des objets avec
surcharge de chaîne.

· Prendre des références aux valeurs de retour de deux appels "pos" avec le même argument, et
puis attribuer une référence à l'un et "undef" à l'autre, pourrait entraîner une affirmation
pannes ou fuites de mémoire.

· Les éléments de @- et @+ sont désormais correctement mis à jour lorsqu'ils font référence à des captures inexistantes.
Auparavant, un élément référencé ("$ref = \$-[1]") pouvait faire référence à la mauvaise correspondance
après les matchs suivants.

· Le code qui analyse les backrefs regex (ou backref/octals ambigus) tels que \123 a fait un
simple atoi(), qui pourrait s'enrouler sur des valeurs négatives sur de longues chaînes de chiffres et
provoquer des défauts de segmentation. Cela a maintenant été corrigé. [perle #119505]

· L'attribution d'un autre typeglob à "*^R" ne rend plus le moteur d'expression régulière
crash.

· L'échappement d'expression régulière "\N", lorsqu'il est utilisé sans les accolades (pour signifier
"[^\n]"), ignorait un "*" suivant s'il était suivi d'un espace sous /x. Cela a
été de cette façon depuis que "\N" pour signifier "[^\n]" a été introduit dans 5.12.0.

· "s///", "tr///" et "y///" fonctionnent désormais lorsqu'un caractère large est utilisé comme délimiteur.
[perle #120463]

· Certains cas de séquences non terminées (?...) dans les expressions régulières (par exemple, "/(?
ont été corrigés pour produire le message d'erreur approprié au lieu de "panic: memory wrap".
D'autres cas (par exemple, "/(?(/") n'ont pas encore été corrigés.

· Lorsqu'une référence à une référence à un objet surchargé a été renvoyée à partir d'un
bloc de code expression "(??{...})", un déréférencement implicite incorrect pourrait avoir lieu
si la référence interne avait été renvoyée par un bloc de code précédemment.

· Une variable liée renvoyée par "(??{...})" voit les valeurs internes des variables de correspondance
(c'est-à-dire le $1 etc. de toutes les correspondances à l'intérieur du bloc) dans sa méthode FETCH. C'était
pas le cas si une référence à un objet surchargé était la dernière chose affectée au
variable liée. Au lieu de cela, les variables de correspondance faisaient référence au modèle externe au cours de la
RÉCUPÉRER l'appel.

· Correction d'une souillure inattendue via regexp en utilisant les paramètres régionaux. Auparavant, sous certaines conditions,
l'utilisation de classes de caractères pourrait provoquer une altération alors qu'elle ne devrait pas. Un certain caractère
les classes dépendent des paramètres régionaux, mais avant ce correctif, il se produisait parfois des altérations
même pour les classes de caractères qui ne dépendent pas des paramètres régionaux. [perle #120675]

· Sous certaines conditions, Perl renverrait une erreur si dans une assertion lookbehind dans un
regexp, l'assertion faisait référence à un sous-modèle nommé, se plaignant que le lookbehind était
variable alors qu'il ne l'était pas. Cela a été corrigé. [perl #120600], [perl #120618]. le
le correctif actuel peut être amélioré à l'avenir.

· $^R n'était pas disponible en dehors de l'expression régulière qui l'a initialisé. [perle
#121070]

· Un grand nombre de correctifs et de refactorisation pour re_intuit_start() a été fusionné, les faits saillants
sont:

· Correction d'une panique lors de la compilation de l'expression régulière "/\x{100}[xy]\x{100}{2}/".

· Correction d'une régression des performances lors de l'exécution d'une correspondance de modèle globale contre un
Chaîne UTF-8. [perl #120692]

· Correction d'un autre problème de performances lors de la correspondance d'une expression régulière comme
"/ab.{1,2}x/" contre une longue chaîne UTF-8 calculerait inutilement l'octet
décalages pour une grande partie de la chaîne. [perl #120692]

· Correction d'une erreur d'alignement lors de la compilation d'expressions régulières lors de la construction avec GCC sur HP-
UX 64 bits.

· Sur les plates-formes 64 bits, "pos" peut désormais être défini sur une valeur supérieure à 2**31-1. [perle
#72766]

Perl 5 Debugger et -d
· La commande "man" du débogueur a été corrigée. Il a été cassé dans la version v5.18.0. le
La commande "man" est aliasée aux noms "doc" et "perldoc" - tout fonctionne à nouveau maintenant.

· @_ est désormais correctement visible dans le débogueur, corrigeant une régression introduite dans
débogueur de la v5.18.0. [RT #118169]

· Sous les versions de copie sur écriture (la valeur par défaut à partir de 5.20.0) "${'_<-e'}[0]" n'obtient plus
mutilé. Ceci est la première ligne d'entrée enregistrée pour l'utilisation du débogueur pour les one-liners
[perl #118627].

· Sur les builds non-thread, le réglage "${"_
provoque "__FILE__" et certains messages d'erreur pour produire une chaîne corrompue, et non plus
empêche les directives "#line" dans les evals de chaîne de fournir les lignes source au
débogueur. Les builds threadées n'ont pas été affectées.

· À partir de Perl 5.12, les numéros de ligne étaient décalés de un si le -d l'interrupteur a été utilisé sur le
# ! ligne. Maintenant, ils ont raison.

· "*DB::DB = sub {} if 0" n'empêche plus le mode de débogage de Perl de trouver "DB::DB"
sous-marins déclarés par la suite.

· Les hachages "%{'_<...'}" définissent désormais des points d'arrêt sur le "@{'_<...'}" correspondant plutôt que
quel que soit le tableau auquel @DB::dbline est aliasé. [perle #119799]

· Appelez set-magic lors de la configuration de $DB::sub. [perle #121255]

· La commande "n" du débogueur respecte désormais les sous-routines lvalue et les dépasse [perl
#118839].

Lexical Sous-programmes
· Les constantes lexicales ("my sub a() { 42 }") ne se bloquent plus lorsqu'elles sont insérées.

· Les prototypes de paramètres attachés aux sous-programmes lexicaux sont désormais respectés lors de la compilation
sous-appels sans parenthèses. Auparavant, les prototypes n'étaient honorés que pour
en cours avec parenthèses. [RT #116735]

· Erreurs de syntaxe dans les sous-programmes lexicaux en combinaison avec des appels aux mêmes sous-programmes
ne provoque plus de plantage au moment de la compilation.

· Les avertissements de récursivité profonde ne bloquent plus les sous-programmes lexicaux. [RT #118521]

· La sonde de sous-entrée dtrace fonctionne désormais avec les sous-titres lexicaux, au lieu de planter [perl
#118305].

· Undefining un sous-programme lexical inlinable ("my sub foo() { 42 } undef &foo")
provoquer un plantage si les avertissements étaient activés.

· Un sous lexical non défini utilisé comme méthode héritée ne se bloque plus.

· La présence d'un sous lexical nommé "CORE" n'arrête plus le préfixe CORE :: de
travail.

Tout autre
· Le code d'allocation OP renvoie désormais une mémoire correctement alignée dans tous les cas pour " struct
pmop". Auparavant, il pouvait renvoyer la mémoire alignée uniquement sur une limite de 4 octets, ce qui est
pas correct pour une construction d'ithreads avec des IV 64 bits sur certaines plates-formes 32 bits. Notamment,
cela a causé l'échec complet de la construction sur sparc GNU/Linux. [RT #118055]

· L'évaluation des grands hachages dans un contexte scalaire est désormais beaucoup plus rapide, car le nombre de
Les chaînes du hachage sont désormais mises en cache pour les hachages plus importants. Les petits hachages continuent de ne pas
stockez-le et calculez-le si nécessaire, car cela permet d'économiser un IV. Ce serait 1 IV
frais généraux pour chaque objet construit à partir d'un hachage. [RT #114576]

· Perl v5.16 a introduit par inadvertance un bogue par lequel les appels aux XSUB qui n'étaient pas visibles
au moment de la compilation étaient traités comme des lvalues ​​et pouvaient être affectés à, même lorsque le
le sous-programme n'était pas un sous-programme lvalue. Cela a été corrigé. [RT #117947]

· Dans Perl v5.18.0, les dualvars avaient une chaîne vide pour la partie chaîne mais une valeur différente de zéro
nombre pour la partie numérique commençant à être traité comme vrai. Dans les versions précédentes, ils
ont été traités comme faux, la représentation sous forme de chaîne ayant la priorité. L'ancien
le comportement a été restauré. [RT #118159]

· Depuis Perl v5.12, l'incorporation de constantes qui remplacent les mots-clés intégrés du même
name avait annulé " use subs ", provoquant des mentions ultérieures de la constante à utiliser
le mot-clé intégré à la place. Cela a été corrigé.

· L'avertissement produit par "-l $handle" s'applique désormais aux IO refs et globs, pas seulement à
réf. Cet avertissement est également désormais UTF8-clean. [RT #117595]

· « delete local $ENV{nonexistent_env_var} » ne perd plus de mémoire.

· "sort" et "require" suivis d'un mot-clé préfixé par "CORE ::" le traitent maintenant comme un
mot-clé, et non en tant que sous-routine ou nom de module. [RT #24482]

· A travers certaines énigmes, il est possible de provoquer la libération du paquet courant.
Certains opérateurs ("bless", "reset", "open", "eval") ne pouvaient pas faire face et plantaient.
Ils sont devenus plus résistants. [RT #117941]

· L'aliasing des handles de fichiers via l'affectation glob-to-glob ne mettrait pas à jour la méthode interne
se met en cache correctement si un package du même nom que le descripteur de fichier existait, ce qui entraîne
les appels de méthode filehandle vont au package à la place. Cela a été corrigé.

· "./Configure -de -Dusevendorprefix" n'a pas été défini par défaut. [RT #64126]

· L'avertissement « Relevé peu susceptible d'être atteint » a été répertorié dans perldiag comme un
Avertissement de catégorie "exec", mais a été activé et désactivé par la catégorie "syntaxe". Au
d'autre part, la catégorie « exec » contrôlait sa fatalité. C'est maintenant entièrement
géré par la catégorie « exec ».

· L'avertissement "La liste de remplacement est plus longue que la liste de recherche" pour "tr///" et "y///" non
se produit plus en présence du drapeau "/c". [RT #118047]

· La stringification des NV n'est pas mise en cache afin que les paramètres régionaux lexicaux contrôlent
stringification de la virgule décimale. [perl #108378] [perl #115800]

· Il y a eu plusieurs correctifs liés à la gestion des locales par Perl. perl #38193 était
décrit ci-dessus dans « Modifications internes ». Également corrigé est #118197, où la base
(point décimal) devait être un caractère ASCII (ce qui ne fonctionne pas pour certains
langues non occidentales); et #115808, dans lequel "POSIX::setlocale()" en cas d'échec est retourné
un "undef" qui n'a pas averti de ne pas être défini même si ces avertissements étaient
activée.

· Compilation d'un opérateur "split" dont le troisième argument est une constante nommée évaluée à 0
ne fait plus changer la valeur de la constante.

· Une constante nommée utilisée comme deuxième argument pour "indexer" n'est plus contrainte à un
chaîne s'il s'agit d'une référence, d'une expression régulière, dualvar, etc.

· Une constante nommée évaluée à la valeur indéfinie utilisée comme deuxième argument pour
"index" ne produit plus d'avertissements "non initialisés" au moment de la compilation. ça va encore
les produire au moment de l'exécution.

· Lorsqu'un scalaire était renvoyé d'un sous-programme dans @INC, le scalaire référencé était
converti par magie en un objet IO, ce qui peut entraîner des erreurs de "copie bizarre" si
ce scalaire a continué à être utilisé ailleurs. Maintenant, Perl utilise une copie interne du
scalaire à la place.

· Certaines utilisations de l'opérateur "sort" sont optimisées pour modifier un tableau en place, comme par exemple
"@a = trier @a". Lors du tri, le tableau est rendu en lecture seule. Si un bloc de tri
devrait arriver à mourir, alors le tableau est resté en lecture seule même en dehors du "tri". Cette
a été réparé.

· $a et $b à l'intérieur d'un bloc de tri sont des alias vers les arguments réels pour "trier", donc ils
peut être modifié par ces deux variables. Cela n'a pas toujours fonctionné, par exemple pour
lvalue subs et $#ary, et probablement de nombreux autres opérateurs. Ça fonctionne maintenant.

· Les arguments pour "trier" sont maintenant tous dans un contexte de liste. Si le "tri" lui-même s'appelait
dans un contexte vide ou scalaire, alors quelques, mais pas tous, des arguments utilisés pour être nuls
ou contexte scalaire.

· Les prototypes de sous-programmes avec des caractères Unicode supérieurs à U+00FF étaient mutilés pendant
clonage de fermeture. Cela se produirait avec des sous-programmes fermant sur des variables lexicales
déclaré à l'extérieur, et avec des subs lexicaux.

· "UNIVERSAL::can" traite désormais son premier argument de la même manière que les appels de méthode :
Les types globs et les références glob avec des emplacements d'E/S non vides sont traités comme des handles, et
les chaînes sont traitées comme des descripteurs de fichiers, plutôt que des packages, si un descripteur avec ce nom
existe [perl #113932].

· Appels de méthode sur les typeglobs (par exemple, "*ARGV->getline") utilisés pour chaîner le typeglob et
puis recherchez-le à nouveau. Combiné avec les changements de Perl 5.18.0, cela a permis "*foo->bar"
pour appeler des méthodes sur le package "foo" (comme "foo->bar"). Dans certains cas, cela pourrait causer
la méthode à appeler sur le mauvais handle. Maintenant, un argument typeglob est traité comme un
handle (tout comme "(\*foo)->bar"), ou, si son emplacement IO est vide, une erreur est générée.

· Affectation d'une vstring à une variable liée ou à un argument de sous-programme aliasé à un
un élément de hachage ou de tableau inexistant fonctionne maintenant, sans aplatir la vstring en un
chaîne régulière.

· "pos", "tie", "lié" et "untie" ne fonctionnaient pas correctement sur les arguments de sous-programme alias
aux éléments de hachage et de tableau inexistants [perl #77814, #27010].

· L'opérateur de grosse flèche "=>" peut désormais citer des mots-clés intégrés même s'il apparaît sur le
ligne suivante, ce qui la rend cohérente avec la façon dont elle traite les autres mots nus.

· L'autovivification d'un stub de sous-programme via "\&$glob" a commencé à provoquer des plantages dans Perl 5.18.0
si le $glob était simplement une copie d'un vrai glob, c'est-à-dire un scalaire qui avait eu un glob
lui est assigné. Cela a été corrigé. [perle #119051]

· Perl avait l'habitude de divulguer un détail d'implémentation lorsqu'il s'agissait de référencer le retour
valeurs de certains opérateurs. "for ($a+$b) { warn \$_; warn \$_ }" utilisé pour afficher deux
des adresses mémoire différentes, car l'opérateur "\" copiait la variable. En dessous de
builds threadées, cela se produirait également pour les constantes ("XNUMX(1) { ... }"). Cela a été
fixé. [perl #21979, #78194, #89188, #109746, #114838, #115388]

· L'opérateur de plage ".." renvoyait les mêmes scalaires modifiables à chaque appel,
à moins que ce ne soit la seule chose dans un en-tête de boucle "foreach". Cela signifiait que les changements de
les valeurs de la liste renvoyée seraient visibles la prochaine fois que l'opérateur serait
réalisé. [perle #3105]

· Le pliage constant et l'enlignement des sous-programmes ne provoquent plus d'opérations qui
renvoient normalement de nouveaux scalaires modifiables pour renvoyer des valeurs en lecture seule à la place.

· Les fermetures de la forme "sub () { $some_variable }" ne sont plus alignées, ce qui provoque
les modifications apportées à la variable à ignorer par les appelants du sous-programme. [perle #79908]

· Les valeurs de retour de certains opérateurs tels que "ref" seraient parfois partagées entre
appels récursifs au même sous-programme, provoquant la modification de la valeur par l'appel interne
renvoyé par "ref" dans l'appel externe. Cela a été corrigé.

· "__PACKAGE__" et les constantes renvoyant un nom de package ou une clé de hachage sont désormais cohérentes
lecture seulement. Dans diverses versions précédentes de Perl, ils sont devenus modifiables sous certaines conditions.
circonstances.

· L'activation des avertissements « utilisé une fois » ne provoque plus de plantages sur les circularités de cache créées
au moment de la compilation ("*Foo::Bar::Foo:: = *Foo::").

· Les constantes Undef utilisées dans les clés de hachage ("use constant u => undef; $h{+u}") ne sont plus
produire des avertissements "non initialisés" au moment de la compilation.

· La modification d'une cible de substitution à l'intérieur du remplacement de substitution ne provoque plus
des accidents.

· La première instruction à l'intérieur d'une chaîne eval utilisée pour utiliser le mauvais paramètre de pragma
parfois pendant le pliage constant. "eval 'uc chr 0xe0'" choisirait au hasard entre
Sémantique Unicode, octet et locale. Cela a été corrigé.

· La gestion des valeurs de retour des filtres @INC (sous-programmes retournés par les sous-programmes dans
@INC) a été corrigé de diverses manières. Les variables précédemment liées ont été mal gérées, et
définir $_ sur une référence ou un typeglob pourrait entraîner des plantages.

· La fonction XS "SvPVbyte" a été corrigée pour fonctionner avec des scalaires liés retournant
autre chose qu'une chaîne. Il renvoyait utf8 dans les cas où "SvPV"
aurait.

· Perl 5.18.0 a fait planter par inadvertance "--" et "++" sur un standard déréférencé
expressions, et a arrêté "++" d'aplatir les vstrings.

· "bénir" ne meurt plus avec "Impossible de bénir la valeur de non-référence" si son premier argument est
une référence liée.

· "reset" avec un argument ne saute plus les scalaires de copie sur écriture, les expressions régulières,
copies de typeglob et vstrings. De plus, lorsque vous rencontrez ces valeurs ou des valeurs en lecture seule, il
ne saute plus aucun tableau ou hachage du même nom.

· "reset" avec un argument saute maintenant les scalaires aliasés aux typeglobs ("for $z (*foo) {
reset "z" }"). Auparavant, cela corrompait la mémoire ou plantait.

· "ucfirst" et "lcfirst" ne respectaient pas le pragma bytes. C'était une régression
de Perl 5.12. [perl #117355]

· Les modifications apportées à "UNIVERSAL :: DESTROY" mettent désormais à jour les caches DESTROY dans toutes les classes, au lieu de
obligeant les classes qui ont déjà eu des objets détruits à continuer à utiliser l'ancien sous-marin.
Il s'agissait d'une régression dans Perl 5.18. [perl #114864]

· Toutes les occurrences faussement positives connues de l'avertissement d'obsolescence "Utilisation inutile de '\' ;
n'échappe pas au métacaractère '%c'", ajouté dans Perl 5.18.0, ont été supprimés. [perl
#119101]

· La valeur de $^E est maintenant enregistrée dans les gestionnaires de signaux sous Windows. [perle #85104]

· Un descripteur de fichier lexical (comme dans "ouvrir mon $fh...") reçoit généralement un nom basé sur le
package actuel et le nom de la variable, par exemple "main::$fh". En récursivité, le
filehandle perdait la partie "$fh" du nom. Cela a été corrigé.

· Les valeurs non initialisées renvoyées par les XSUB ne sont plus exemptes de non initialisés
mises en garde. [perle #118693]

· "elsif ("")" ne produit plus par erreur d'avertissement concernant le contexte vide. [perle
#118753]

· Passer "undef" à un sous-programme fait maintenant que @_ contient le même undefined en lecture seule
scalaire que "undef" renvoie. De plus, "exists $_[0]" retournera maintenant vrai si
"undef" était le premier argument. [perle #7508, #109726]

· Le passage d'un élément de tableau inexistant à un sous-programme ne l'autovivifie généralement pas
à moins que le sous-programme ne modifie son argument. Cela ne fonctionnait pas correctement avec
indices négatifs et avec des éléments inexistants dans le tableau. L'élément serait
être vivifié immédiatement. La vivification retardée a été étendue pour travailler avec
celles. [perl #118691]

· Affectation de références ou de globs au scalaire renvoyé par $#foo après que le tableau @foo ait
été libéré ne provoque plus d'échecs d'assertion sur les builds de débogage et de fuites de mémoire sur
constructions régulières.

· Sur les plates-formes 64 bits, les plages étendues telles que 1..1000000000000 ne se bloquent plus, mais consomment
toute ta mémoire à la place. [perle #119161]

· "__DATA__" place désormais le descripteur "DATA" dans le bon package, même si le
package a été renommé par affectation glob.

· Lorsque "die", "last", "next", "redo", "goto" et "exit" déroulez le scope, c'est possible
pour "DÉTRUIRE" de manière récursive pour appeler un sous-programme ou un format en cours
sorti. Dans ce cas, parfois les variables lexicales à l'intérieur du sous-titre commenceraient
ayant des valeurs de l'appel externe, au lieu d'être indéfinis comme ils le devraient. Cette
a été réparé. [perl #119311]

· ${^MPEN} n'est plus considéré comme un synonyme de ${^MATCH}.

· Perl essaie maintenant un peu plus fort de renvoyer le numéro de ligne correct dans "(appelant)[2]".
[perle #115768]

· Les numéros de ligne à l'intérieur des opérateurs de type guillemets multilignes sont désormais signalés correctement. [perle
#3643]

· Les directives "#line" à l'intérieur du code intégré dans des opérateurs de type guillemets sont désormais respectées.

· Les numéros de ligne sont maintenant corrects à l'intérieur du deuxième here-doc lorsque deux marqueurs here-doc
se produire sur la même ligne.

· Une optimisation dans Perl 5.18 a fait des hypothèses incorrectes provoquant une mauvaise interaction avec
le module Devel::CallParser CPAN. Si le module a été chargé alors les variables lexicales
déclarée dans des instructions séparées après une liste "my(...)" peut ne pas être effacée sur
sortie de la portée.

· Les appels &xsub et "goto &xsub" permettent maintenant au sous-programme appelé d'autovivifier des éléments de
@_.

· &xsub et "goto &xsub" ne plantent plus si *_ n'a pas été défini et n'a pas d'entrée ARRAY
(c'est-à-dire que @_ n'existe pas).

· &xsub et "goto &xsub" fonctionnent désormais avec @_ lié.

· Les identifiants trop longs ne provoquent plus de débordement de mémoire tampon (et de plantage). Ils ont commencé
le faire en Perl 5.18.

· L'avertissement « Valeur scalaire @hash{foo} mieux écrite sous la forme $hash{foo} » produit désormais beaucoup
moins de faux positifs. En particulier, @hash{+function_returning_a_list} et @hash{ qw
"foo bar baz" } n'avertit plus. La même chose s'applique aux tranches de tableau. [perl #28380,
#114024]

· "$! = EINVAL; waitpid(0, WNOHANG);" ne rentre plus dans une boucle infinie interne.
[perle #85228]

· Une erreur de segmentation possible dans la duplication de descripteurs de fichiers a été corrigée.

· Un sous-programme dans @INC peut renvoyer une référence à un scalaire contenant l'initiale
contenu du fichier. Cependant, ce scalaire a été libéré prématurément s'il n'était pas référencé
ailleurs, donnant des résultats aléatoires.

· "last" ne renvoie plus les valeurs que la même instruction a accumulées jusqu'à présent, ce qui corrige
entre autres choses, le bogue de longue date qui "push @a, last" essaierait de revenir
le @a, le copiant comme un scalaire dans le processus et entraînant l'erreur, "Bizarre
copie de ARRAY en dernier." [perl #3112]

· Dans certains cas, la fermeture des descripteurs de fichiers ouverts pour rediriger vers ou depuis un processus, qui avait
été dupliqué dans un handle standard, appellerait le wrapper waitpid interne de perl
avec un pid de zéro. Avec le correctif pour [perl #85228] ce pid zéro a été passé à
"waitpid", bloquant éventuellement le processus. Cette attente du processus zéro n'est plus
se produit. [perl #119893]

· "select" utilisé pour ignorer la magie sur le quatrième argument (délai d'expiration), conduisant à des effets
tels que "select" bloquant indéfiniment plutôt que le temps de sommeil prévu. Cela a
maintenant été corrigé. [perl #120102]

· Le nom de la classe dans "pour ma classe $foo" est maintenant correctement analysé. Dans le cas de la
deuxième caractère du nom de la classe suivi d'un chiffre (par exemple 'a1b') utilisé pour
donner l'erreur "Manquant $ sur la variable de boucle". [perl #120112]

· Perl 5.18.0 a accidentellement interdit "-bareword" sous "use strict" et "use integer".
Cela a été corrigé. [perl #120288]

· "-a" au début d'une ligne (ou un trait d'union avec une seule lettre qui n'est pas un test de filet
opérateur) ne produit plus une erreur 'L'utilisation de "-a" sans parenthèses est
avertissement ambigu. [perl #120288]

· Le contexte Lvalue est maintenant correctement propagé dans les blocs nus et les blocs "if" et "else"
dans les sous-routines lvalue. Auparavant, les tableaux et les hachages étaient parfois incorrectement
aplati lorsqu'il est renvoyé dans le contexte de la liste lvalue, ou des erreurs de "copie bizarre" peuvent se produire.
[perle #119797]

· Le contexte Lvalue est maintenant propagé aux branches de "||" et "&&" (et leur
équivalents alphabétiques, "ou" et "et"). Cela signifie "foreach (pos $x || pos $y)
{...}" permet désormais de modifier "pos" via $_.

· "stat" et "readline" mémorisent le dernier handle utilisé; le premier pour le "_" spécial
descripteur de fichier, ce dernier pour "${^LAST_FH}". "eval "*foo if 0"" où *foo était le dernier
le descripteur passé à "stat" ou "readline" peut entraîner l'oubli de ce descripteur si le
la poignée n'était pas encore ouverte. Cela a été corrigé.

· Divers cas de "delete $::{a}", "delete $ ::{ENV}" etc. causant un plantage ont été
fixé. [perle #54044]

· Réglage $! à EACCESS avant d'appeler "require" pourrait affecter le comportement de "require".
Cela a été corrigé.

· Le message d'avertissement "Impossible d'utiliser \1 pour signifier $1 dans l'expression" ne se produit désormais que sur le
partie droite (remplacement) d'un remplacement. Auparavant, cela pouvait arriver dans le code
intégré dans le côté gauche, ou dans tout autre opérateur de type guillemet.

· La bénédiction dans une référence ("bless $thisref, $thatref") a longtemps été interdite, mais
les scalaires magiques pour le second comme $/ et ceux à égalité étaient exemptés. Ils ne sont plus
sont. [perle #119809]

· La bénédiction dans une référence était accidentellement autorisée en 5.18 si l'argument de classe était
une référence bénie avec des caches de méthodes obsolètes (c'est-à-dire dont la classe avait des sous-marins définis
depuis le dernier appel de méthode). Ils sont à nouveau interdits, comme au 5.16.

· "$x->{key}" où $x a été déclaré comme "ma classe $x" ne plante plus si un
Le stub du sous-programme Class::FIELDS a été déclaré.

· @$obj{'key'} et "${$obj}{key}" étaient auparavant exemptés de la vérification des champs au moment de la compilation
("No such class field"; voir les champs) mais ne le sont plus.

· Un élément de tableau inexistant avec un grand index passé à un sous-programme qui lie le
array puis tente d'accéder à l'élément n'entraîne plus de plantage.

· La déclaration d'un stub de sous-programme nommé NEGATIVE_INDICES ne crée plus de tableau négatif
les index se bloquent lorsque le package actuel est une classe de tableau lié.

· Déclarer un stub de sous-programme "require", "glob" ou "do" dans le package CORE::GLOBAL ::
ne fait plus planter la compilation des appels aux fonctions correspondantes.

· Aliasing CORE::GLOBAL :: les fonctions vers des constantes ont cessé de fonctionner dans Perl 5.10 mais ont
maintenant été corrigé.

· Lorsque "`...`" ou "qx/.../" appelle un remplacement "readpipe", interpolation entre guillemets doubles
arrive maintenant, comme c'est le cas lorsqu'il n'y a pas de dérogation. Auparavant, la présence d'un
override ferait agir ces opérateurs de type guillemets comme "q{}", supprimant
interpolation. [perl #115330]

· Les here-docs "<<<`...`" (avec des backticks comme délimiteurs) appellent maintenant les substitutions "readpipe".
[perle #119827]

· "&CORE::exit()" et "&CORE::die()" respectent désormais les indications vmsish.

· Dédéfinir un glob qui déclenche une méthode DESTROY qui dédéfinit le même glob est maintenant
en sécurité. Il produisait des avertissements "Tentative de libération d'un pointeur glob non référencé" et
fuite de mémoire.

· Si la redéfinition du sous-programme ("eval 'sub foo{}'" ou "newXS" pour le code XS) déclenche un
La méthode DESTROY sur le sous-marin en cours de redéfinition, et cette méthode attribue un
sous-routine au même emplacement ("*foo = sub {}"), $_[0] ne pointe plus vers un
scalaire libéré. Maintenant, DESTROY est retardé jusqu'à ce que le nouveau sous-programme soit installé.

· Sous Windows, perl n'appelle plus CloseHandle () sur une poignée à douille. Cela fait
le débogage plus facile sur Windows en supprimant certaines exceptions de mauvais handles non pertinentes. Ce
corrige également une condition de concurrence qui faisait échouer les fonctions de socket de manière aléatoire dans un processus Perl
avec plusieurs threads de système d'exploitation et les échecs de test possibles dans
dist/IO/t/cachepropagate-tcp.t. [perl #120091/118059]

· Formats impliquant des chaînes encodées en UTF-8 ou des variables étranges telles que des liens, des surcharges ou
les références stringifiées (et dans les perls récents, les vars NOK pures) feraient généralement le mal
chose dans les formats lorsque la var est traitée comme une chaîne et hachée à plusieurs reprises, comme dans
"^<<<~~" et similaire. Cela a maintenant été résolu. [perle
#33832/45325/113868/119847/119849/119851]

· "semctl(..., SETVAL, ...)" définirait le sémaphore sur les 32 premiers bits du fichier fourni
entier au lieu des 32 bits inférieurs sur les systèmes big-endian 64 bits. [perle #120635]

· "readdir()" ne définit plus que $ ! en cas d'erreur. $! n'est plus défini sur « EBADF » lorsque
la fin de "undef" est lue à partir du répertoire à moins que l'appel système ne définisse $!. [perle
#118651]

· &CORE::glob ne provoque plus de plantage intermittent en raison de l'obtention de la pile de perl
corrompu. [perl #119993]

· "open" avec des couches qui chargent des modules (par exemple, "<:encoding(utf8)") n'exécute plus le
risque de plantage en raison de la corruption de la pile.

· Perl 5.18 a interrompu le chargement automatique via les appels de méthode "->SUPER::foo" en recherchant AUTOLOAD
du package actuel plutôt que de la superclasse du package actuel. Cela a été
fixé. [perle #120694]

· Un bogue de longue date provoquant "do {} jusqu'à CONSTANT", où la constante détient un vrai
valeur, pour lire la mémoire non allouée a été résolu. Cela se produirait généralement après
une erreur de syntaxe. Dans les versions précédentes de Perl, il plantait par intermittence. [perle #72406]

· Réparez HP-UX $ ! échec. HP-UX strerreur() renvoie une chaîne vide pour une erreur inconnue
code. Cela a provoqué l'échec d'une assertion sous les versions DEBUGGING. Maintenant, à la place, le
chaîne renvoyée pour "$!" contient du texte indiquant que le code est pour une erreur inconnue.

· Les éléments liés individuellement de @INC (comme dans "tie $INC[0]...") sont désormais gérés correctement.
Auparavant, si un sous-renvoyé par un tel élément lié serait traité comme un sous-
dépendait si un FETCH avait eu lieu auparavant.

· "getc" sur un handle de la taille d'un octet après que le même opérateur "getc" ait été utilisé sur un utf8
handle utilisé pour traiter les octets comme utf8, ce qui entraîne un comportement erratique (par exemple, malformé
avertissements UTF-8).

· Un "{" initial au début d'une ligne d'argument de format était toujours interprété comme
le début d'un bloc antérieur à la v5.18. Dans Perl v5.18, il a commencé à être traité comme
un signe ambigu. L'analyseur devinerait s'il s'agissait d'un anonyme
constructeur de hachage ou un bloc basé sur le contenu. Maintenant, le comportement précédent a
été restauré. [perl #119973]

· Dans Perl v5.18, "undef *_; goto &sub" et "local *_; goto &sub" ont commencé à planter. Cette
a été réparé. [perl #119949]

· Les backticks (" `` " ou " qx// ") combinés avec plusieurs threads sur Win32 pourraient entraîner
sortie envoyée à stdout sur un thread capturée par des backticks d'une commande externe
dans un autre fil.

Cela peut également se produire pour les processus pseudo-forkés, car le pseudo-fork de Win32 est
implémenté en termes de threads. [perle #77672]

· "open $fh, ">+", undef" ne perd plus de mémoire lorsque TMPDIR est défini mais pointe vers un
répertoire dans lequel un fichier temporaire ne peut pas être créé. [perl #120951]

· " for ( $h{k} || '' ) " ne vivifie plus automatiquement $h{k}. [perl #120374]

· Sur les machines Windows, Perl émule désormais l'utilisation POSIX de l'environnement pour la locale
initialisation. Auparavant, l'environnement était ignoré. Voir "ENVIRONNEMENT" dans
perllocale.

· Correction d'un crash lors de la destruction d'un GLOB auto-référentiel. [perle #121242]

Connu Problèmes


· IO::Socket est connu pour échouer aux tests sur AIX 5.3. il y a un patch
dans le tracker de requêtes, #120835,
qui pourra être appliqué aux versions futures.

· Les modules suivants sont connus pour avoir des échecs de test avec cette version de Perl.
Des correctifs ont été soumis, il y aura donc, espérons-le, de nouvelles versions bientôt :

· Données::Structure::Util version 0.15

· HTML :: StripScripts version 1.05

· Liste : : Rassemblez la version 0.08.

Nécrologie


Diana Rosa, 27 ans, de Rio de Janeiro, est allée à son long repos le 10 mai 2014, avec le
chameau en peluche qu'elle n'arrêtait pas d'accrocher à son écran d'ordinateur. C'était une passionnée
Hacker Perl qui aimait la langue et sa communauté, et qui n'a jamais raté un événement Rio.pm.
C'était une véritable artiste, passionnée par l'écriture de code, le chant d'airs et le graffiti
des murs. Nous ne vous oublierons jamais.

Greg McCarroll est décédé le 28 août 2013.

Greg était bien connu pour de nombreuses bonnes raisons. Il a été l'un des organisateurs de la première
YAPC::Europe, qui s'est conclu par une vente aux enchères imprévue où il a désespérément tenté de
collecter des fonds supplémentaires pour éviter que la conférence ne fasse une perte. C'est Greg qui par erreur
arrivé pour une réunion london.pm avec une semaine de retard ; quelques années plus tard, c'est lui qui vendit le
choix de la date de réunion officielle lors d'une vente aux enchères YAPC::Europe, et finalement aussi glorieuse
leader de london.pm, il a hérité de la confusion irrévérencieuse qu'il avait créée.

Toujours serviable, amical et joyeusement optimiste, vous nous manquerez, mais jamais
oublié.

Remerciements


Perl 5.20.0 représente environ 12 mois de développement depuis Perl 5.18.0 et
contient environ 470,000 lignes de modifications dans 2,900 fichiers de 124 auteurs.

À l'exclusion des fichiers générés automatiquement, de la documentation et des outils de publication, il y avait environ
280,000 1,800 lignes de modifications sur XNUMX fichiers .pm, .t, .c et .h.

Perl continue de prospérer dans sa troisième décennie grâce à une communauté dynamique d'utilisateurs
et développeurs. Les personnes suivantes sont connues pour avoir contribué aux améliorations qui
est devenu Perl 5.20.0 :

Aaron Crane, Abhijit Menon-Sen, Abigail, Abir Viqar, Alan Haggai Alavi, Alan Hourihane,
Alexander Voronov, Alexandr Ciornii, Andy Dougherty, Anno Siegel, Aristote Pagaltzis,
Arthur Axel 'fREW' Schmidt, Brad Gilbert, Brendan Byrd, Brian Childs, Brian Fraser, Brian
Gottreu, Chris 'BinGOs' Williams, Christian Millour, Colin Kuskie, Craig A. Berry, Dabrien
'Dabe' Murphy, Dagfinn Ilmari Mannsaaker, Daniel Dragan, Darin McBride, David Golden,
David Leadbeater, David Mitchell, David Nicol, David Steinbrunner, Dennis Kaarsemaker,
Dominic Hargreaves, Ed Avis, Eric Brine, Evan Zacks, Père Chrysostomos, Florian Ragwitz,
François Perrad, Gavin Shelley, Gideon Israel Dsouza, Gisle Aas, Graham Knop, H.Merijn
Marque, Hauke ​​D, Heiko Eissfeldt, Hiroo Hayashi, Hojung Youn, James E Keenan, Jarkko
Hietaniemi, Jerry D. Hedden, Jess Robinson, Jesse Luehrs, Johan Vromans, John Gardiner
Myers, John Goodyear, John P. Linderman, John Peacock, kafka, Kang-min Liu, Karen
Etheridge, Karl Williamson, Keedi Kim, Kent Fredric, Kevin Dawson, Kevin Falcone, Kevin
Ryde, Leon Timmermans, Lukas Mai, Marc Simpson, Marcel Gruenauer, Marco Peereboom, Marcus
Holland-Moritz, Mark Jason Dominus, Martin McGrath, Matthew Horsfall, Max Maischein, Mike
Doherty, Moritz Lenz, Nathan Glenn, Nathan Trapuzzano, Neil Bowers, Neil Williams,
Nicholas Clark, Niels Thykier, Niko Tyni, Olivier Mengue, Owain G. Ainsworth, Paul Green,
Paul Johnson, Peter John Acklam, Peter Martini, Peter Rabbitson, Petr PisaX, Philip
Boulain, Philip Guenther, Piotr Roszatycki, Rafael Garcia-Suarez, Reini Urban, Ruben
Thomas, Ricardo Signes, Ruslan Zakirov, Sergey Alekseev, Shirakata Kentaro, Shlomi Fish,
Slaven Rezic, Smylers, Steffen Mueller, Steve Hay, Sullivan Beck, Thomas Sibley, Tobias
Leich, Toby Inkster, Tokuhiro Matsuno, Tom Christiansen, Tom Hukins, Tony Cook, Victor
Efimov, Viktor Turskyi, Vladimir Timofeev, YAMASHINA Hio, Yves Orton, Zefram, Zsban
Ambrus, AEvar Arnfjoer` Bjarmason.

La liste ci-dessus est presque certainement incomplète car elle est générée automatiquement à partir de
historique du contrôle de version. En particulier, il n'inclut pas les noms des (beaucoup
apprécié) les contributeurs qui ont signalé des problèmes au traqueur de bogues Perl.

La plupart des changements inclus dans cette version proviennent des modules CPAN inclus dans
Le noyau de Perl. Nous sommes reconnaissants à l'ensemble de la communauté CPAN d'avoir aidé Perl à prospérer.

Pour une liste plus complète de tous les contributeurs historiques de Perl, veuillez consulter le AUTEURS
dans la distribution source Perl.

Reporting Bugs


Si vous trouvez ce que vous pensez être un bogue, vous pouvez consulter les articles récemment publiés sur le
groupe de discussion comp.lang.perl.misc et la base de données de bogues perl sur http://rt.perl.org/perlbug/ .
Il peut également y avoir des informations sur http://www.perl.org/ , la page d'accueil de Perl.

Si vous pensez avoir un bogue non signalé, veuillez exécuter le programme perlbug inclus avec
votre libération. Assurez-vous de réduire votre bogue à un cas de test minuscule mais suffisant. Votre bogue
rapport, avec la sortie de "perl -V", sera envoyé à [email protected] être
analysés par l'équipe de portage de Perl.

Si le bogue que vous signalez a des implications de sécurité, ce qui rend inapproprié
envoyer à une liste de diffusion publiquement archivée, alors veuillez l'envoyer à
[email protected]. Cela pointe vers un envoi fermé et non archivé
liste, qui comprend tous les principaux commiters, qui seront en mesure d'aider à évaluer l'impact
des problèmes, trouver une résolution et aider à coordonner la publication des correctifs pour
atténuer ou résoudre le problème sur toutes les plates-formes sur lesquelles Perl est pris en charge. S'il vous plaît seulement
utilisez cette adresse pour les problèmes de sécurité dans le noyau Perl, pas pour les modules indépendamment
distribué sur CPAN.

Utilisez perl5200delta en ligne à l'aide des services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

  • 1
    passe authentifié
    passe authentifié
    AuthPass est un mot de passe open source
    gestionnaire avec le soutien du populaire et
    Keepass éprouvé (kdbx 3.x ET kdbx 4.x ...
    Télécharger le pass d'authentification
  • 2
    Zabbix
    Zabbix
    Zabbix est un logiciel ouvert de classe entreprise
    source solution de surveillance distribuée
    conçu pour surveiller et suivre
    performances et disponibilité du réseau
    serveurs, appareil...
    Télécharger Zabbix
  • 3
    KDiff3Name
    KDiff3Name
    Ce référentiel n'est plus maintenu
    et est conservé à des fins d'archivage. Voir
    https://invent.kde.org/sdk/kdiff3 for
    le code le plus récent et
    https://download.kde.o...
    Télécharger KDiff3
  • 4
    Chargeur USBGX
    Chargeur USBGX
    USBLoaderGX est une interface graphique pour
    Le chargeur USB de Waninkoko, basé sur
    libwigui. Il permet de répertorier et
    lancer des jeux Wii, des jeux Gamecube et
    homebrew sur Wii et WiiU...
    Télécharger USBLoaderGX
  • 5
    Firebird
    Firebird
    Firebird RDBMS offre des fonctionnalités ANSI SQL
    & fonctionne sous Linux, Windows &
    plusieurs plates-formes Unix. Fonctionnalités
    excellente simultanéité et performances
    & Puissance...
    Télécharger Firebird
  • 6
    KompoZer
    KompoZer
    KompoZer est un éditeur HTML wysiwyg utilisant
    la base de code de Mozilla Composer. Comme
    Le développement de Nvu a été arrêté
    en 2005, KompoZer corrige de nombreux bugs et
    ajoute un f...
    Télécharger KompoZer
  • Plus "

Commandes Linux

Ad