['<code><<>></code>', 'safe <code>readline</code> ignoring open flags in arguments'],
['<code>/()/n</code>', 'flag to disable numbered capturing, turning <code>()</code> into <code>(?:)</code>'],
['<code>/\b{}/</code>', 'boundary types: <em>gcb</em> (grapheme cluster), <em>sb</em> (sentence), <em>wb</em> (word)'],
- ['<code>&.</code>', '<code>& | ^ ~</code> consistently numeric, dotted operators for strings', {experimental => 'bitwise'}],
+ ['<code>&.</code>', '<code>& | ^ ~</code> consistently numeric, dotted operators for strings', {feature => 'bitwise', experimental => 'bitwise', stable => v5.28}],
[q"<code>use re 'strict'</code>", 'apply stricter syntax rules to regular expression patterns', {experimental => 're_strict'}],
['<code>0x.beep+0</code>', q"hexadecimal floating point notation with binary power; <code>printf '%a'</code> to display"],
],
ubuntu => '17.10', # artful
},
},
+
+ v5.28 => {
+ new => [
+ ['<code>delete %hash{…}</code>', 'hash slices can be deleted with key+value pairs'],
+ ['<code>/(*…)/</code>', 'alphabetic synonyms for assertions, e.g. <code>(*atomic:…)</code> for <code>(?>…)</code> and <code>(*nlb:…)</code> for <code>(?<!…)</code>', {experimental => 'alpha_assertions', stable => v5.31.6}],
+ ['<code>/(*script_run:)/</code>', 'enforces all characters to be from the same script', {experimental => 'script_run', stable => v5.31.6}],
+ ['<code>state @a</code>', 'persistent lexical array or hash variables'],
+ ['<code>perl -i -pe die</code>', 'safe in-place editing: files are replaced only after successful completion'],
+ ['<code>${^SAFE_LOCALES}</code>', 'locales are thread-safe on supported systems, indicated by this variable'],
+ ],
+ unicode => '10.0',
+ release => '2018-06-22',
+ distro => {
+ },
+ },
+
+ v5.30 => {
+ new => [
+ ['<code>/(?<=var+)</code>', 'variable length lookbehind assertions', {experimental => 'vlb'}],
+ ['<code>m(\p{nv=/.*/})</code>', 'match unicode properties by regular expressions', {experimental => 'uniprop_wildcards'}],
+ ['<code><s>my $state if 0</s></code>', 'workaround for <code>state</code> (deprecated since v5.10!) is now prohibited'],
+ [q"<code>qr'\N'</code>", 'Delimiters must be graphemes; unescaped { illegal; \N in single quotes'],
+ ],
+ unicode => '12.1',
+ release => '2019-05-22',
+ },
+
+ v5.32 => {
+ new => [
+ ['<code>isa</code>', 'infix operator to check class instance'],
+ [q"<code>open F, '+>>', undef</code>", 'respect append mode on temporary files with mixed access'],
+ ['streamzip', 'program distributed with core IO::Compress::Base'],
+ ],
+ # https://www.effectiveperlprogramming.com/2020/01/perl-v5-32-new-features/
+ unicode => '13.0',
+ },
}