Subject: [RFC/PATCH] perl: bump the required Perl version to 5.10.0 from 5.8.0

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Sat, 23 Dec 2017 17:44:00 +0000

In late 2010 I bumped our perl version dependency from 5.6.* to
5.8.0[1]. Git had been failing for a while on <5.8, and it was
suspected that nobody cared enough to keep using it, which turned out
to be true.

Follow that up with bumping the dependency to 5.10.0. The 5.8.0
release was released in 2002, and the 5.10.0 release just turned 10
years old[2].

This is similar to Jeff King's jk/drop-ancient-curl series in that
we're dropping perl releases that are rarely tested anymore, however
unlike those patches git still works on e.g. 5.8.8 (I couldn't build
anything older).

The reason to do this is to be able to use features released with perl
in the last decade, 5.10 was a major feature release including things
like new regex features, state variables, the defined-or operator
etc.[3]

I expect this to be more controversial as since the 5.8 release stayed
along for longer in various distributions, e.g. it's the version
shipped with RHEL 5, replaced by 5.10 in RHEL 6 released in late 2010,
similarly the first Debian release to include 5.10 was 5.0 (Lenny)
released in early 2009. The release history for other distributions
can be seen on CPAN's "Perl Binaries" page[3].

1. d48b284183 ("perl: bump the required Perl version to 5.8 from
   5.6.[21]", 2010-09-24)

2. "perldoc perlhist" (https://metacpan.org/pod/distribution/perl/pod/perlhist.pod)

3. "perldoc perl5100delta" (https://metacpan.org/pod/distribution/perl/pod/perl5100delta.pod)

3. http://www.cpan.org/ports/binaries.html

Signed-off-by: Ævar Arnfjörð Bjarmason <[email-masked]>
---

RFC because this'll need to be adjusted for my cooking Makefile.PL
changes, and because the patch is obviously "correct", so the question
is "do we want to do this". Discuss.

 contrib/diff-highlight/DiffHighlight.pm | 2 +-
 contrib/examples/git-difftool.perl      | 2 +-
 contrib/mw-to-git/Git/Mediawiki.pm      | 2 +-
 git-add--interactive.perl               | 2 +-
 git-archimport.perl                     | 2 +-
 git-cvsexportcommit.perl                | 2 +-
 git-cvsimport.perl                      | 2 +-
 git-cvsserver.perl                      | 2 +-
 git-send-email.perl                     | 2 +-
 git-svn.perl                            | 2 +-
 gitweb/gitweb.perl                      | 2 +-
 perl/Git.pm                             | 2 +-
 perl/Git/I18N.pm                        | 2 +-
 perl/Git/Packet.pm                      | 2 +-
 t/t0021/rot13-filter.pl                 | 2 +-
 t/t0202/test.pl                         | 2 +-
 t/t9000/test.pl                         | 2 +-
 t/t9700/test.pl                         | 2 +-
 t/test-terminal.perl                    | 2 +-
 19 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/contrib/diff-highlight/DiffHighlight.pm b/contrib/diff-highlight/DiffHighlight.pm
index 663992e530..21fe5d424f 100644
--- a/contrib/diff-highlight/DiffHighlight.pm
+++ b/contrib/diff-highlight/DiffHighlight.pm
@@ -1,6 +1,6 @@
 package DiffHighlight;
 
-use 5.008;
+use v5.10.0;
 use warnings FATAL => 'all';
 use strict;
 
diff --git a/contrib/examples/git-difftool.perl b/contrib/examples/git-difftool.perl
index df59bdfe97..13c44846a8 100755
--- a/contrib/examples/git-difftool.perl
+++ b/contrib/examples/git-difftool.perl
@@ -10,7 +10,7 @@
 #
 # Any arguments that are unknown to this script are forwarded to 'git diff'.
 
-use 5.008;
+use v5.10.0;
 use strict;
 use warnings;
 use Error qw(:try);
diff --git a/contrib/mw-to-git/Git/Mediawiki.pm b/contrib/mw-to-git/Git/Mediawiki.pm
index 917d9e2d32..5b620b8425 100644
--- a/contrib/mw-to-git/Git/Mediawiki.pm
+++ b/contrib/mw-to-git/Git/Mediawiki.pm
@@ -1,6 +1,6 @@
 package Git::Mediawiki;
 
-use 5.008;
+use v5.10.0;
 use strict;
 use POSIX;
 use Git;
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 28b325d754..b59c9eaf30 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-use 5.008;
+use v5.10.0;
 use strict;
 use warnings;
 use Git qw(unquote_path);
diff --git a/git-archimport.perl b/git-archimport.perl
index b7c173c345..7d13f7ef16 100755
--- a/git-archimport.perl
+++ b/git-archimport.perl
@@ -54,7 +54,7 @@ and can contain multiple, unrelated branches.
 
 =cut
 
-use 5.008;
+use v5.10.0;
 use strict;
 use warnings;
 use Getopt::Std;
diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl
index d13f02da95..c50d981208 100755
--- a/git-cvsexportcommit.perl
+++ b/git-cvsexportcommit.perl
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-use 5.008;
+use v5.10.0;
 use strict;
 use warnings;
 use Getopt::Std;
diff --git a/git-cvsimport.perl b/git-cvsimport.perl
index 36929921ea..7d4dd07d35 100755
--- a/git-cvsimport.perl
+++ b/git-cvsimport.perl
@@ -13,7 +13,7 @@
 # The head revision is on branch "origin" by default.
 # You can change that with the '-o' option.
 
-use 5.008;
+use v5.10.0;
 use strict;
 use warnings;
 use Getopt::Long;
diff --git a/git-cvsserver.perl b/git-cvsserver.perl
index ae1044273d..ddb423dbc2 100755
--- a/git-cvsserver.perl
+++ b/git-cvsserver.perl
@@ -15,7 +15,7 @@
 ####
 ####
 
-use 5.008;
+use v5.10.0;
 use strict;
 use warnings;
 use bytes;
diff --git a/git-send-email.perl b/git-send-email.perl
index edcc6d3469..3f162b6bae 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -16,7 +16,7 @@
 #    and second line is the subject of the message.
 #
 
-use 5.008;
+use v5.10.0;
 use strict;
 use warnings;
 use POSIX qw/strftime/;
diff --git a/git-svn.perl b/git-svn.perl
index d2404184ba..c50ceab533 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 # Copyright (C) 2006, Eric Wong <[email-masked]>
 # License: GPL v2 or later
-use 5.008;
+use v5.10.0;
 use warnings;
 use strict;
 use vars qw/	$AUTHOR $VERSION
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 2417057f2b..25178a31f7 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -7,7 +7,7 @@
 #
 # This program is licensed under the GPLv2
 
-use 5.008;
+use v5.10.0;
 use strict;
 use warnings;
 # handle ACL in file access tests
diff --git a/perl/Git.pm b/perl/Git.pm
index ffa09ace92..768653f2a6 100644
--- a/perl/Git.pm
+++ b/perl/Git.pm
@@ -7,7 +7,7 @@ Git - Perl interface to the Git version control system
 
 package Git;
 
-use 5.008;
+use v5.10.0;
 use strict;

diff --git a/perl/Git/I18N.pm b/perl/Git/I18N.pm
index 836a5c2382..1d4dce687f 100644
--- a/perl/Git/I18N.pm
+++ b/perl/Git/I18N.pm
@@ -1,5 +1,5 @@
 package Git::I18N;
-use 5.008;
+use v5.10.0;
 use strict;
 use warnings;
 BEGIN {
diff --git a/perl/Git/Packet.pm b/perl/Git/Packet.pm
index b75738bed4..4a1491a1dd 100644
--- a/perl/Git/Packet.pm
+++ b/perl/Git/Packet.pm
@@ -1,5 +1,5 @@
 package Git::Packet;
-use 5.008;
+use v5.10.0;
 use strict;
 use warnings;
 BEGIN {
diff --git a/t/t0021/rot13-filter.pl b/t/t0021/rot13-filter.pl
index f1678851de..be6177f564 100644
--- a/t/t0021/rot13-filter.pl
+++ b/t/t0021/rot13-filter.pl
@@ -30,7 +30,7 @@
 #     to the "list_available_blobs" response.
 #
 
-use 5.008;
+use v5.10.0;
 use lib (split(/:/, $ENV{GITPERLLIB}));
 use strict;
 use warnings;
diff --git a/t/t0202/test.pl b/t/t0202/test.pl
index 2cbf7b9590..3c122ccec0 100755
--- a/t/t0202/test.pl
+++ b/t/t0202/test.pl
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-use 5.008;
+use v5.10.0;
 use lib (split(/:/, $ENV{GITPERLLIB}));
 use strict;
 use warnings;
diff --git a/t/t9000/test.pl b/t/t9000/test.pl
index dfeaa9c655..1ac3566c1f 100755
--- a/t/t9000/test.pl
+++ b/t/t9000/test.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 use lib (split(/:/, $ENV{GITPERLLIB}));
 
-use 5.008;
+use v5.10.0;
 use warnings;
 use strict;
 
diff --git a/t/t9700/test.pl b/t/t9700/test.pl
index 34cd01366f..f1d46465b5 100755
--- a/t/t9700/test.pl
+++ b/t/t9700/test.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 use lib (split(/:/, $ENV{GITPERLLIB}));
 
-use 5.008;
+use v5.10.0;
 use warnings;
 use strict;
 
diff --git a/t/test-terminal.perl b/t/test-terminal.perl
index 46bf618479..fab093a957 100755
--- a/t/test-terminal.perl
+++ b/t/test-terminal.perl
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-use 5.008;
+use v5.10.0;
 use strict;
 use warnings;
 use IO::Pty;
-- 
2.15.1.424.g9478a66081