condensé de perldelta
seulement les changements les plus marquants
planification des versions
une version majeure par an (Q2)
des versions mineures tous les 2-3 mois
cycle de dépréciation court
avertissement pendant quelques versions majeures
suppression à la version majeure suivante
modules retirés envoyés sur le CPAN
5.16.0 le 12 mai 2012
5.18.0 le 18 mai 2013
5.20.0 le 16 mai 2014
5.22.0 le 1er juin 2015
5.24.0 le 9 mai 2016
5.24.0 le 9 mai 2016
principales nouveautés :
déréférencement postfixé n'est plus expérimental
regexps : \b{lb}
, \b{wb}
regexps : détection d'erreurs à la compilation
autoderef
, my $_
retirés
5.26.0 le 30 mai 2017
principales nouveautés :
"."
n'est plus dans @INC
documents ici-même indentables : <<~"EOF"
regexps : /xx
; {^CAPTURE}
, %{^CAPTURE}
, et %{^CAPTURE_ALL}
5.28.0 le 20 mai 2018
principales nouveautés :
assertion de continuité de script (*script_run:pattern)
delete
sur des tranches ; perl -i
plus sûr
fonctions plus stockées dans des typeglobs
r̶e̶f̶o̶n̶t̶e̶ ̶d̶u̶ ̶s̶m̶a̶r̶t̶m̶a̶t̶c̶h̶ ̶e̶t̶ ̶d̶u̶ ̶s̶w̶i̶t̶c̶h̶
5.30.0 le 22 mai 2019
5.26 n'est plus officiellement supportée
5.30.1 probablement vers septembre-octobre 2019
5.30.2 probablement vers mars-avril 2020
beaucoup de choses absconses liées à Unicode et aux expressions régulières
assertions positive et négative de recherche alentours supportent (partiellement) un motif de longueur variable
(?<=pattern)
et (?<!pattern)
(plus de détails sur ce sujet plus tard)
limite n
dans le quantifieur {m,n}
doublée à 65 534
qr'\N{name}'
est maintenant supporté
début d'implémentation de UTS #18 RL2.6 Wildcards in Property Values
\p{name=/VARIA(TION|NT)/}
-- caractères dont le nom contient VARIATION
ou VARIANT
\p{numeric_value=/\A[0-5]\z/}
-- chiffres dont la valeur est entre 0 et 5
Unicode 11.0.0 (5 juin 2018)
ajout de 684 caractères et 7 systèmes d'écriture
Dogra (60), Gunjala Gondi (63), Hanifi Rohingya (50), Makasar (25), Medefaidrin (91), Old Sogdian (40), Sogdian (42)
copyleft ; demi-étoiles ; symboles astrologiques
66 nouveaux emojis
Unicode 11.0.0 (5 juin 2018)
Unicode 12.0.0 (5 mars 2019)
ajout de 554 caractères et 4 systèmes d'écriture
Elymaic (23), Nandinagari (65), Nyiakeng Puachue Hmong (71), Wancho (59)
61 nouveaux emojis
reste encore une différence dans la gestion de certains espaces et de la propriété Word_Break
Unicode 12.0.0 (5 mars 2019)
Unicode 12.1.0 (7 mai 2019)
ajout du caractère U+32FF SQUARE ERA NAME REIWA
locale turque gérée de manière transparente :
uc(i) → İ (U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE) lc(I) → ı (U+0131 LATIN SMALL LETTER DOTLESS)
(?<=pattern)
et (?<!pattern)
(?<=pattern)
zero-width positive lookbehind assertion
exemple : /(?<=\t)\w+/
cherche un mot après une tabulation
(?<!pattern)
zero-width negative lookbehind assertion
exemple : /(?<!bar)foo/
cherche "foo"
qui ne suit pas "bar"
(?<=pattern)
et (?<!pattern)
motif doit être de longueur fixe :
say $& if "aaabbb" =~ /(?<=aa?)b+/; # Variable length lookbehind not implemented in regex m/(?<=aa?)b+/
(?<=pattern)
et (?<!pattern)
depuis 5.10, une forme de contournement avec \K
:
say $& if "aaabbb" =~ /aa?\Kb+/; say $& if "aaabbb" =~ /a+\Kb+/; # bbb
limite : uniquement en début de chaîne
(?<=pattern)
et (?<!pattern)
technique trouvée en février 2019 par Grimy
http://www.drregex.com/2019/02/variable-length-lookbehinds-actually.html
(?=(?'a'[\s\S]*))(?'b'pattern(?=\k'a'\z)|(?<=(?=x^|(?&b))[\s\S]))
(?<=pattern)
et (?<!pattern)
à partir de 5.30, support limité de motif de longueur variable
say $& if "aaabbb" =~ /(?<=a{1,10})b+/; # bbb
longueur inférieure à 255 caractères
say $& if "aaabbb" =~ /(?<=a+)b+/; # Lookbehind longer than 255 not implemented in regex m/(?<=a+)b+/
(?<=pattern)
et (?<!pattern)
formes alphabétiques :
(?<=pattern)
→ (*plb:pattern)
ou (*positive_lookbehind:pattern)
(?<!pattern)
→ (*nlb:pattern)
ou (*negative_lookbehind:pattern)
(?<=pattern)
et (?<!pattern)
...
maintenant fatal :
assigner à $[
une valeur autre que zéro (5.12)
assigner à $*
et $#
(5.10)
accolade ouvrante non protégée ({
) dans les regexps (5.20)
my $x if 0
(5.10)
dump()
au lieu de CORE::dump()
(5.8)
maintenant fatal :
File::Glob::glob()
au lieu de File::Glob::bsd_glob()
(5.8)
pack()
ne peut plus renvoyer une chaîne UTF-8 avec des séquences mal formées
utliser sysread()
, syswrite()
, send()
ou recv()
sur un descripteur avec :utf8
(5.24)
utilisation de délimiteurs qui ne sont pas des graphèmes
retirés de la distribution standard :
B::Debug
, Locale::Codes
traduction UTF-8 vers code point plus rapide car maintenant faite par un DFA
quelques petites optimisations de cas particuliers dans les regexps