use utf8;

+{
	v5.6 => {
		new => [
			['<code>use warnings</code>'],
			['<code>use utf8</code>'],
			['<code>\N{named character}</code>'],
			['<code>our</code>'],
			['<code>v1.2.3</code>'],
			['<code>sub :locked :method</code>'],
			['<code>open $fh, $mode, $expr</code>'],
		],
		release => '2000-03-23',
		distro => {
			debian => 'woody',
			redhat => '2.1',
			solaris => '9', # 2002-05 eol 2014-10
		},
		unicode => '3.0.1',
	},

	v5.8 => {
		new => [
			[q`<code>no utf8; $unicode</code>`, 'unicode overhaul: additional /\p{}/ properties'],
			[q`<code>binmode $fh, ':perlio'</code>`, 'file handle behaviour altered by PerlIO layers'],
			[q`<code>open $fh, '-|', @cmd</code>`, 'open list to fork a command without spawning a shell'],
			[q`<code>open $fh, '>', \$var</code>`, 'perl scalars as virtual files'],
			[q`<code>printf '%1$s', @args</code>`, 'syntax to use parameters out of order'],
			[q`<code>1_2_3 == 123</code>`, 'underscores between digits allowed in numeric constants'],
#			[q`<code>use if</code>`, 'conditional module inclusion'], # also installable in earlier versions
		],
		release => '2002-07-18',
		distro => {
			debian => 'sarge',
			redhat => '3.9',
			solaris => '10', # v5.8.4; 2005-01 eol 2021-01
		},
		unicode => '3.2.0',
	},

	v5.10 => {
		new => [
			['<code>//</code>', 'defined-or operator'],
			['<code>~~</code>', 'smart-match operator to compare different data types <small>(updated in v5.10.1)</small>'],
			['<code>given</code>', 'switch statement to smart-match with <code>when</code>/<code>default</code>'],
			['<code>/(?&lt;name>)/</code>', 'named capture buffers into <code>%+</code>'],
			['<code>s/keep\K//</code>', 'floating positive lookbehind, efficient alternative for <code>s/(keep)/$1/</code>'],
			['<code>/\v/, /\h/</code>', 'vertical and horizontal whitespace escapes'],
			['<code>my $_</code>', 'lexically scoped version of the default variable'],
		],
		release => '2007-12-18',
		distro => {
			debian => 'lenny',
			redhat => '6.5',
		},
		unicode => '5.0.0',
	},

	v5.12 => {
		new => [
			['<code>package version</code>', '<code>package</code> NAME VERSION shorthand for <code>our $VERSION</code>'],
			['<code>...</code>', 'yada-yada operator: code placeholder'],
			['<code>use 5.012</code>', 'Implicit <code>strict</code> if use VERSION >= v5.12'],
			['<code>… when</code>', '<code>when</code> is now allowed to be used as a statement modifier'],
			[q(<code>use overload 'qr'</code>), 'customisable conversion to regular expressions'],
			['<code>/\N/</code>', 'inverse \n to match any character except newline regardless of <code>/s</code>'],
		],
		release => '2010-04-12',
		unicode => '5.2',
		distro => {
			solaris => '11', # also v5.8.4; 2010-11 eol 2024-11
		},
	},

	v5.14 => {
		new => [
			['<code>s///r</code>', 'non-destructive substitution'],
			['<code>/(?^)/</code>', 'construct to reset to default modifiers'],
			['<code>/(?{ m// })/</code>', 'regular expressions can be nested in <code>/(?{})/</code> and <code>/(??{})/</code>'],
			["<code>use re '/flags'</code>", 'customize default modifiers'],
			['<code>each $ref</code> e.a.', 'array and hash container functions accept references'],
			['<code>FH->method</code>', 'filehandle method calls load IO::File on demand (eg. <code>STDOUT->flush</code>)'],
		],
		release => '2011-05-14',
		distro => {
			debian => 'wheezy',
		},
		unicode => '6.0+#8',
	},

	v5.16 => {
		new => [
			['<code>__SUB__</code>', 'current subroutine reference'],
			['<code>fc, "\F"</code>', 'unicode foldcase to compare case-insensitively'],
			['<code>"\N{}"</code>', 'automatic <code>use charnames qw( :full :short )</code>'],
		],
		release => '2012-05-20',
		distro => {
			redhat => '7.0',
		},
		unicode => '6.1',
	},

	v5.18 => {
		new => [
			['<code>${^LAST_FH}</code>', 'last read filehandle (used by <code>$.</code>)'],
			['<code>/(?[ a + b ])/</code>', 'regex set operations (character substraction <code>-</code>, unions <code>&amp;</code>)'],
			['<code>my sub foo</code>', 'lexical subroutines (also state, our)'],
			['<code>next $expression</code>', 'loop controls allow runtime expressions'],
			[q(<code>no warnings 'experimental::…'</code>), 'mechanism for experimental features, as of now required for smartmatch'],
		],
		release => '2013-05-18',
		unicode => '6.2',
	},

	v5.20 => {
		new => [
			['<code>sub ($var)</code>', 'subroutine signatures'],
			['<code>%hash{…}</code>', 'hash slices return key+value pairs'],
			['<code>[]->@*</code>', 'postfix dereferencing (also e.g. <code>$scalar->$*</code> for <code>$$scalar</code>)'],
			[q(<code>use warnings 'once'; $a</code>), 'variables $a and $b are exempt from <em>used once</em> warnings'],
		],
		unicode => '6.3',
		release => '2014-05-27',
		distro => {
			debian => 'jessie',
		},
	},
}
