],
release => '2000-03-23',
distro => {
- debian => 'woody',
+ debian => '3.0', # woody 2002-07 eol 2006-06
rhel => '2', # v5.6.0; also in red hat 7.0
solaris => '9', # v5.6.1; 2002-05 eol 2014-10
aix => '5.1', # 2001-05 eol 2006-04
opensuse => '7.1', # 2001-01
},
+ versum => 'start of modern compatibility',
unicode => '3.0.1',
},
],
release => '2002-07-18',
distro => {
- debian => 'sarge',
+ debian => '3.1', # sarge 2005-06 eol 2008-03, v5.8.8 in etch 2007-04 eol 2010-02
rhel => '3', # v5.8.0; v5.8.8 in RHEL6 (2007-2014)
solaris => '10', # v5.8.4; 2005-01 eol 2021-01
centos => '3-5', # v5.8.0 in v3 (2004-03); v5.8.8 in v5 (eol 2017-03)
freebsd => '4-6',
opensuse => '8.1', # 2002-09 eol (SLES8 2002-10 eol 2007-12 ltss 2009-12)
},
- distrosum => "dinosaur platforms such as Solaris 10, AIX 5.2, RHEL 3, SLES 8",
+ distrosum => "RHEL 3, SLES 8, AIX 5/6 until 2017, Solaris 10 until 2021",
+ versum => 'stable minimum during 20[01]\d',
support => '2021-01', # solaris
unicode => '3.2.0',
},
aix => '7.1', # v5.10.1 (2010-09 eol 2023-04)
opensuse => '11.0', # 2008-06 (SLES11 2009-03 eol 2019-03 ltss 2022-03)
},
- distrosum => "dinosaur platforms such as AIX 7.1, SLES 11, RHEL 6, Solaris 11",
+ distrosum => "SLES 11 until 2022, RHEL 6 until 2020 or commercially 2024, AIX 7.1 until 2023",
+ versum => "supported commercially until 2024",
support => '2024-11', # aix
unicode => '5.0.0',
},
ubuntu => '12.04',
opensuse => '12.1', # 2011-11 (SLES12 2014-10 eol 2024-10 ltss 2027-10)
},
- distrosum => "stable servers such as Debian 7, Ubuntu 12.04, CentOS 7",
+ distrosum => "Debian 7 until 2020, Ubuntu 12.04, SLES 12 until 2027",
support => '2027-10', # suse
unicode => '6.0+#8',
},
aix => '7.2', # 2015-12 eol 2028?
opensuse => '13.2', # 2014-11 eol 2017-01
},
- distrosum => "legacy servers such as Debian 8, Ubuntu 14.10, FreeBSD 10, openSUSE 13.2, AIX 7.2",
+ distrosum => "Debian 8 until 2025, Ubuntu 14.10, openSUSE 13.2, AIX 7.2",
+ versum => "extended vendor support 202X",
},
v5.22 => {
use Time::Piece;
use Time::Seconds;
+ my @versions = sort keys %{$info};
my $now = Time::Piece->new;
$now = $now->strptime($_, '%Y-%m-%d') for $get{at} // ();
+ # perlpolicy: «We "officially" support the two most recent stable release
+ # series. [...] we will attempt to fix critical issues»
+ $info->{ $versions[-2] }{versum} //= "active core support";
+ $info->{ $versions[-1] }{versum} //= "latest stable release";
+
+ # perlpolicy: «we will attempt to fix critical issues in the two most
+ # recent stable 5.x release series»
my $coreeol = ($now - ONE_YEAR * 3)->strftime('%F');
- my $vcore = first { $info->{$_}{release} ge $coreeol } sort keys %{$info};
+ my $vcore = first { $info->{$_}{release} ge $coreeol } @versions;
print "<p>Core security support is provided for 3 years";
print ", so typical users should run at least ", linkversion($_)
for $vcore // ();
say '.';
+ $info->{$vcore}{versum} //= "official security patches";
+ # «We encourage vendors to ship the most recent supported release of Perl
+ # at the time of their code freeze» with debian&ubuntu having 5 years LTS
my $vendoreol = ($now - ONE_YEAR * 5)->strftime('%F');
my $vdebian = first {
$info->{$_}{release} ge $vendoreol && $info->{$_}{distro}{debian}
- } sort keys %{$info};
+ } @versions;
say sprintf "Stable distributions such as Debian %s maintain %s+.",
$info->{$_}{distro}{debian}, linkversion($_) for $vdebian // ();
+ $info->{$vdebian}{versum} //= "still maintained by common vendors";
+ # extended support given at random
my $nowcmp = $now->strftime('%F');
- my $vdino = first { $info->{$_}{support} ge $nowcmp } sort keys %{$info};
+ my $vdino = first { $info->{$_}{support} ge $nowcmp } @versions;
say "Enterprise platforms retain versions up to $_."
for map { linkversion($_) } $vdino // ();
return 1;
defined $verrow->{unstable} and next unless exists $get{v};
say sprintf '<div class="section" id="%s">', vname($vernum);
- say sprintf '<h2>%vd <small>%s</small></h2>', $vernum, $verrow->{release};
+ my $title = $verrow->{release} // '?';
+ $title .= ": $_" for $verrow->{versum} // ();
+ say sprintf '<h2>%vd <small>%s</small></h2>', $vernum, $title;
say '<dl>';
for (@{ $verrow->{new} }) {
my ($topic, $desc, $attr) = @{$_};