Update perl to 5.20.3

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Update perl to 5.20.3

Andrew Fresh-4
Unfortunately due to reasons, I won't be getting perl 5.22 in before
OpenBSD 6.0.  However, I'd like to see if it's possible to get updated
to the latest in the 5.20 branch, 5.20.3.

This change is mostly documentation, but there are also a fair number of
bug fixes, nearly all in the regular expression engine.

The full list is in
https://metacpan.org/pod/release/SHAY/perl-5.20.3/pod/perldelta.pod

I've tested it successfully on the architectures I have and
unsurprisingly it seems to work like 5.20.2.

https://github.com/afresh1/OpenBSD-perl/tree/5_20/build_logs/perl-5.20.3

(This patch does not include a minor bump of libperl, but I would add
that as well)

OK?

l8rZ,
--
andrew - http://afresh1.com

Microsoft Windows:  Proof that P.T. Barnum was correct


Index: gnu/usr.bin/perl/AUTHORS
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/AUTHORS,v
retrieving revision 1.1.1.15
diff -u -p -u -p -r1.1.1.15 AUTHORS
--- gnu/usr.bin/perl/AUTHORS 25 Apr 2015 19:10:05 -0000 1.1.1.15
+++ gnu/usr.bin/perl/AUTHORS 28 Jun 2016 18:04:57 -0000
@@ -517,6 +517,7 @@ James FitzGibbon <[hidden email]>
 James Jurach <[hidden email]>
 James E Keenan <[hidden email]>
 James Mastros <[hidden email]>
+James McCoy                     <[hidden email]>
 Jamshid Afshar
 Jan D. <[hidden email]>
 Jan Dubois <[hidden email]>
@@ -696,6 +697,7 @@ Krishna Sethuraman <[hidden email]>
 Kriton Kyrimis <[hidden email]>
 Kurt D. Starsinic <[hidden email]>
 Kyriakos Georgiou
+Lajos Veres <[hidden email]>
 Larry Parmelee <[hidden email]>
 Larry Schuler
 Larry Schwimmer <[hidden email]>
@@ -979,6 +981,7 @@ Randal L. Schwartz <[hidden email]
 Randall Gellens <[hidden email]>
 Randolf Werner <[hidden email]>
 Randy J. Ray <[hidden email]>
+Randy Stauner <[hidden email]>
 Randy W. Sims
 Raphael Manfredi <[hidden email]>
 Raul Dias <[hidden email]>
Index: gnu/usr.bin/perl/Configure
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Configure,v
retrieving revision 1.33
diff -u -p -u -p -r1.33 Configure
--- gnu/usr.bin/perl/Configure 25 Apr 2015 19:26:15 -0000 1.33
+++ gnu/usr.bin/perl/Configure 28 Jun 2016 18:04:57 -0000
@@ -1388,8 +1388,8 @@ libswanted_uselargefiles=''
 : set usesocks on the Configure command line to enable socks.
 : List of libraries we want.
 : If anyone needs extra -lxxx, put those in a hint file.
-libswanted="socket bind inet nsl nm ndbm gdbm dbm db malloc dl ld sun"
-libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
+libswanted="cl pthread socket bind inet nsl nm ndbm gdbm dbm db malloc dl ld"
+libswanted="$libswanted sun m crypt sec util c cposix posix ucb bsd BSD"
 : We probably want to search /usr/shlib before most other libraries.
 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
@@ -3271,7 +3271,7 @@ EOM
  $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
  $test -d /usr/apollo/bin && osname=apollo
  $test -f /etc/saf/_sactab && osname=svr4
- $test -d /usr/include/minix && osname=minix
+ $test -d /usr/include/minix && osname=minix && osvers=`$uname -r`
  $test -f /system/gnu_library/bin/ar.pm && osname=vos
  if $test -d /MachTen -o -d /MachTen_Folder; then
  osname=machten
@@ -20736,7 +20736,7 @@ int check_min ()
 
 int main (int argc, char *argv[])
 {
-    fprintf (stderr, "Sizeof time_t = %ld\n", sizeof (time_t));
+    /* fprintf (stderr, "Sizeof time_t = %ld\n", sizeof (time_t)); */
     check_max ();
     check_min ();
     return (0);
Index: gnu/usr.bin/perl/INSTALL
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/INSTALL,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 INSTALL
--- gnu/usr.bin/perl/INSTALL 25 Apr 2015 19:14:36 -0000 1.17
+++ gnu/usr.bin/perl/INSTALL 28 Jun 2016 18:04:57 -0000
@@ -564,7 +564,7 @@ The directories set up by Configure fall
 
 =item Directories for the perl distribution
 
-By default, Configure will use the following directories for 5.20.2.
+By default, Configure will use the following directories for 5.20.3.
 $version is the full perl version number, including subversion, e.g.
 5.12.3, and $archname is a string like sun4-sunos,
 determined by Configure.  The full definitions of all Configure
@@ -2418,7 +2418,7 @@ http://www.chiark.greenend.org.uk/~sgtat
 
 =head1 Coexistence with earlier versions of perl 5
 
-Perl 5.20.2 is not binary compatible with versions of Perl earlier than 5.20.0.
+Perl 5.20.3 is not binary compatible with versions of Perl earlier than 5.20.0.
 In other words, you will have to recompile your XS modules.
 
 In general, you can usually safely upgrade from one version of Perl (e.g.
@@ -2492,9 +2492,9 @@ won't interfere with another version.  (
 libraries after 5.6.0, but not for executables. TODO?)  One convenient
 way to do this is by using a separate prefix for each version, such as
 
- sh Configure -Dprefix=/opt/perl5.20.2
+ sh Configure -Dprefix=/opt/perl5.20.3
 
-and adding /opt/perl5.20.2/bin to the shell PATH variable.  Such users
+and adding /opt/perl5.20.3/bin to the shell PATH variable.  Such users
 may also wish to add a symbolic link /usr/local/bin/perl so that
 scripts can still start with #!/usr/local/bin/perl.
 
@@ -2509,11 +2509,11 @@ yet.
 
 =head2 Upgrading from 5.19.11 or earlier
 
-B<Perl 5.20.2 may not be binary compatible with Perl 5.19.11 or
+B<Perl 5.20.3 may not be binary compatible with Perl 5.19.11 or
 earlier Perl releases.>  Perl modules having binary parts
 (meaning that a C compiler is used) will have to be recompiled to be
-used with 5.20.2.  If you find you do need to rebuild an extension with
-5.20.2, you may safely do so without disturbing the older
+used with 5.20.3.  If you find you do need to rebuild an extension with
+5.20.3, you may safely do so without disturbing the older
 installations.  (See L<"Coexistence with earlier versions of perl 5">
 above.)
 
@@ -2546,15 +2546,15 @@ Firstly, the bare minimum to run this sc
      print("$f\n");
   }
 
-in Linux with perl-5.20.2 is as follows (under $Config{prefix}):
+in Linux with perl-5.20.3 is as follows (under $Config{prefix}):
 
   ./bin/perl
-  ./lib/perl5/5.20.2/strict.pm
-  ./lib/perl5/5.20.2/warnings.pm
-  ./lib/perl5/5.20.2/i686-linux/File/Glob.pm
-  ./lib/perl5/5.20.2/feature.pm
-  ./lib/perl5/5.20.2/XSLoader.pm
-  ./lib/perl5/5.20.2/i686-linux/auto/File/Glob/Glob.so
+  ./lib/perl5/5.20.3/strict.pm
+  ./lib/perl5/5.20.3/warnings.pm
+  ./lib/perl5/5.20.3/i686-linux/File/Glob.pm
+  ./lib/perl5/5.20.3/feature.pm
+  ./lib/perl5/5.20.3/XSLoader.pm
+  ./lib/perl5/5.20.3/i686-linux/auto/File/Glob/Glob.so
 
 Secondly, for perl-5.10.1, the Debian perl-base package contains 591 files,
 (of which 510 are for lib/unicore) totaling about 3.5MB in its i386 version.
Index: gnu/usr.bin/perl/MANIFEST
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/MANIFEST,v
retrieving revision 1.38
diff -u -p -u -p -r1.38 MANIFEST
--- gnu/usr.bin/perl/MANIFEST 7 May 2016 16:05:24 -0000 1.38
+++ gnu/usr.bin/perl/MANIFEST 28 Jun 2016 18:04:57 -0000
@@ -5012,6 +5012,7 @@ pod/perl5182delta.pod Perl changes in v
 pod/perl5184delta.pod Perl changes in version 5.18.4
 pod/perl5200delta.pod Perl changes in version 5.20.0
 pod/perl5201delta.pod Perl changes in version 5.20.1
+pod/perl5202delta.pod Perl changes in version 5.20.2
 pod/perl561delta.pod Perl changes in version 5.6.1
 pod/perl56delta.pod Perl changes in version 5.6
 pod/perl581delta.pod Perl changes in version 5.8.1
@@ -5771,6 +5772,7 @@ t/op/warn.t See if warn works
 t/op/while.t See if while loops work
 t/op/write.t See if write works (formats work)
 t/op/yadayada.t See if ... works
+t/perf/taint.t See if optimisations are keeping things fast (taint issues)
 t/perl.supp Perl valgrind suppressions
 t/porting/args_assert.t Check that all PERL_ARGS_ASSERT* macros are used
 t/porting/authors.t Check that all authors have been acknowledged
@@ -5797,6 +5799,7 @@ t/porting/perlfunc.t Test that Function
 t/porting/podcheck.t Test the POD of shipped modules is well formed
 t/porting/pod_rules.t Check that various pod lists are consistent
 t/porting/readme.t Check that all files in Porting/ are mentioned in Porting/README.pod
+t/porting/re_context.t Check assumptions made by save_re_context()
 t/porting/regen.t Check that regen.pl doesn't need running
 t/porting/ss_dup.t Check that sv.c:ss_dup handle everything
 t/porting/test_bootstrap.t Test that the instructions for test bootstrapping aren't accidentally overlooked.
Index: gnu/usr.bin/perl/META.json
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/META.json,v
retrieving revision 1.1.1.3
diff -u -p -u -p -r1.1.1.3 META.json
--- gnu/usr.bin/perl/META.json 25 Apr 2015 19:10:10 -0000 1.1.1.3
+++ gnu/usr.bin/perl/META.json 28 Jun 2016 18:04:57 -0000
@@ -128,5 +128,5 @@
          "url" : "http://perl5.git.perl.org/"
       }
    },
-   "version" : "5.020002"
+   "version" : "5.020003"
 }
Index: gnu/usr.bin/perl/META.yml
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/META.yml,v
retrieving revision 1.1.1.12
diff -u -p -u -p -r1.1.1.12 META.yml
--- gnu/usr.bin/perl/META.yml 25 Apr 2015 19:10:10 -0000 1.1.1.12
+++ gnu/usr.bin/perl/META.yml 28 Jun 2016 18:04:57 -0000
@@ -115,4 +115,4 @@ resources:
   homepage: http://www.perl.org/
   license: http://dev.perl.org/licenses/
   repository: http://perl5.git.perl.org/
-version: '5.020002'
+version: '5.020003'
Index: gnu/usr.bin/perl/Makefile.SH
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Makefile.SH,v
retrieving revision 1.32
diff -u -p -u -p -r1.32 Makefile.SH
--- gnu/usr.bin/perl/Makefile.SH 28 Jun 2016 04:30:02 -0000 1.32
+++ gnu/usr.bin/perl/Makefile.SH 28 Jun 2016 18:04:57 -0000
@@ -491,7 +491,7 @@ mini_obj = $(minindt_obj) $(MINIDTRACE_O
 ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS)
 obj = $(ndt_obj) $(DTRACE_O)
 
-perltoc_pod_prereqs = extra.pods pod/perl5202delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod
+perltoc_pod_prereqs = extra.pods pod/perl5203delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod
 generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
 generated_headers = uudmap.h bitcount.h mg_data.h
 
@@ -1010,9 +1010,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) auto
 pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
  $(MINIPERL) pod/perlmodlib.PL -q
 
-pod/perl5202delta.pod: pod/perldelta.pod
- $(RMS) pod/perl5202delta.pod
- $(LNS) perldelta.pod pod/perl5202delta.pod
+pod/perl5203delta.pod: pod/perldelta.pod
+ $(RMS) pod/perl5203delta.pod
+ $(LNS) perldelta.pod pod/perl5203delta.pod
 
 extra.pods: $(MINIPERL_EXE)
  -@test ! -f extra.pods || rm -f `cat extra.pods`
Index: gnu/usr.bin/perl/Makefile.bsd-wrapper
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Makefile.bsd-wrapper,v
retrieving revision 1.102
diff -u -p -u -p -r1.102 Makefile.bsd-wrapper
--- gnu/usr.bin/perl/Makefile.bsd-wrapper 28 Jun 2016 04:28:18 -0000 1.102
+++ gnu/usr.bin/perl/Makefile.bsd-wrapper 28 Jun 2016 18:04:57 -0000
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile.bsd-wrapper,v 1.102 2016/06/28 04:28:18 afresh1 Exp $
+# $OpenBSD: Makefile.bsd-wrapper,v 1.101 2015/04/07 05:37:03 guenther Exp $
 #
 # Build wrapper for Perl 5.20.1-RC2
 #
Index: gnu/usr.bin/perl/README.haiku
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/README.haiku,v
retrieving revision 1.1.1.6
diff -u -p -u -p -r1.1.1.6 README.haiku
--- gnu/usr.bin/perl/README.haiku 25 Apr 2015 19:10:12 -0000 1.1.1.6
+++ gnu/usr.bin/perl/README.haiku 28 Jun 2016 18:04:57 -0000
@@ -22,9 +22,9 @@ The build procedure is completely standa
 Make perl executable and create a symlink for libperl:
 
   chmod a+x /boot/common/bin/perl
-  cd /boot/common/lib; ln -s perl5/5.20.2/BePC-haiku/CORE/libperl.so .
+  cd /boot/common/lib; ln -s perl5/5.20.3/BePC-haiku/CORE/libperl.so .
 
-Replace C<5.20.2> with your respective version of Perl.
+Replace C<5.20.3> with your respective version of Perl.
 
 =head1 KNOWN PROBLEMS
 
Index: gnu/usr.bin/perl/README.macosx
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/README.macosx,v
retrieving revision 1.1.1.8
diff -u -p -u -p -r1.1.1.8 README.macosx
--- gnu/usr.bin/perl/README.macosx 25 Apr 2015 19:10:12 -0000 1.1.1.8
+++ gnu/usr.bin/perl/README.macosx 28 Jun 2016 18:04:57 -0000
@@ -10,9 +10,9 @@ perlmacosx - Perl under Mac OS X
 
 This document briefly describes Perl under Mac OS X.
 
-  curl -O http://www.cpan.org/src/perl-5.20.2.tar.gz
-  tar -xzf perl-5.20.2.tar.gz
-  cd perl-5.20.2
+  curl -O http://www.cpan.org/src/perl-5.20.3.tar.gz
+  tar -xzf perl-5.20.3.tar.gz
+  cd perl-5.20.3
   ./Configure -des -Dprefix=/usr/local/
   make
   make test
@@ -20,7 +20,7 @@ This document briefly describes Perl und
 
 =head1 DESCRIPTION
 
-The latest Perl release (5.20.2 as of this writing) builds without changes
+The latest Perl release (5.20.3 as of this writing) builds without changes
 under all versions of Mac OS X from 10.3 "Panther" onwards.
 
 In order to build your own version of Perl you will need 'make',
Index: gnu/usr.bin/perl/README.os2
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/README.os2,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 README.os2
--- gnu/usr.bin/perl/README.os2 25 Apr 2015 19:14:37 -0000 1.17
+++ gnu/usr.bin/perl/README.os2 28 Jun 2016 18:04:57 -0000
@@ -619,7 +619,7 @@ C<set PERLLIB_PREFIX> in F<Config.sys>,
 
 =item Additional Perl modules
 
-  unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.20.2/
+  unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.20.3/
 
 Same remark as above applies.  Additionally, if this directory is not
 one of directories on @INC (and @INC is influenced by C<PERLLIB_PREFIX>), you
Index: gnu/usr.bin/perl/README.vms
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/README.vms,v
retrieving revision 1.18
diff -u -p -u -p -r1.18 README.vms
--- gnu/usr.bin/perl/README.vms 25 Apr 2015 19:14:37 -0000 1.18
+++ gnu/usr.bin/perl/README.vms 28 Jun 2016 18:04:57 -0000
@@ -142,11 +142,11 @@ You may need to set up a foreign symbol
 choice.  Once you have done so, use a command like the following to
 unpack the archive:
 
-    vmstar -xvf perl-5^.20^.2.tar
+    vmstar -xvf perl-5^.20^.3.tar
 
 Then set default to the top-level source directory like so:
 
-    set default [.perl-5^.20^.2]
+    set default [.perl-5^.20^.3]
 
 and proceed with configuration as described in the next section.
 
Index: gnu/usr.bin/perl/cop.h
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/cop.h,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 cop.h
--- gnu/usr.bin/perl/cop.h 17 Nov 2014 20:56:47 -0000 1.16
+++ gnu/usr.bin/perl/cop.h 28 Jun 2016 18:04:57 -0000
@@ -617,6 +617,7 @@ struct block_format {
  cx->blk_format.gv = gv; \
  cx->blk_format.retop = (retop); \
  cx->blk_format.dfoutgv = PL_defoutgv; \
+ cx->blk_u16 = 0;                                                \
  if (!CvDEPTH(cv)) SvREFCNT_inc_simple_void_NN(cv); \
  CvDEPTH(cv)++; \
  SvREFCNT_inc_void(cx->blk_format.dfoutgv)
@@ -639,6 +640,8 @@ struct block_format {
 #define POPSUB(cx,sv) \
     STMT_START { \
  const I32 olddepth = cx->blk_sub.olddepth; \
+        if (!(cx->blk_u16 & CxPOPSUB_DONE)) {                           \
+        cx->blk_u16 |= CxPOPSUB_DONE;                                   \
  RETURN_PROBE(CvNAMED(cx->blk_sub.cv) \
  ? HEK_KEY(CvNAME_HEK(cx->blk_sub.cv)) \
  : GvENAME(CvGV(cx->blk_sub.cv)), \
@@ -661,6 +664,7 @@ struct block_format {
  CLEAR_ARGARRAY(cx->blk_sub.argarray); \
     } \
  } \
+        }                                                               \
  sv = MUTABLE_SV(cx->blk_sub.cv); \
  LEAVE_SCOPE(PL_scopestack[cx->blk_oldscopesp-1]); \
  if (sv && (CvDEPTH((const CV*)sv) = olddepth)) \
@@ -674,13 +678,16 @@ struct block_format {
 
 #define POPFORMAT(cx) \
     STMT_START { \
+        if (!(cx->blk_u16 & CxPOPSUB_DONE)) {                           \
  CV * const cv = cx->blk_format.cv; \
  GV * const dfuot = cx->blk_format.dfoutgv; \
+        cx->blk_u16 |= CxPOPSUB_DONE;                                   \
  setdefout(dfuot); \
  LEAVE_SCOPE(PL_scopestack[cx->blk_oldscopesp-1]); \
  if (!--CvDEPTH(cv)) \
     SvREFCNT_dec_NN(cx->blk_format.cv); \
  SvREFCNT_dec_NN(dfuot); \
+        }                                                               \
     } STMT_END
 
 /* eval context */
@@ -768,7 +775,10 @@ struct block_loop {
 #define CxLABEL_len(c,len) (0 + CopLABEL_len((c)->blk_oldcop, len))
 #define CxLABEL_len_flags(c,len,flags) (0 + CopLABEL_len_flags((c)->blk_oldcop, len, flags))
 #define CxHASARGS(c) (((c)->cx_type & CXp_HASARGS) == CXp_HASARGS)
-#define CxLVAL(c) (0 + (c)->blk_u16)
+#define CxLVAL(c) (0 + ((c)->blk_u16 & 0xff))
+/* POPSUB has already been performed on this context frame */
+#define CxPOPSUB_DONE 0x100
+
 
 #define PUSHLOOP_PLAIN(cx, s) \
  cx->blk_loop.resetsp = s - PL_stack_base; \
Index: gnu/usr.bin/perl/embed.fnc
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/embed.fnc,v
retrieving revision 1.1.1.12
diff -u -p -u -p -r1.1.1.12 embed.fnc
--- gnu/usr.bin/perl/embed.fnc 17 Nov 2014 20:52:36 -0000 1.1.1.12
+++ gnu/usr.bin/perl/embed.fnc 28 Jun 2016 18:04:57 -0000
@@ -1407,6 +1407,7 @@ Apd |void |sv_magic |NN SV *const sv|NUL
 Apd |MAGIC *|sv_magicext |NN SV *const sv|NULLOK SV *const obj|const int how \
  |NULLOK const MGVTBL *const vtbl|NULLOK const char *const name \
  |const I32 namlen
+Ein |bool |sv_only_taint_gmagic|NN SV *sv
 : exported for re.pm
 EXp |MAGIC *|sv_magicext_mglob|NN SV *sv
 ApdbamR |SV* |sv_mortalcopy |NULLOK SV *const oldsv
Index: gnu/usr.bin/perl/embed.h
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/embed.h,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 embed.h
--- gnu/usr.bin/perl/embed.h 17 Nov 2014 20:56:47 -0000 1.17
+++ gnu/usr.bin/perl/embed.h 28 Jun 2016 18:04:57 -0000
@@ -877,6 +877,7 @@
 #define regprop(a,b,c,d) Perl_regprop(aTHX_ a,b,c,d)
 #define report_uninit(a) Perl_report_uninit(aTHX_ a)
 #define sv_magicext_mglob(a) Perl_sv_magicext_mglob(aTHX_ a)
+#define sv_only_taint_gmagic S_sv_only_taint_gmagic
 #define validate_proto(a,b,c) Perl_validate_proto(aTHX_ a,b,c)
 #define vivify_defelem(a) Perl_vivify_defelem(aTHX_ a)
 #define yylex() Perl_yylex(aTHX)
Index: gnu/usr.bin/perl/gv.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/gv.c,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 gv.c
--- gnu/usr.bin/perl/gv.c 25 Apr 2015 19:14:37 -0000 1.17
+++ gnu/usr.bin/perl/gv.c 28 Jun 2016 18:04:57 -0000
@@ -1339,7 +1339,7 @@ Perl_gv_stashpvn(pTHX_ const char *name,
     tmpgv = gv_fetchpvn_flags(tmpbuf, tmplen, flags, SVt_PVHV);
     if (tmpbuf != smallbuf)
  Safefree(tmpbuf);
-    if (!tmpgv)
+    if (!tmpgv || !isGV_with_GP(tmpgv))
  return NULL;
     stash = GvHV(tmpgv);
     if (!(flags & ~GV_NOADD_MASK) && !stash) return NULL;
Index: gnu/usr.bin/perl/hv.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/hv.c,v
retrieving revision 1.19
diff -u -p -u -p -r1.19 hv.c
--- gnu/usr.bin/perl/hv.c 17 Nov 2014 20:56:47 -0000 1.19
+++ gnu/usr.bin/perl/hv.c 28 Jun 2016 18:04:57 -0000
@@ -3154,7 +3154,7 @@ Perl_refcounted_he_fetch_pvn(pTHX_ const
  Perl_croak(aTHX_ "panic: refcounted_he_fetch_pvn bad flags %"UVxf,
     (UV)flags);
     if (!chain)
- return &PL_sv_placeholder;
+ goto ret;
     if (flags & REFCOUNTED_HE_KEY_UTF8) {
  /* For searching purposes, canonicalise to Latin-1 where possible. */
  const char *keyend = keypv + keylen, *p;
@@ -3214,6 +3214,7 @@ Perl_refcounted_he_fetch_pvn(pTHX_ const
     return sv_2mortal(refcounted_he_value(chain));
  }
     }
+  ret:
     return flags & REFCOUNTED_HE_EXISTS ? NULL : &PL_sv_placeholder;
 }
 
Index: gnu/usr.bin/perl/hv_func.h
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/hv_func.h,v
retrieving revision 1.1.1.2
diff -u -p -u -p -r1.1.1.2 hv_func.h
--- gnu/usr.bin/perl/hv_func.h 17 Nov 2014 20:52:36 -0000 1.1.1.2
+++ gnu/usr.bin/perl/hv_func.h 28 Jun 2016 18:04:57 -0000
@@ -257,7 +257,7 @@ S_perl_hash_siphash_2_4(const unsigned c
 
 PERL_STATIC_INLINE U32
 S_perl_hash_superfast(const unsigned char * const seed, const unsigned char *str, STRLEN len) {
-    U32 hash = *((U32*)seed) + len;
+    U32 hash = *((U32*)seed) + (U32)len;
     U32 tmp;
     int rem= len & 3;
     len >>= 2;
@@ -367,7 +367,7 @@ S_perl_hash_murmur3(const unsigned char
 
     const unsigned char *end;
     int bytes_in_carry = 0; /* bytes in carry */
-    I32 total_length= len;
+    I32 total_length= (I32)len;
 
 #if defined(UNALIGNED_SAFE)
     /* Handle carry: commented out as its only used in incremental mode - it never fires for us
@@ -390,7 +390,7 @@ S_perl_hash_murmur3(const unsigned char
     /* Consume enough so that the next data byte is word aligned */
     STRLEN i = -PTR2IV(ptr) & 3;
     if(i && i <= len) {
-      MURMUR_DOBYTES(i, h1, carry, bytes_in_carry, ptr, len);
+      MURMUR_DOBYTES((int)i, h1, carry, bytes_in_carry, ptr, len);
     }
 
     /* We're now aligned. Process in aligned blocks. Specialise for each possible carry count */
@@ -431,7 +431,7 @@ S_perl_hash_murmur3(const unsigned char
     len -= len/4*4;
 
     /* Append any remaining bytes into carry */
-    MURMUR_DOBYTES(len, h1, carry, bytes_in_carry, ptr, len);
+    MURMUR_DOBYTES((int)len, h1, carry, bytes_in_carry, ptr, len);
 
     if (bytes_in_carry) {
         k1 = carry >> ( 4 - bytes_in_carry ) * 8;
@@ -455,7 +455,7 @@ S_perl_hash_murmur3(const unsigned char
 PERL_STATIC_INLINE U32
 S_perl_hash_djb2(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
     const unsigned char * const end = (const unsigned char *)str + len;
-    U32 hash = *((U32*)seed + len);
+    U32 hash = *((U32*)seed) + (U32)len;
     while (str < end) {
         hash = ((hash << 5) + hash) + *str++;
     }
@@ -465,7 +465,7 @@ S_perl_hash_djb2(const unsigned char * c
 PERL_STATIC_INLINE U32
 S_perl_hash_sdbm(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
     const unsigned char * const end = (const unsigned char *)str + len;
-    U32 hash = *((U32*)seed + len);
+    U32 hash = *((U32*)seed) + (U32)len;
     while (str < end) {
         hash = (hash << 6) + (hash << 16) - hash + *str++;
     }
@@ -491,7 +491,7 @@ S_perl_hash_sdbm(const unsigned char * c
 PERL_STATIC_INLINE U32
 S_perl_hash_one_at_a_time(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
     const unsigned char * const end = (const unsigned char *)str + len;
-    U32 hash = *((U32*)seed) + len;
+    U32 hash = *((U32*)seed) + (U32)len;
     while (str < end) {
         hash += *str++;
         hash += (hash << 10);
@@ -506,7 +506,7 @@ S_perl_hash_one_at_a_time(const unsigned
 PERL_STATIC_INLINE U32
 S_perl_hash_one_at_a_time_hard(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
     const unsigned char * const end = (const unsigned char *)str + len;
-    U32 hash = *((U32*)seed) + len;
+    U32 hash = *((U32*)seed) + (U32)len;
     
     while (str < end) {
         hash += (hash << 10);
Index: gnu/usr.bin/perl/inline.h
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/inline.h,v
retrieving revision 1.1.1.2
diff -u -p -u -p -r1.1.1.2 inline.h
--- gnu/usr.bin/perl/inline.h 17 Nov 2014 20:52:36 -0000 1.1.1.2
+++ gnu/usr.bin/perl/inline.h 28 Jun 2016 18:04:57 -0000
@@ -323,6 +323,30 @@ S_is_safe_syscall(pTHX_ const char *pv,
 }
 
 /*
+
+Return false if any get magic is on the SV other than taint magic.
+
+*/
+
+PERL_STATIC_INLINE bool
+S_sv_only_taint_gmagic(SV *sv) {
+    MAGIC *mg = SvMAGIC(sv);
+
+    PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC;
+
+    while (mg) {
+        if (mg->mg_type != PERL_MAGIC_taint
+            && !(mg->mg_flags & MGf_GSKIP)
+            && mg->mg_virtual->svt_get) {
+            return FALSE;
+        }
+        mg = mg->mg_moremagic;
+    }
+
+    return TRUE;
+}
+
+/*
  * Local variables:
  * c-indentation-style: bsd
  * c-basic-offset: 4
Index: gnu/usr.bin/perl/intrpvar.h
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/intrpvar.h,v
retrieving revision 1.1.1.14
diff -u -p -u -p -r1.1.1.14 intrpvar.h
--- gnu/usr.bin/perl/intrpvar.h 25 Apr 2015 19:10:09 -0000 1.1.1.14
+++ gnu/usr.bin/perl/intrpvar.h 28 Jun 2016 18:04:57 -0000
@@ -736,7 +736,7 @@ PERLVAR(I, debug_pad, struct perl_debug_
 /* Hook for File::Glob */
 PERLVARI(I, globhook, globhook_t, NULL)
 
-/* The last unconditional member of the interpreter structure when 5.20.2 was
+/* The last unconditional member of the interpreter structure when 5.20.3 was
    released. The offset of the end of this is baked into a global variable in
    any shared perl library which will allow a sanity test in future perl
    releases.  */
Index: gnu/usr.bin/perl/locale.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/locale.c,v
retrieving revision 1.1.1.10
diff -u -p -u -p -r1.1.1.10 locale.c
--- gnu/usr.bin/perl/locale.c 17 Nov 2014 20:52:36 -0000 1.1.1.10
+++ gnu/usr.bin/perl/locale.c 28 Jun 2016 18:04:57 -0000
@@ -348,7 +348,7 @@ Perl_my_setlocale(pTHX_ int category, co
      * otherwise to use the particular category's variable if set; otherwise to
      * use the LANG variable. */
 
-    bool override_LC_ALL = 0;
+    bool override_LC_ALL = FALSE;
     char * result;
 
     if (locale && strEQ(locale, "")) {
@@ -496,7 +496,7 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
     char *curnum     = NULL;
 #endif /* USE_LOCALE_NUMERIC */
 #ifdef __GLIBC__
-    char * const language   = PerlEnv_getenv("LANGUAGE");
+    const char * const language   = savepv(PerlEnv_getenv("LANGUAGE"));
 #endif
 
     /* NULL uses the existing already set up locale */
@@ -505,14 +505,19 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
                                         : "";
     const char* trial_locales[5];   /* 5 = 1 each for "", LC_ALL, LANG, "", C */
     unsigned int trial_locales_count;
-    char * const lc_all     = PerlEnv_getenv("LC_ALL");
-    char * const lang       = PerlEnv_getenv("LANG");
+    const char * const lc_all     = savepv(PerlEnv_getenv("LC_ALL"));
+    const char * const lang       = savepv(PerlEnv_getenv("LANG"));
     bool setlocale_failure = FALSE;
     unsigned int i;
     char *p;
-    const bool locwarn = (printwarn > 1 ||
-                    (printwarn &&
-                     (!(p = PerlEnv_getenv("PERL_BADLANG")) || atoi(p))));
+
+    /* A later getenv() could zap this, so only use here */
+    const char * const bad_lang_use_once = PerlEnv_getenv("PERL_BADLANG");
+
+    const bool locwarn = (printwarn > 1
+                          || (printwarn
+                              && (! bad_lang_use_once
+                                  || atoi(bad_lang_use_once))));
     bool done = FALSE;
     const char *system_default_locale = NULL;
 
@@ -909,6 +914,13 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
 #endif /* USE_LOCALE_NUMERIC */
 
 #endif /* USE_LOCALE */
+
+#ifdef __GLIBC__
+    Safefree(language);
+#endif
+
+    Safefree(lc_all);
+    Safefree(lang);
 
     return ok;
 }
Index: gnu/usr.bin/perl/mg.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/mg.c,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 mg.c
--- gnu/usr.bin/perl/mg.c 25 Apr 2015 19:14:37 -0000 1.20
+++ gnu/usr.bin/perl/mg.c 28 Jun 2016 18:04:57 -0000
@@ -1077,7 +1077,6 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
     sv_setiv(sv, (IV)IoPAGE(GvIOp(PL_defoutgv)));
  break;
     case ':':
- break;
     case '/':
  break;
     case '[':
@@ -2775,6 +2774,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
                         );
                     }
                 } else {
+                    sv_setsv(sv, PL_rs);
               /* diag_listed_as: Setting $/ to %s reference is forbidden */
                     Perl_croak(aTHX_ "Setting $/ to a%s %s reference is forbidden",
                                       *reftype == 'A' ? "n" : "", reftype);
Index: gnu/usr.bin/perl/mg.h
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/mg.h,v
retrieving revision 1.14
diff -u -p -u -p -r1.14 mg.h
--- gnu/usr.bin/perl/mg.h 17 Nov 2014 20:56:47 -0000 1.14
+++ gnu/usr.bin/perl/mg.h 28 Jun 2016 18:04:57 -0000
@@ -63,7 +63,7 @@ struct magic {
 /* assumes get-magic and stringification have already occurred */
 # define MgBYTEPOS_set(mg,sv,pv,off) ( \
     assert_((mg)->mg_type == PERL_MAGIC_regex_global)  \
-    SvPOK(sv) && !SvGMAGICAL(sv)   \
+    SvPOK(sv) && (!SvGMAGICAL(sv) || sv_only_taint_gmagic(sv))  \
  ? (mg)->mg_len = (off), (mg)->mg_flags |= MGf_BYTES \
  : ((mg)->mg_len = DO_UTF8(sv)     \
     ? (SSize_t)utf8_length((U8 *)(pv), (U8 *)(pv)+(off)) \
Index: gnu/usr.bin/perl/op.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/op.c,v
retrieving revision 1.19
diff -u -p -u -p -r1.19 op.c
--- gnu/usr.bin/perl/op.c 25 Apr 2015 19:14:37 -0000 1.19
+++ gnu/usr.bin/perl/op.c 28 Jun 2016 18:04:57 -0000
@@ -8865,7 +8865,7 @@ Perl_ck_eval(pTHX_ OP *o)
  SVOP * const kid = (SVOP*)cUNOPo->op_first;
  assert(kid);
 
- if (kid->op_type == OP_LINESEQ || kid->op_type == OP_STUB) {
+ if (o->op_type == OP_ENTERTRY) {
     LOGOP *enter;
 #ifdef PERL_MAD
     OP* const oldo = o;
Index: gnu/usr.bin/perl/op.h
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/op.h,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 op.h
--- gnu/usr.bin/perl/op.h 25 Apr 2015 19:14:37 -0000 1.17
+++ gnu/usr.bin/perl/op.h 28 Jun 2016 18:04:57 -0000
@@ -1005,7 +1005,7 @@ For custom ops the type is returned from
 to the registree to ensure it is accurate.  The value returned will be
 one of the OA_* constants from op.h.
 
-=for apidoc Am|bool|OP_TYPE_IS|OP *o, Optype type
+=for apidoc Am|bool|OP_TYPE_IS|OP *o|Optype type
 Returns true if the given OP is not a NULL pointer
 and if it is of the given type.
 
@@ -1013,7 +1013,7 @@ The negation of this macro, C<OP_TYPE_IS
 as well as C<OP_TYPE_IS_NN> and C<OP_TYPE_ISNT_NN> which elide
 the NULL pointer check.
 
-=for apidoc Am|bool|OP_TYPE_IS_OR_WAS|OP *o, Optype type
+=for apidoc Am|bool|OP_TYPE_IS_OR_WAS|OP *o|Optype type
 Returns true if the given OP is not a NULL pointer and
 if it is of the given type or used to be before being
 replaced by an OP of type OP_NULL.
Index: gnu/usr.bin/perl/pad.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pad.c,v
retrieving revision 1.1.1.11
diff -u -p -u -p -r1.1.1.11 pad.c
--- gnu/usr.bin/perl/pad.c 25 Apr 2015 19:10:10 -0000 1.1.1.11
+++ gnu/usr.bin/perl/pad.c 28 Jun 2016 18:04:57 -0000
@@ -976,8 +976,10 @@ Perl_pad_findmy_pvn(pTHX_ const char *na
 
         if (is_utf8)
             flags |= padadd_UTF8_NAME;
-        else
+        else {
             flags &= ~padadd_UTF8_NAME;
+            SAVEFREEPV(namepv);
+        }
     }
 
     offset = pad_findlex(namepv, namelen, flags,
Index: gnu/usr.bin/perl/patchlevel.h
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/patchlevel.h,v
retrieving revision 1.39
diff -u -p -u -p -r1.39 patchlevel.h
--- gnu/usr.bin/perl/patchlevel.h 22 Apr 2016 20:10:59 -0000 1.39
+++ gnu/usr.bin/perl/patchlevel.h 28 Jun 2016 18:04:57 -0000
@@ -15,7 +15,7 @@
 
 #define PERL_REVISION 5 /* age */
 #define PERL_VERSION 20 /* epoch */
-#define PERL_SUBVERSION 2 /* generation */
+#define PERL_SUBVERSION 3 /* generation */
 
 /* The following numbers describe the earliest compatible version of
    Perl ("compatibility" here being defined as sufficient binary/API
Index: gnu/usr.bin/perl/perl.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/perl.c,v
retrieving revision 1.27
diff -u -p -u -p -r1.27 perl.c
--- gnu/usr.bin/perl/perl.c 25 Apr 2016 11:11:51 -0000 1.27
+++ gnu/usr.bin/perl/perl.c 28 Jun 2016 18:04:57 -0000
@@ -2003,6 +2003,10 @@ S_parse_body(pTHX_ char **env, XSINIT_t
 #endif
  (s = PerlEnv_getenv("PERL5OPT")))
     {
+        /* s points to static memory in getenv(), which may be overwritten at
+         * any time; use a mortal copy instead */
+ s = SvPVX(sv_2mortal(newSVpv(s, 0)));
+
  while (isSPACE(*s))
     s++;
  if (*s == '-' && *(s+1) == 'T') {
Index: gnu/usr.bin/perl/pp_sys.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pp_sys.c,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 pp_sys.c
--- gnu/usr.bin/perl/pp_sys.c 25 Apr 2015 19:14:38 -0000 1.17
+++ gnu/usr.bin/perl/pp_sys.c 28 Jun 2016 18:04:57 -0000
@@ -4324,7 +4324,7 @@ PP(pp_setpgrp)
     Pid_t pgrp;
     Pid_t pid;
     pgrp = MAXARG == 2 && (TOPs||POPs) ? POPi : 0;
-    if (MAXARG > 0) pid = TOPs && TOPi;
+    if (MAXARG > 0) pid = TOPs ? TOPi : 0;
     else {
  pid = 0;
  XPUSHi(-1);
Index: gnu/usr.bin/perl/proto.h
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/proto.h,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 proto.h
--- gnu/usr.bin/perl/proto.h 17 Nov 2014 20:56:48 -0000 1.17
+++ gnu/usr.bin/perl/proto.h 28 Jun 2016 18:04:57 -0000
@@ -4252,6 +4252,11 @@ PERL_CALLCONV NV Perl_sv_nv(pTHX_ SV* sv
 #define PERL_ARGS_ASSERT_SV_NV \
  assert(sv)
 
+PERL_STATIC_INLINE bool S_sv_only_taint_gmagic(SV *sv)
+ __attribute__nonnull__(1);
+#define PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC \
+ assert(sv)
+
 PERL_CALLCONV char* Perl_sv_peek(pTHX_ SV* sv);
 PERL_CALLCONV void Perl_sv_pos_b2u(pTHX_ SV *const sv, I32 *const offsetp)
  __attribute__nonnull__(pTHX_2);
Index: gnu/usr.bin/perl/regcomp.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/regcomp.c,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 regcomp.c
--- gnu/usr.bin/perl/regcomp.c 25 Apr 2015 19:14:38 -0000 1.20
+++ gnu/usr.bin/perl/regcomp.c 28 Jun 2016 18:04:57 -0000
@@ -10455,9 +10455,7 @@ S_regpiece(pTHX_ RExC_state_t *pRExC_sta
                 ret = reg_node(pRExC_state, OPFAIL);
                 return ret;
             }
-            else if (min == max
-                     && RExC_parse < RExC_end
-                     && (*RExC_parse == '?' || *RExC_parse == '+'))
+            else if (min == max && RExC_parse < RExC_end && *RExC_parse == '?')
             {
                 if (SIZE_ONLY) {
                     ckWARN2reg(RExC_parse + 1,
@@ -16471,26 +16469,37 @@ void
 Perl_save_re_context(pTHX)
 {
     dVAR;
+    I32 nparens = -1;
+    I32 i;
 
     /* Save $1..$n (#18107: UTF-8 s/(\w+)/uc($1)/e); AMS 20021106. */
+
     if (PL_curpm) {
  const REGEXP * const rx = PM_GETRE(PL_curpm);
- if (rx) {
-    U32 i;
-    for (i = 1; i <= RX_NPARENS(rx); i++) {
- char digits[TYPE_CHARS(long)];
- const STRLEN len = my_snprintf(digits, sizeof(digits),
-                                               "%lu", (long)i);
- GV *const *const gvp
-    = (GV**)hv_fetch(PL_defstash, digits, len, 0);
-
- if (gvp) {
-    GV * const gv = *gvp;
-    if (SvTYPE(gv) == SVt_PVGV && GvSV(gv))
- save_scalar(gv);
- }
-    }
- }
+ if (rx)
+            nparens = RX_NPARENS(rx);
+    }
+
+    /* RT #124109. This is a complete hack; in the SWASHNEW case we know
+     * that PL_curpm will be null, but that utf8.pm and the modules it
+     * loads will only use $1..$3.
+     * The t/porting/re_context.t test file checks this assumption.
+     */
+    if (nparens == -1)
+        nparens = 3;
+
+    for (i = 1; i <= nparens; i++) {
+        char digits[TYPE_CHARS(long)];
+        const STRLEN len = my_snprintf(digits, sizeof(digits),
+                                       "%lu", (long)i);
+        GV *const *const gvp
+            = (GV**)hv_fetch(PL_defstash, digits, len, 0);
+
+        if (gvp) {
+            GV * const gv = *gvp;
+            if (SvTYPE(gv) == SVt_PVGV && GvSV(gv))
+                save_scalar(gv);
+        }
     }
 }
 #endif
Index: gnu/usr.bin/perl/regexec.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/regexec.c,v
retrieving revision 1.19
diff -u -p -u -p -r1.19 regexec.c
--- gnu/usr.bin/perl/regexec.c 20 Apr 2016 19:35:34 -0000 1.19
+++ gnu/usr.bin/perl/regexec.c 28 Jun 2016 18:04:57 -0000
@@ -756,7 +756,7 @@ Perl_re_intuit_start(pTHX_
 
         /* ml_anch: check after \n?
          *
-         * A note about IMPLICIT: on an un-anchored pattern beginning
+         * A note about PREGf_IMPLICIT: on an un-anchored pattern beginning
          * with /.*.../, these flags will have been added by the
          * compiler:
          *   /.*abc/, /.*abc/m:  PREGf_IMPLICIT | PREGf_ANCH_MBOL
@@ -2684,86 +2684,52 @@ Perl_regexec_flags(pTHX_ REGEXP * const
  ));
     }
 
-    /* Simplest case:  anchored match need be tried only once. */
-    /*  [unless only anchor is BOL and multiline is set] */
+    /* Simplest case: anchored match need be tried only once, or with
+     * MBOL, only at the beginning of each line.
+     *
+     * Note that /.*.../ sets PREGf_IMPLICIT|MBOL, while /.*.../s sets
+     * PREGf_IMPLICIT|SBOL. The idea is that with /.*.../s, if it doesn't
+     * match at the start of the string then it won't match anywhere else
+     * either; while with /.*.../, if it doesn't match at the beginning,
+     * the earliest it could match is at the start of the next line */
+
     if (prog->intflags & (PREGf_ANCH & ~PREGf_ANCH_GPOS)) {
- if (s == startpos && regtry(reginfo, &s))
+        char *end;
+
+ if (regtry(reginfo, &s))
     goto got_it;
-        else if (multiline || (prog->intflags & (PREGf_IMPLICIT | PREGf_ANCH_MBOL))) /* XXXX SBOL? */
- {
-    char *end;
 
-    if (minlen)
- dontbother = minlen - 1;
-    end = HOP3c(strend, -dontbother, strbeg) - 1;
-    /* for multiline we only have to try after newlines */
-    if (prog->check_substr || prog->check_utf8) {
-                /* because of the goto we can not easily reuse the macros for bifurcating the
-                   unicode/non-unicode match modes here like we do elsewhere - demerphq */
-                if (utf8_target) {
-                    if (s == startpos)
-                        goto after_try_utf8;
-                    while (1) {
-                        if (regtry(reginfo, &s)) {
-                            goto got_it;
-                        }
-                      after_try_utf8:
-                        if (s > end) {
-                            goto phooey;
-                        }
-                        if (prog->extflags & RXf_USE_INTUIT) {
-                            s = re_intuit_start(rx, sv, strbeg,
-                                    s + UTF8SKIP(s), strend, flags, NULL);
-                            if (!s) {
-                                goto phooey;
-                            }
-                        }
-                        else {
-                            s += UTF8SKIP(s);
-                        }
-                    }
-                } /* end search for check string in unicode */
-                else {
-                    if (s == startpos) {
-                        goto after_try_latin;
-                    }
-                    while (1) {
-                        if (regtry(reginfo, &s)) {
-                            goto got_it;
-                        }
-                      after_try_latin:
-                        if (s > end) {
-                            goto phooey;
-                        }
-                        if (prog->extflags & RXf_USE_INTUIT) {
-                            s = re_intuit_start(rx, sv, strbeg,
-                                        s + 1, strend, flags, NULL);
-                            if (!s) {
-                                goto phooey;
-                            }
-                        }
-                        else {
-                            s++;
-                        }
-                    }
-                } /* end search for check string in latin*/
-    } /* end search for check string */
-    else { /* search for newline */
- if (s > startpos) {
-                    /*XXX: The s-- is almost definitely wrong here under unicode - demeprhq*/
-    s--;
- }
- /* We can use a more efficient search as newlines are the same in unicode as they are in latin */
- while (s <= end) { /* note it could be possible to match at the end of the string */
-    if (*s++ == '\n') { /* don't need PL_utf8skip here */
- if (regtry(reginfo, &s))
-    goto got_it;
-    }
- }
-    } /* end search for newline */
- } /* end anchored/multiline check string search */
- goto phooey;
-    } else if (prog->intflags & PREGf_ANCH_GPOS)
+        if (!(prog->intflags & PREGf_ANCH_MBOL))
+            goto phooey;
+
+        /* didn't match at start, try at other newline positions */
+
+        if (minlen)
+            dontbother = minlen - 1;
+        end = HOP3c(strend, -dontbother, strbeg) - 1;
+
+        /* skip to next newline */
+
+        while (s <= end) { /* note it could be possible to match at the end of the string */
+            /* NB: newlines are the same in unicode as they are in latin */
+            if (*s++ != '\n')
+                continue;
+            if (prog->check_substr || prog->check_utf8) {
+            /* note that with PREGf_IMPLICIT, intuit can only fail
+             * or return the start position, so it's of limited utility.
+             * Nevertheless, I made the decision that the potential for
+             * quick fail was still worth it - DAPM */
+                s = re_intuit_start(rx, sv, strbeg, s, strend, flags, NULL);
+                if (!s)
+                    goto phooey;
+            }
+            if (regtry(reginfo, &s))
+                goto got_it;
+        }
+        goto phooey;
+    } /* end anchored search */
+
+    if (prog->intflags & PREGf_ANCH_GPOS)
     {
         /* PREGf_ANCH_GPOS should never be true if PREGf_GPOS_SEEN is not true */
         assert(prog->intflags & PREGf_GPOS_SEEN);
Index: gnu/usr.bin/perl/sv.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/sv.c,v
retrieving revision 1.21
diff -u -p -u -p -r1.21 sv.c
--- gnu/usr.bin/perl/sv.c 25 Apr 2015 19:14:38 -0000 1.21
+++ gnu/usr.bin/perl/sv.c 28 Jun 2016 18:04:57 -0000
@@ -12698,7 +12698,7 @@ S_sv_dup_common(pTHX_ const SV *const ss
     }
     items = AvMAX((const AV *)sstr) - AvFILLp((const AV *)sstr);
     while (items-- > 0) {
- *dst_ary++ = &PL_sv_undef;
+ *dst_ary++ = NULL;
     }
  }
  else {
Index: gnu/usr.bin/perl/sv.h
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/sv.h,v
retrieving revision 1.18
diff -u -p -u -p -r1.18 sv.h
--- gnu/usr.bin/perl/sv.h 25 Apr 2015 19:14:38 -0000 1.18
+++ gnu/usr.bin/perl/sv.h 28 Jun 2016 18:04:57 -0000
@@ -792,13 +792,18 @@ C<SvIV_set> instead of the lvalue assign
 Set the value of the NV pointer in sv to val.  See C<SvIV_set>.
 
 =for apidoc Am|void|SvPV_set|SV* sv|char* val
-Set the value of the PV pointer in C<sv> to the C<NUL>-terminated string
-C<val>.  See also C<SvIV_set>.
+This is probably not what you want to use, you probably wanted
+L</sv_usepvn_flags> or L</sv_setpvn> or L</sv_setpvs>.
 
+Set the value of the PV pointer in C<sv> to the Perl allocated
+C<NUL>-terminated string C<val>.  See also C<SvIV_set>.
+
+Remember to free the previous PV buffer. There are many things to check.
 Beware that the existing pointer may be involved in copy-on-write or other
 mischief, so do C<SvOOK_off(sv)> and use C<sv_force_normal> or
 C<SvPV_force> (or check the SvIsCOW flag) first to make sure this
-modification is safe.
+modification is safe. Then finally, if it is not a COW, call C<SvPV_free> to
+free the previous PV buffer.
 
 =for apidoc Am|void|SvUV_set|SV* sv|UV val
 Set the value of the UV pointer in sv to val.  See C<SvIV_set>.
Index: gnu/usr.bin/perl/toke.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/toke.c,v
retrieving revision 1.19
diff -u -p -u -p -r1.19 toke.c
--- gnu/usr.bin/perl/toke.c 25 Apr 2015 19:14:38 -0000 1.19
+++ gnu/usr.bin/perl/toke.c 28 Jun 2016 18:04:57 -0000
@@ -1301,7 +1301,7 @@ buffer has reached the end of the input
 */
 
 #define LEX_FAKE_EOF 0x80000000
-#define LEX_NO_TERM  0x40000000
+#define LEX_NO_TERM  0x40000000 /* here-doc */
 
 bool
 Perl_lex_next_chunk(pTHX_ U32 flags)
@@ -1315,6 +1315,8 @@ Perl_lex_next_chunk(pTHX_ U32 flags)
     bool got_some;
     if (flags & ~(LEX_KEEP_PREVIOUS|LEX_FAKE_EOF|LEX_NO_TERM))
  Perl_croak(aTHX_ "Lexing code internal error (%s)", "lex_next_chunk");
+    if (!(flags & LEX_NO_TERM) && PL_lex_inwhat)
+ return FALSE;
     linestr = PL_parser->linestr;
     buf = SvPVX(linestr);
     if (!(flags & LEX_KEEP_PREVIOUS) &&
@@ -1960,7 +1962,7 @@ S_skipspace_flags(pTHX_ char *s, U32 fla
  STRLEN bufptr_pos = PL_bufptr - SvPVX(PL_linestr);
  PL_bufptr = s;
  lex_read_space(flags | LEX_KEEP_PREVIOUS |
- (PL_sublex_info.sub_inwhat || PL_lex_state == LEX_FORMLINE ?
+ (PL_lex_inwhat || PL_lex_state == LEX_FORMLINE ?
     LEX_NO_NEXT_CHUNK : 0));
  s = PL_bufptr;
  PL_bufptr = SvPVX(PL_linestr) + bufptr_pos;
@@ -1997,7 +1999,7 @@ S_check_uni(pTHX)
  PL_last_uni++;
     s = PL_last_uni;
     while (isWORDCHAR_lazy_if(s,UTF) || *s == '-')
- s++;
+ s += UTF ? UTF8SKIP(s) : 1;
     if ((t = strchr(s, '(')) && t < PL_bufptr)
  return;
 
@@ -2795,7 +2797,6 @@ S_sublex_done(pTHX)
  PL_bufend = SvPVX(PL_linestr);
  PL_bufend += SvCUR(PL_linestr);
  PL_expect = XOPERATOR;
- PL_sublex_info.sub_inwhat = 0;
  return ')';
     }
 }
@@ -5197,7 +5198,8 @@ Perl_yylex(pTHX)
  if (PL_madskills)
     PL_faketokens = 0;
 #endif
- if (!PL_rsfp && (!PL_parser->filtered || s+1 < PL_bufend)) {
+ if ((!PL_rsfp || PL_lex_inwhat)
+ && (!PL_parser->filtered || s+1 < PL_bufend)) {
     PL_last_uni = 0;
     PL_last_lop = 0;
     if (PL_lex_brackets &&
@@ -6107,6 +6109,7 @@ Perl_yylex(pTHX)
  }
  switch (PL_expect) {
  case XTERM:
+ case XTERMORDORDOR:
     PL_lex_brackstack[PL_lex_brackets++] = XOPERATOR;
     PL_lex_allbrackets++;
     OPERATOR(HASHBRACK);
@@ -6621,7 +6624,7 @@ Perl_yylex(pTHX)
  char *t = s+1;
 
  while (isSPACE(*t) || isWORDCHAR_lazy_if(t,UTF) || *t == '$')
-    t++;
+    t += UTF ? UTF8SKIP(t) : 1;
  if (*t++ == ',') {
     PL_bufptr = PEEKSPACE(PL_bufptr); /* XXX can realloc */
     while (t < PL_bufend && *t != ']')
@@ -10060,10 +10063,14 @@ S_scan_heredoc(pTHX_ char *s)
     term = '"';
  if (!isWORDCHAR_lazy_if(s,UTF))
     deprecate("bare << to mean <<\"\"");
- for (; isWORDCHAR_lazy_if(s,UTF); s++) {
-    if (d < e)
- *d++ = *s;
- }
+ peek = s;
+ while (isWORDCHAR_lazy_if(peek,UTF)) {
+    peek += UTF ? UTF8SKIP(peek) : 1;
+ }
+ len = (peek - s >= e - d) ? (e - d) : (peek - s);
+ Copy(s, d, len, char);
+ s += len;
+ d += len;
     }
     if (d >= PL_tokenbuf + sizeof PL_tokenbuf - 1)
  Perl_croak(aTHX_ "Delimiter for here document is too long");
Index: gnu/usr.bin/perl/util.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/util.c,v
retrieving revision 1.23
diff -u -p -u -p -r1.23 util.c
--- gnu/usr.bin/perl/util.c 25 Apr 2015 19:26:15 -0000 1.23
+++ gnu/usr.bin/perl/util.c 28 Jun 2016 18:04:57 -0000
@@ -1877,7 +1877,10 @@ Perl_vwarner(pTHX_ U32  err, const char*
 {
     dVAR;
     PERL_ARGS_ASSERT_VWARNER;
-    if (PL_warnhook == PERL_WARNHOOK_FATAL || ckDEAD(err)) {
+    if (
+        (PL_warnhook == PERL_WARNHOOK_FATAL || ckDEAD(err)) &&
+        !(PL_in_eval & EVAL_KEEPERR)
+    ) {
  SV * const msv = vmess(pat, args);
 
  invoke_exception_hook(msv, FALSE);
Index: gnu/usr.bin/perl/Cross/config.sh-arm-linux
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Cross/config.sh-arm-linux,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 config.sh-arm-linux
--- gnu/usr.bin/perl/Cross/config.sh-arm-linux 25 Apr 2015 19:26:21 -0000 1.4
+++ gnu/usr.bin/perl/Cross/config.sh-arm-linux 28 Jun 2016 18:04:57 -0000
@@ -34,10 +34,10 @@ aphostname='/bin/hostname'
 api_revision='5'
 api_subversion='0'
 api_version='20'
-api_versionstring='5.20.2'
+api_versionstring='5.20.0'
 ar='ar'
-archlib='/usr/lib/perl5/5.20.2/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.20.2/armv4l-linux'
+archlib='/usr/lib/perl5/5.20.3/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.20.3/armv4l-linux'
 archname64=''
 archname='armv4l-linux'
 archobjs=''
@@ -56,7 +56,7 @@ castflags='0'
 cat='cat'
 cc='cc'
 cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.20.2/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.20.3/armv4l-linux/CORE'
 ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccname='arm-linux-gcc'
@@ -729,7 +729,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.20.2/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.20.3/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -737,13 +737,13 @@ installman1dir='./install_me_here/usr/sh
 installman3dir='./install_me_here/usr/share/man/man3'
 installprefix='./install_me_here/usr'
 installprefixexp='./install_me_here/usr'
-installprivlib='./install_me_here/usr/lib/perl5/5.20.2'
+installprivlib='./install_me_here/usr/lib/perl5/5.20.3'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.20.2/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.20.3/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.20.2'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.20.3'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -872,8 +872,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.20.2'
-privlibexp='/usr/lib/perl5/5.20.2'
+privlib='/usr/lib/perl5/5.20.3'
+privlibexp='/usr/lib/perl5/5.20.3'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -938,17 +938,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0'
 sig_size='68'
 signal_t='void'
-sitearch='/usr/lib/perl5/site_perl/5.20.2/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.20.2/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.20.3/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.20.3/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.20.2'
+sitelib='/usr/lib/perl5/site_perl/5.20.3'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.20.2'
+sitelibexp='/usr/lib/perl5/site_perl/5.20.3'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -987,7 +987,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='2'
+subversion='3'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1077,8 +1077,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.20.2'
-version_patchlevel_string='version 20 subversion 2'
+version='5.20.3'
+version_patchlevel_string='version 20 subversion 3'
 versiononly='undef'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1092,7 +1092,7 @@ config_args=''
 config_argc=0
 PERL_REVISION=5
 PERL_VERSION=20
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
 PERL_API_REVISION=5
 PERL_API_VERSION=20
 PERL_API_SUBVERSION=0
Index: gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770,v
retrieving revision 1.1.1.7
diff -u -p -u -p -r1.1.1.7 config.sh-arm-linux-n770
--- gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 25 Apr 2015 19:10:32 -0000 1.1.1.7
+++ gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 28 Jun 2016 18:04:57 -0000
@@ -34,10 +34,10 @@ aphostname='/bin/hostname'
 api_revision='5'
 api_subversion='0'
 api_version='20'
-api_versionstring='5.20.2'
+api_versionstring='5.20.0'
 ar='ar'
-archlib='/usr/lib/perl5/5.20.2/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.20.2/armv4l-linux'
+archlib='/usr/lib/perl5/5.20.3/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.20.3/armv4l-linux'
 archname64=''
 archname='armv4l-linux'
 archobjs=''
@@ -55,7 +55,7 @@ castflags='0'
 cat='cat'
 cc='arm-none-linux-gnueabi-gcc'
 cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.20.2/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.20.3/armv4l-linux/CORE'
 ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccname='arm-linux-gcc'
@@ -699,7 +699,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.20.2/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.20.3/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -707,13 +707,13 @@ installman1dir='./install_me_here/usr/sh
 installman3dir='./install_me_here/usr/share/man/man3'
 installprefix='./install_me_here/usr'
 installprefixexp='./install_me_here/usr'
-installprivlib='./install_me_here/usr/lib/perl5/5.20.2'
+installprivlib='./install_me_here/usr/lib/perl5/5.20.3'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.20.2/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.20.3/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.20.2'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.20.3'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -841,8 +841,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.20.2'
-privlibexp='/usr/lib/perl5/5.20.2'
+privlib='/usr/lib/perl5/5.20.3'
+privlibexp='/usr/lib/perl5/5.20.3'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -903,17 +903,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0'
 sig_size='68'
 signal_t='void'
-sitearch='/usr/lib/perl5/site_perl/5.20.2/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.20.2/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.20.3/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.20.3/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.20.2'
+sitelib='/usr/lib/perl5/site_perl/5.20.3'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.20.2'
+sitelibexp='/usr/lib/perl5/site_perl/5.20.3'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -950,7 +950,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='2'
+subversion='3'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1035,8 +1035,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.20.2'
-version_patchlevel_string='version 20 subversion 2'
+version='5.20.3'
+version_patchlevel_string='version 20 subversion 3'
 versiononly='undef'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1050,7 +1050,7 @@ config_args=''
 config_argc=0
 PERL_REVISION=5
 PERL_VERSION=20
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
 PERL_API_REVISION=5
 PERL_API_VERSION=20
 PERL_API_SUBVERSION=0
Index: gnu/usr.bin/perl/NetWare/Makefile
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/NetWare/Makefile,v
retrieving revision 1.1.1.13
diff -u -p -u -p -r1.1.1.13 Makefile
--- gnu/usr.bin/perl/NetWare/Makefile 25 Apr 2015 19:10:41 -0000 1.1.1.13
+++ gnu/usr.bin/perl/NetWare/Makefile 28 Jun 2016 18:04:57 -0000
@@ -86,7 +86,7 @@ NLM_VERSION    = 3,20,0
 
 
 # Here comes the CW tools - TO BE FILLED TO BUILD WITH CW -
-MODULE_DESC     = "Perl 5.20.2 for NetWare"
+MODULE_DESC     = "Perl 5.20.3 for NetWare"
 CCTYPE          = CodeWarrior
 C_COMPILER = mwccnlm -c
 CPP_COMPILER = mwccnlm
@@ -462,7 +462,7 @@ INST_NW_TOP2 = $(INST_NW_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-INST_VER = \5.20.2
+INST_VER = \5.20.3
 
 #
 # Comment this out if you DON'T want your perl installation to have
Index: gnu/usr.bin/perl/NetWare/config_H.wc
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/NetWare/config_H.wc,v
retrieving revision 1.1.1.11
diff -u -p -u -p -r1.1.1.11 config_H.wc
--- gnu/usr.bin/perl/NetWare/config_H.wc 25 Apr 2015 19:10:41 -0000 1.1.1.11
+++ gnu/usr.bin/perl/NetWare/config_H.wc 28 Jun 2016 18:04:57 -0000
@@ -1042,7 +1042,7 @@
  * This symbol contains the ~name expanded version of ARCHLIB, to be used
  * in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define ARCHLIB "c:\\perl\\5.20.2\\lib\\NetWare-x86-multi-thread" /**/
+#define ARCHLIB "c:\\perl\\5.20.3\\lib\\NetWare-x86-multi-thread" /**/
 /*#define ARCHLIB_EXP "" /**/
 
 /* ARCHNAME:
@@ -1073,8 +1073,8 @@
  * This symbol is the filename expanded version of the BIN symbol, for
  * programs that do not want to deal with that at run-time.
  */
-#define BIN "c:\\perl\\5.20.2\\bin\\NetWare-x86-multi-thread" /**/
-#define BIN_EXP "c:\\perl\\5.20.2\\bin\\NetWare-x86-multi-thread" /**/
+#define BIN "c:\\perl\\5.20.3\\bin\\NetWare-x86-multi-thread" /**/
+#define BIN_EXP "c:\\perl\\5.20.3\\bin\\NetWare-x86-multi-thread" /**/
 
 /* BYTEORDER:
  * This symbol holds the hexadecimal constant defined in byteorder,
@@ -3051,7 +3051,7 @@
  * This symbol contains the ~name expanded version of SITEARCH, to be used
  * in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define SITEARCH "c:\\perl\\site\\5.20.2\\lib\\NetWare-x86-multi-thread" /**/
+#define SITEARCH "c:\\perl\\site\\5.20.3\\lib\\NetWare-x86-multi-thread" /**/
 /*#define SITEARCH_EXP "" /**/
 
 /* SITELIB:
@@ -3074,7 +3074,7 @@
  * removed.  The elements in inc_version_list (inc_version_list.U) can
  * be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "c:\\perl\\site\\5.20.2\\lib" /**/
+#define SITELIB "c:\\perl\\site\\5.20.3\\lib" /**/
 /*#define SITELIB_EXP "" /**/
 #define SITELIB_STEM "" /**/
 
Index: gnu/usr.bin/perl/Porting/Maintainers.pl
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Porting/Maintainers.pl,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 Maintainers.pl
--- gnu/usr.bin/perl/Porting/Maintainers.pl 25 Apr 2015 19:26:21 -0000 1.8
+++ gnu/usr.bin/perl/Porting/Maintainers.pl 28 Jun 2016 18:04:57 -0000
@@ -844,7 +844,7 @@ use File::Glob qw(:case);
     },
 
     'Module::CoreList' => {
-        'DISTRIBUTION' => 'BINGOS/Module-CoreList-3.10.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20150720.tar.gz',
         'FILES'        => q[dist/Module-CoreList],
     },
 
Index: gnu/usr.bin/perl/Porting/checkAUTHORS.pl
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Porting/checkAUTHORS.pl,v
retrieving revision 1.1.1.8
diff -u -p -u -p -r1.1.1.8 checkAUTHORS.pl
--- gnu/usr.bin/perl/Porting/checkAUTHORS.pl 17 Nov 2014 20:53:16 -0000 1.1.1.8
+++ gnu/usr.bin/perl/Porting/checkAUTHORS.pl 28 Jun 2016 18:04:57 -0000
@@ -691,6 +691,8 @@ keith.s.thompson\100gmail.com          
 ken\100mathforum.org                    kenahoo\100gmail.com
 +                                       ken.williams\100thomsonreuters.com
 kentfredric\100gmail.com                kentnl\100cpan.org
+kmx\100volny.cz                         kmx\100volny.cz
++                                       kmx\100cpan.org
 kroepke\100dolphin-services.de          kay\100dolphin-services.de
 kst\100mib.org                          kst\100cts.com
 +                                       kst\100SDSC.EDU
Index: gnu/usr.bin/perl/Porting/cmpVERSION.pl
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Porting/cmpVERSION.pl,v
retrieving revision 1.1.1.7
diff -u -p -u -p -r1.1.1.7 cmpVERSION.pl
--- gnu/usr.bin/perl/Porting/cmpVERSION.pl 25 Apr 2015 19:10:45 -0000 1.1.1.7
+++ gnu/usr.bin/perl/Porting/cmpVERSION.pl 28 Jun 2016 18:04:57 -0000
@@ -42,7 +42,7 @@ unless (defined $tag_to_compare) {
         $check = `git describe --abbrev=0 $check 2>$null`;
         chomp $check;
         last unless $check =~ /-RC/;
-        $check .= '^';
+        $check .= '~1';
     }
     $tag_to_compare = $check;
     # Thanks to David Golden for this suggestion.
Index: gnu/usr.bin/perl/Porting/config.sh
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Porting/config.sh,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 config.sh
--- gnu/usr.bin/perl/Porting/config.sh 25 Apr 2015 19:26:21 -0000 1.4
+++ gnu/usr.bin/perl/Porting/config.sh 28 Jun 2016 18:04:57 -0000
@@ -41,10 +41,10 @@ aphostname='/bin/hostname'
 api_revision='5'
 api_subversion='0'
 api_version='20'
-api_versionstring='5.20.2'
+api_versionstring='5.20.0'
 ar='ar'
-archlib='/pro/lib/perl5/5.20.2/i686-linux-64int'
-archlibexp='/pro/lib/perl5/5.20.2/i686-linux-64int'
+archlib='/pro/lib/perl5/5.20.3/i686-linux-64int'
+archlibexp='/pro/lib/perl5/5.20.3/i686-linux-64int'
 archname64='64int'
 archname='i686-linux-64int'
 archobjs=''
@@ -746,7 +746,7 @@ incpath=''
 incpth='/usr/lib/gcc/i586-suse-linux/4.8/include /usr/local/include /usr/lib/gcc/i586-suse-linux/4.8/include-fixed /usr/lib/gcc/i586-suse-linux/4.8/../../../../i586-suse-linux/include /usr/include'
 inews=''
 initialinstalllocation='/pro/bin'
-installarchlib='/pro/lib/perl5/5.20.2/i686-linux-64int'
+installarchlib='/pro/lib/perl5/5.20.3/i686-linux-64int'
 installbin='/pro/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -754,13 +754,13 @@ installman1dir='/pro/local/man/man1'
 installman3dir='/pro/local/man/man3'
 installprefix='/pro'
 installprefixexp='/pro'
-installprivlib='/pro/lib/perl5/5.20.2'
+installprivlib='/pro/lib/perl5/5.20.3'
 installscript='/pro/bin'
-installsitearch='/pro/lib/perl5/site_perl/5.20.2/i686-linux-64int'
+installsitearch='/pro/lib/perl5/site_perl/5.20.3/i686-linux-64int'
 installsitebin='/pro/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='/pro/lib/perl5/site_perl/5.20.2'
+installsitelib='/pro/lib/perl5/site_perl/5.20.3'
 installsiteman1dir='/pro/local/man/man1'
 installsiteman3dir='/pro/local/man/man3'
 installsitescript='/pro/bin'
@@ -884,7 +884,7 @@ perl_patchlevel=''
 perl_static_inline='static __inline__'
 perladmin='[hidden email]'
 perllibs='-lnsl -ldl -lm -lcrypt -lutil -lc'
-perlpath='/pro/bin/perl5.20.2'
+perlpath='/pro/bin/perl5.20.3'
 pg='pg'
 phostname='hostname'
 pidtype='pid_t'
@@ -893,8 +893,8 @@ pmake=''
 pr=''
 prefix='/pro'
 prefixexp='/pro'
-privlib='/pro/lib/perl5/5.20.2'
-privlibexp='/pro/lib/perl5/5.20.2'
+privlib='/pro/lib/perl5/5.20.3'
+privlibexp='/pro/lib/perl5/5.20.3'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -960,17 +960,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 31, 0'
 sig_size='69'
 signal_t='void'
-sitearch='/pro/lib/perl5/site_perl/5.20.2/i686-linux-64int'
-sitearchexp='/pro/lib/perl5/site_perl/5.20.2/i686-linux-64int'
+sitearch='/pro/lib/perl5/site_perl/5.20.3/i686-linux-64int'
+sitearchexp='/pro/lib/perl5/site_perl/5.20.3/i686-linux-64int'
 sitebin='/pro/bin'
 sitebinexp='/pro/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/pro/lib/perl5/site_perl/5.20.2'
+sitelib='/pro/lib/perl5/site_perl/5.20.3'
 sitelib_stem='/pro/lib/perl5/site_perl'
-sitelibexp='/pro/lib/perl5/site_perl/5.20.2'
+sitelibexp='/pro/lib/perl5/site_perl/5.20.3'
 siteman1dir='/pro/local/man/man1'
 siteman1direxp='/pro/local/man/man1'
 siteman3dir='/pro/local/man/man3'
@@ -996,7 +996,7 @@ src='.'
 ssizetype='ssize_t'
 st_ino_sign='1'
 st_ino_size='8'
-startperl='#!/pro/bin/perl5.20.2'
+startperl='#!/pro/bin/perl5.20.3'
 startsh='#!/bin/sh'
 static_ext=' '
 stdchar='char'
@@ -1009,7 +1009,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='2'
+subversion='3'
 sysman='/usr/share/man/man1'
 sysroot=''
 tail=''
@@ -1106,8 +1106,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.20.2'
-version_patchlevel_string='version 20 subversion 2'
+version='5.20.3'
+version_patchlevel_string='version 20 subversion 3'
 versiononly='define'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1117,7 +1117,7 @@ zcat=''
 zip='zip'
 PERL_REVISION=5
 PERL_VERSION=20
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
 PERL_API_REVISION=5
 PERL_API_VERSION=20
 PERL_API_SUBVERSION=0
Index: gnu/usr.bin/perl/Porting/config_H
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Porting/config_H,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 config_H
--- gnu/usr.bin/perl/Porting/config_H 25 Apr 2015 19:14:43 -0000 1.16
+++ gnu/usr.bin/perl/Porting/config_H 28 Jun 2016 18:04:57 -0000
@@ -960,8 +960,8 @@
  * This symbol contains the ~name expanded version of ARCHLIB, to be used
  * in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define ARCHLIB "/pro/lib/perl5/5.20.2/i686-linux-64int-ld" /**/
-#define ARCHLIB_EXP "/pro/lib/perl5/5.20.2/i686-linux-64int-ld" /**/
+#define ARCHLIB "/pro/lib/perl5/5.20.3/i686-linux-64int-ld" /**/
+#define ARCHLIB_EXP "/pro/lib/perl5/5.20.3/i686-linux-64int-ld" /**/
 
 /* ARCHNAME:
  * This symbol holds a string representing the architecture name.
@@ -2068,8 +2068,8 @@
  * This symbol contains the ~name expanded version of PRIVLIB, to be used
  * in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define PRIVLIB "/pro/lib/perl5/5.20.2" /**/
-#define PRIVLIB_EXP "/pro/lib/perl5/5.20.2" /**/
+#define PRIVLIB "/pro/lib/perl5/5.20.3" /**/
+#define PRIVLIB_EXP "/pro/lib/perl5/5.20.3" /**/
 
 /* PTRSIZE:
  * This symbol contains the size of a pointer, so that the C preprocessor
@@ -2119,8 +2119,8 @@
  * This symbol contains the ~name expanded version of SITEARCH, to be used
  * in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define SITEARCH "/pro/lib/perl5/site_perl/5.20.2/i686-linux-64int-ld" /**/
-#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.20.2/i686-linux-64int-ld" /**/
+#define SITEARCH "/pro/lib/perl5/site_perl/5.20.3/i686-linux-64int-ld" /**/
+#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.20.3/i686-linux-64int-ld" /**/
 
 /* SITELIB:
  * This symbol contains the name of the private library for this package.
@@ -2142,8 +2142,8 @@
  * removed.  The elements in inc_version_list (inc_version_list.U) can
  * be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "/pro/lib/perl5/site_perl/5.20.2" /**/
-#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.20.2" /**/
+#define SITELIB "/pro/lib/perl5/site_perl/5.20.3" /**/
+#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.20.3" /**/
 #define SITELIB_STEM "/pro/lib/perl5/site_perl" /**/
 
 /* SSize_t:
@@ -4332,7 +4332,7 @@
  * script to make sure (one hopes) that it runs with perl and not
  * some shell.
  */
-#define STARTPERL "#!/pro/bin/perl5.20.2" /**/
+#define STARTPERL "#!/pro/bin/perl5.20.3" /**/
 
 /* HAS_STDIO_STREAM_ARRAY:
  * This symbol, if defined, tells that there is an array
Index: gnu/usr.bin/perl/Porting/epigraphs.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Porting/epigraphs.pod,v
retrieving revision 1.1.1.4
diff -u -p -u -p -r1.1.1.4 epigraphs.pod
--- gnu/usr.bin/perl/Porting/epigraphs.pod 25 Apr 2015 19:10:45 -0000 1.1.1.4
+++ gnu/usr.bin/perl/Porting/epigraphs.pod 28 Jun 2016 18:04:57 -0000
@@ -17,6 +17,295 @@ Consult your favorite dictionary for det
 
 =head1 EPIGRAPHS
 
+=head2 v5.20.3-RC2 - Anon., trans. Malcolm C. Lyons, "The Story of Abu Muhammad the Idle and the Marvels He Encountered with the Ape As Well As the Marvels of the Seas and Islands", from "Tales of the Marvellous and News of the Strange"
+
+L<Announced on 2015-08-29 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2015/08/msg230544.html>
+
+'I fled from Basra, sad and tearful, with no idea where I was going,
+and I was reciting these lines:
+
+  The pain of parting makes me melt away,
+  As lovers do when those they love are harsh.
+  I wonder at the patience that I showed
+  When I had lost my love, for that was wonderful.
+  Beloved, do you know that since you left,
+  I have remained confused in misery.
+
+I then heard a voice that said: "Damn you, have you no fear of
+Almighty God that you hand over a girl to an unbelieving 'ifrit?"  I
+walked for a time amongst the palm-trees until I caught sight of a
+person, whom I approached.  When I asked him who he was he said: "I
+am one of the jinn who were converted to Islam at the hands of 'Ali
+ibn Abi Talib, may God ennoble him."  "How can I get to my wife?" I
+asked him, and he said: "Wretched fellow, you had a bird which you
+allowed to fly away and now you want to fly after it."  But he
+added: "Follow this road with God's blessing all night until dawn
+and then by the shore you will see a huge cave in which there is an
+idol made of white stone.  You must drink of the water that there is
+coming out of the cave and smear your face with its mud.  Stay there
+and a barge will pass you as you stand opposite the statue.  Various
+different creatures will emerge, heads without bodies and bodies
+without heads, and they will prostrate themselves in adoration to
+the idol rather than to Almighty God.  When you see that, embark on
+the barge and cross to the other bank and walk along it until
+sunset.  On a high point you will see a castle built of bricks of
+gold and silver.  That is where your 'ifrit will be.  I have now
+told you about this, so goodbye."
+
+=head2 v5.20.3-RC1 - Anon., trans. Malcolm C. Lyons, "The Story of Abu Muhammad the Idle and the Marvels He Encountered with the Ape As Well As the Marvels of the Seas and Islands", from "Tales of the Marvellous and News of the Strange"
+
+L<Announced on 2015-08-22 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2015/08/msg230359.html>
+
+'On the night of the wedding the ape came to sit in front of me and
+asked me what I intended to do.  "Whatever you tell me," I replied,
+and he said: "Take care not to covet the girl, or I shall come back
+and burn you up and leave you as a lesson for those who can learn."
+I agreed to this and when evening came I found the world full of
+candles and torches burning in holders of gold and silver.  There
+were servants and serving girls, and everyone who saw me
+congratulated me on my good fortune, as there was no girl on the
+face of the earth more beautiful than my bride.
+[...]
+'Next morning I went out to the market, and people went in and asked
+her how the night had been.  "He never looked up at me," she told
+them.  Then, when it was afternoon, I went to my house, where the
+ape was sitting by the door.  "Tell me what you did," it said, and I
+told it: "By God, I did not learn and do not know whether this was a
+man or a girl."  "That's what I want," it said.
+[...]
+'On the second night my bride was brought to me, after which the
+servants left her and went away.  She fell asleep, and, while she
+was sleeping, I killed the cock, wrapped it in the cloth and put the
+four poles from the couch over it.  Suddenly there was a huge crash
+like a peal of thunder and a fiery 'ifrit swooped on the girl.  I
+fainted at the sight and when I recovered I heard a voice saying:
+"By the Lord of the Ka'ba, the girl has been carried off!" and there
+was a sound like the rustling of wind and bitter weeping.  At this I
+shed tears, struck my head and was filled with regret when it was no
+longer of any use, for to me the whole world was worth no more than
+a bean.
+
+=head2 v5.23.2 - Blind Guardian, "Skalds and Shadows"
+
+L<Announced on 2015-08-20 by Matthew Horsfall|http://www.nntp.perl.org/group/perl.perl5.porters/2015/08/msg230298.html>
+
+  Would you believe in a night like this
+  A night like this, when visions come true
+  Would you believe in a tale like this
+  A lay of bliss, praise in the old lore
+  Come to the blazing fire and
+
+  See me in the shadows
+  See me in the shadows
+  Songs I will sing
+  Of runes and rings
+  Just hand me my harp
+  This night turns into myth
+  Nothing seems real
+  You soon will feel
+  The world we live in is another skald's
+  Dream in the shadows
+  Dream in the shadows
+
+  Do you believe there is sense in it
+  Is it truth or myth?
+  They´re one in my rhymes
+  Nobody knows the meaning behind
+  The weaver's line
+  Well nobody else but the Norns can
+  See through the blazing fires of time and
+  All things will proceed as the
+  Child of the hallowed
+  Will speak to you now
+
+  See me in the shadows
+  See me in the shadows
+  Songs I will sing of tribes and kings
+  The carrion bird and the hall of the slain
+  Nothing seems real
+  You soon will feel
+  The world we live in is another skald´s
+  Dream in the shadows
+  Dream in the shadows
+
+  Do not fear for my reason
+  There's nothing to hide
+  How bitter your treason
+  How bitter the lie
+  Remember the runes and remember the light
+  All I ever want is to be at your side
+  We'll gladden the raven now I will
+  Run through the blazing fires
+  That's my choice
+  Cause things shall proceed as foreseen
+
+=head2 v5.23.1 - Elizabeth Haydon, "The Assassin King"
+
+L<Announced on 2015-07-20 by Matthew Horsfall|http://www.nntp.perl.org/group/perl.perl5.porters/2015/07/msg229413.html>
+
+  I was born beneath this willow,
+  Where my sire the earth did farm
+  Had the green grass as my pillow
+  The east wind as a blanket warm.
+
+  But away! away! called the wind from the west
+  And in answer I did run
+  Seeking glory and adventure
+  Promised by the rising sun.
+
+  I found love beneath this willow,
+  As true a love as life could hold,
+  Pledged my heart and swore my fealty
+  Sealed with a kiss and a band of gold.
+
+  But to arms! to arms! called the wind from the west
+  In faithful answer I did run
+  Marching forth for king and country
+  In battles 'neath the midday sun.
+
+  Oft I dreamt of that fair willow
+  As the seven seas I plied
+  And the girl who I left waiting
+  Longing to be at her side.
+
+  But about! about! called the wind from the west
+  As once again my ship did run
+  Down the coast, about the wide world
+  Flying sails in the setting sun.
+
+  Now I lie beneath the willow
+  Now at last no more to roam,
+  My bride and earth so tightly hold me
+  In their arms I'm finally home.
+
+  While away! away! calls the wind from the west
+  Beyond the grave my spirit, free
+  Will chase the sun into the morning
+  Beyond the sky, beyond the sea.
+
+=head2 v5.23.0 - Bob Dylan, Maggie's Farm
+
+L<Announced on 2015-06-20 by Ricardo Signes|http://www.nntp.perl.org/group/perl.perl5.porters/2015/06/msg228807.html>
+
+  I ain't gonna work on Maggie's farm no more
+  I ain't gonna work on Maggie's farm no more
+  Well, I try my best
+  To be just like I am
+  But everybody wants you
+  To be just like them
+  They sing while you slave and I just get bored
+  I ain't gonna work on Maggie's farm no more
+
+=head2 v5.22.0 - Gene Wolfe, The Citadel of the Autarch
+
+L<Announced on 2015-06-01 by Ricardo Signes|http://www.nntp.perl.org/group/perl.perl5.porters/2015/06/msg228300.html>
+
+“You are the advocate of the dead.”
+
+The old man nodded. “I am. People talk about being fair to this one and
+that one, but nobody I ever heard talks about doing right by them. We
+take everything they had, which is all right. And spit, most often, on
+their opinions, which I suppose is all right too. But we ought to
+remember now and then how much of what we have we got from them. I
+figure while I’m still here I ought to put a word in for them.”
+
+=head2 v5.22.0-RC2 - T.S. Eliot, unpublished work
+
+L<Announced on 2015-05-21 by Ricardo Signes|http://www.nntp.perl.org/group/perl.perl5.porters/2015/05/msg228142.html>
+
+  And when thyself with silver foot shall pass
+  Among the theories scattered on the grass
+  Take up my good intentions with the rest
+
+=head2 v5.22.0-RC1 - Gene Wolfe, Citadel of the Autarch
+
+L<Announced on 2015-05-19 by Ricardo Signes|http://www.nntp.perl.org/group/perl.perl5.porters/2015/05/msg228059.html>
+
+There is no limit to stupidity. Space itself is said to be bounded by
+its own curvature, but stupidity continues beyond infinity.
+
+=head2 v5.21.11 - Algernon Charles Swinburne, "Dolores (Notre-Dame des Sept Douleurs)"
+
+L<Announced on 2015-04-20 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2015/04/msg227472.html>
+
+  They shall pass and their places be taken,
+    The gods and the priests that are pure.
+  They shall pass, and shalt thou not be shaken?
+    They shall perish, and shalt thou endure?
+  Death laughs, breathing close and relentless
+    In the nostrils and eyelids of lust,
+  With a pinch in his fingers of scentless
+    And delicate dust.
+
+  But the worm shall revive thee with kisses;
+    Thou shalt change and transmute as a god,
+  As the rod to a serpent that hisses,
+    As the serpent again to a rod.
+  Thy life shall not cease though thou doff it;
+    Thou shalt live until evil be slain,
+  And good shall die first, said thy prophet,
+    Our Lady of Pain.
+
+=head2 v5.21.10 - Aldous Huxley, "The Devils of Loudun"
+
+L<Announced on 2015-03-20 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2015/03/msg226847.html>
+
+The fire burned on, the good fathers continued to sprinkle and intone.
+Suddenly a flock of pigeons came swooping down from the church and
+started to wheel around the roaring column of flame and smoke.  The
+crowd shouted, the archers waved their halberds at the birds, Lactance
+and Tranquille splashed them on the wing with holy water.  In vain.  The
+pigeons were not to be driven away.  Round and round they flew, diving
+through the smoke, singeing their feathers in the flames.  Both parties
+claimed a miracle.  For the parson's enemies the birds, quite obviously,
+were a troop of devils, come to fetch away his soul.  For his friends,
+they were emblems of the Holy Ghost and living proof of his innocence.
+It never seems to have occurred to anyone that they were just pigeons,
+obeying the laws of their own, their blessedly other-than-human nature.
+
+=head2 v5.21.9 - Emily Dickinson, "There is Another Sky"
+
+L<Announced on 2015-02-20 by Sawyer X|http://www.nntp.perl.org/group/perl.perl5.porters/2015/02/msg226002.html>
+
+There is another sky,
+Ever serene and fair,
+And there is another sunshine,
+Though it be darkness there;
+Never mind faded forests, Austin,
+Never mind silent fields -
+Here is a little forest,
+Whose leaf is ever green;
+Here is a brighter garden,
+Where not a frost has been;
+In its unfading flowers
+I hear the bright bee hum:
+Prithee, my brother,
+Into my garden come!
+
+=head2 v5.20.2 - Jonathan "Jonti" Picking, L<"Magical Trevor"|http://www.weebls-stuff.com/other-toons/video/magical-trevor.html>
+
+L<Announced on 2015-02-14 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2015/02/msg225777.html>
+
+  Everyone loves Magical Trevor,
+  'Cos the tricks that he does are ever so clever;
+  Look at him now, disappearin' the cow,
+  Where is the cow hidden right now?
+
+  Taking a bow, it's Magical Trevor,
+  Everybody's seen that the trick is clever;
+  Look at him there with his leathery, leathery whip!
+  It's made of magic, and with a little flip--
+
+  Yeah, yeah, yeah, the cow is back,
+  Yeah, yeah, yeah, the cow is back;
+  Back, back, back from his magical journey,
+  Yeah!
+
+  What did he see in the parallel dimension?
+  He saw beans, lots of beans, lots of beans, lots of beans;
+  Oh, beans, lots of beans, lots of beans, lots of beans,
+  Yeah, yeah!
+
 =head2 v5.20.2-RC1 - Jonathan "Jonti" Picking, L<"Scampi"|http://www.weebls-stuff.com/other-toons/video/scampi.html>
 
 L<Announced on 2015-02-01 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2015/02/msg225273.html>
Index: gnu/usr.bin/perl/Porting/perldelta_template.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Porting/perldelta_template.pod,v
retrieving revision 1.1.1.5
diff -u -p -u -p -r1.1.1.5 perldelta_template.pod
--- gnu/usr.bin/perl/Porting/perldelta_template.pod 25 Apr 2015 19:10:46 -0000 1.1.1.5
+++ gnu/usr.bin/perl/Porting/perldelta_template.pod 28 Jun 2016 18:04:57 -0000
@@ -378,7 +378,7 @@ here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.20.2..HEAD
+  perl Porting/acknowledgements.pl v5.20.3..HEAD
 
 =head1 Reporting Bugs
 
Index: gnu/usr.bin/perl/Porting/release_managers_guide.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Porting/release_managers_guide.pod,v
retrieving revision 1.1.1.6
diff -u -p -u -p -r1.1.1.6 release_managers_guide.pod
--- gnu/usr.bin/perl/Porting/release_managers_guide.pod 25 Apr 2015 19:10:46 -0000 1.1.1.6
+++ gnu/usr.bin/perl/Porting/release_managers_guide.pod 28 Jun 2016 18:04:57 -0000
@@ -350,6 +350,15 @@ the raw reports.
 Similarly, monitor the smoking of perl for compiler warnings, and try to
 fix.
 
+=for checklist skip BLEAD-POINT
+
+=head3 monitor CPAN testers for failures
+
+For any release except a BLEAD-POINT: Examine the relevant analysis report(s)
+at http://analysis.cpantesters.org/beforemaintrelease to see how the impending
+release is performing compared to previous releases with regard to building
+and testing CPAN modules.
+
 =head3 update perldelta
 
 Get perldelta in a mostly finished state.
@@ -539,7 +548,7 @@ For each Perl release since the previous
 for modules that have identical version numbers but different contents by
 running:
 
-    $ ./perl Porting/cmpVERSION.pl --tag=v5.X.YY
+    $ ./perl -Ilib Porting/cmpVERSION.pl --tag=v5.X.YY
 
 (This is done automatically by F<t/porting/cmp_version.t> for the previous
 release of the current branch, but not for any releases from other branches.)
@@ -624,7 +633,10 @@ Also edit Module::CoreList's new version
 
 =head4 Add Module::CoreList version bump to perldelta
 
-Add a perldelta entry for the new Module::CoreList version.
+Add a perldelta entry for the new Module::CoreList version. You only
+need to do this if you want to add notes about the changes included
+with this version of Module::CoreList. Otherwise, its version bump
+will be automatically filled in below in L<finalize perldelta>.
 
 =for checklist skip RC
 
@@ -871,7 +883,7 @@ the tarball and directory name:
     $ git status           # and there's nothing lying around
 
     $ perl Porting/makerel -b -s RC1            # for a release candidate
-    $ perl Porting/makerel -b                   # for a final release
+    $ perl Porting/makerel -b                   # for the release itself
 
 This creates the  directory F<../perl-x.y.z-RC1> or similar, copies all
 the MANIFEST files into it, sets the correct permissions on them, then
Index: gnu/usr.bin/perl/Porting/todo.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/Porting/todo.pod,v
retrieving revision 1.1.1.4
diff -u -p -u -p -r1.1.1.4 todo.pod
--- gnu/usr.bin/perl/Porting/todo.pod 25 Apr 2015 19:10:46 -0000 1.1.1.4
+++ gnu/usr.bin/perl/Porting/todo.pod 28 Jun 2016 18:04:57 -0000
@@ -467,7 +467,7 @@ Natively 64-bit systems need neither -Du
 On these systems, it might be the default compilation mode, and there
 is currently no guarantee that passing no use64bitall option to the
 Configure process will build a 32bit perl. Implementing -Duse32bit*
-options would be nice for perl 5.20.2.
+options would be nice for perl 5.20.3.
 
 =head2 Profile Perl - am I hot or not?
 
@@ -1177,7 +1177,7 @@ L<http://www.xray.mpe.mpg.de/mailing-lis
 =head1 Big projects
 
 Tasks that will get your name mentioned in the description of the "Highlights
-of 5.20.2"
+of 5.20.3"
 
 =head2 make ithreads more robust
 
Index: gnu/usr.bin/perl/cpan/OpenBSD-MkTemp/t/OpenBSD-MkTemp.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/cpan/OpenBSD-MkTemp/t/OpenBSD-MkTemp.t,v
retrieving revision 1.5
diff -u -p -u -p -r1.5 OpenBSD-MkTemp.t
--- gnu/usr.bin/perl/cpan/OpenBSD-MkTemp/t/OpenBSD-MkTemp.t 8 May 2016 03:53:28 -0000 1.5
+++ gnu/usr.bin/perl/cpan/OpenBSD-MkTemp/t/OpenBSD-MkTemp.t 28 Jun 2016 18:04:57 -0000
@@ -10,6 +10,7 @@ use warnings;
 
 use Test::More;
 use Errno;
+use FileHandle;
 use Scalar::Util qw( openhandle );
 BEGIN { use_ok('OpenBSD::MkTemp') };
 
Index: gnu/usr.bin/perl/cpan/OpenBSD-Pledge/lib/OpenBSD/Pledge.pm
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/cpan/OpenBSD-Pledge/lib/OpenBSD/Pledge.pm,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 Pledge.pm
--- gnu/usr.bin/perl/cpan/OpenBSD-Pledge/lib/OpenBSD/Pledge.pm 29 Nov 2015 19:01:27 -0000 1.1
+++ gnu/usr.bin/perl/cpan/OpenBSD-Pledge/lib/OpenBSD/Pledge.pm 28 Jun 2016 18:04:57 -0000
@@ -94,7 +94,7 @@ L</pledge>.
 
 L<pledge(2)>
 
-L<http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man2/pledge.2>
+L<http://man.openbsd.org/pledge.2>
 
 =head1 AUTHOR
 
Index: gnu/usr.bin/perl/cpan/OpenBSD-Pledge/t/OpenBSD-Pledge.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/cpan/OpenBSD-Pledge/t/OpenBSD-Pledge.t,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 OpenBSD-Pledge.t
--- gnu/usr.bin/perl/cpan/OpenBSD-Pledge/t/OpenBSD-Pledge.t 29 Nov 2015 19:01:27 -0000 1.1
+++ gnu/usr.bin/perl/cpan/OpenBSD-Pledge/t/OpenBSD-Pledge.t 28 Jun 2016 18:04:57 -0000
@@ -82,7 +82,9 @@ xspledge_ok cpath => sub { mkdir q{/} };
 eval { OpenBSD::Pledge::_pledge( q{}, {} ) } && fail "Should have died";
 like $@, qr/not an ARRAY reference/ms, "Correct error for non arrayref";
 
+TODO:
 {
+local $TODO = 'Path support is disabled for now';
  my $pid = fork // die "Unable to fork: $!\n";
 
  if ( !$pid ) {
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 Configure.pm
--- gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm 7 May 2016 16:04:46 -0000 1.2
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm 28 Jun 2016 18:04:57 -0000
@@ -8,7 +8,7 @@
 #  merging into the original, please contact me at [hidden email] or
 #  CIS:70705,126
 #
-#  $Id: Configure.pm,v 1.2 2016/05/07 16:04:46 espie Exp $
+#  $Id: Configure.pm,v 2.21 2004/03/02 20:28:11 jonathan Exp $
 #
 
 # Todo: clean up redudant code in CPP, Compile, Link, and Execute
@@ -48,7 +48,6 @@ require Exporter;
               GetNumericSymbol
               GetConstants);
 
-#use Cwd;
 use Config;
 
 my ($C_usrinc, $C_libpth, $C_cppstdin, $C_cppflags, $C_cppminus,
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 Makefile.PL
--- gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL 7 May 2016 16:04:22 -0000 1.2
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL 28 Jun 2016 18:04:57 -0000
@@ -67,7 +67,7 @@ ReadKey.c: cchars.h
 sub MY::test {
  my $self = shift;
  $_ = $self->MM::test();
- s#example/test.pl#-w example/test.pl interactive#;
+ s#example/test.pl#-w example/test.pl#;
  $_;
 }
 
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs,v
retrieving revision 1.1.1.1
diff -u -p -u -p -r1.1.1.1 ReadKey.xs
--- gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs 7 May 2016 16:03:09 -0000 1.1.1.1
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs 28 Jun 2016 18:04:57 -0000
@@ -18,7 +18,7 @@
 
  Maintained by Jonathan Stowe <[hidden email]>
 
- $Id: ReadKey.xs,v 1.1.1.1 2016/05/07 16:03:09 espie Exp $
+ $Id: ReadKey.xs,v 2.22 2005/01/11 21:15:17 jonathan Exp $
 
  Version 2.21, Sun Jul 28 12:57:56 BST 2002
     Fix to improve the chances of automated testing succeeding
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl,v
retrieving revision 1.1.1.1
diff -u -p -u -p -r1.1.1.1 genchars.pl
--- gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl 7 May 2016 16:03:08 -0000 1.1.1.1
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl 28 Jun 2016 18:04:57 -0000
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 
 #
-# $Id: genchars.pl,v 1.1.1.1 2016/05/07 16:03:08 espie Exp $
+# $Id: genchars.pl,v 2.22 2005/01/11 21:15:17 jonathan Exp $
 #
 ##############################
 $version="1.97";
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl,v
retrieving revision 1.1.1.1
diff -u -p -u -p -r1.1.1.1 test.pl
--- gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl 7 May 2016 16:03:09 -0000 1.1.1.1
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl 28 Jun 2016 18:04:57 -0000
@@ -16,7 +16,7 @@
 
 my $interactive = ( @ARGV && $ARGV[0] =~ /interactive/ );
 
-BEGIN { print "1 .. 8\n"; }
+BEGIN { print "1..8\n"; }
 END { print "not ok 1\n" unless $loaded }
 use Term::ReadKey;
 
Index: gnu/usr.bin/perl/dist/Module-CoreList/Changes
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/dist/Module-CoreList/Changes,v
retrieving revision 1.1.1.5
diff -u -p -u -p -r1.1.1.5 Changes
--- gnu/usr.bin/perl/dist/Module-CoreList/Changes 25 Apr 2015 19:10:34 -0000 1.1.1.5
+++ gnu/usr.bin/perl/dist/Module-CoreList/Changes 28 Jun 2016 18:04:57 -0000
@@ -1,3 +1,26 @@
+5.20150912
+  - Updated for v5.20.3
+
+5.20150820
+  - Updated for v5.23.2
+
+5.20150720
+  - Updated for v5.23.1
+
+5.20150520
+  - Updated for v5.22.0
+
+5.20150420
+  - Updated for v5.21.11
+  - fixes a fencepost error in is_core()
+  - copes with versions that do not match x.yyyzzz
+
+5.20150320
+  - Updated for v5.21.10
+
+5.20150220
+  - Updated for v5.21.9
+
 5.20150214
   - Updated for v5.20.2
 
@@ -52,7 +75,7 @@
 3.06 Thu Feb 20 2014
  - updated for 5.19.9
  - fix Module::CoreList::is_core default perl version
- - fix Module::CoreList::is_core version comparision
+ - fix Module::CoreList::is_core version comparison
 
 3.05
   - Prepared for v5.19.9
Index: gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm,v
retrieving revision 1.1.1.5
diff -u -p -u -p -r1.1.1.5 CoreList.pm
--- gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm 25 Apr 2015 19:10:34 -0000 1.1.1.5
+++ gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm 28 Jun 2016 18:04:57 -0000
@@ -4,7 +4,17 @@ use vars qw/$VERSION %released %version
     %bug_tracker %deprecated %delta/;
 use Module::CoreList::TieHashDelta;
 use version;
-$VERSION = '5.20150214';
+$VERSION = '5.20150822';
+
+sub _released_order {   # Sort helper, to make '?' sort after everything else
+    (substr($released{$a}, 0, 1) eq "?")
+    ? ((substr($released{$b}, 0, 1) eq "?")
+        ? 0
+        : 1)
+    : ((substr($released{$b}, 0, 1) eq "?")
+        ? -1
+        : $released{$a} cmp $released{$b} )
+}
 
 my $dumpinc = 0;
 sub import {
@@ -38,7 +48,7 @@ sub first_release_raw {
 sub first_release_by_date {
     my @perls = &first_release_raw;
     return unless @perls;
-    return (sort { $released{$a} cmp $released{$b} } @perls)[0];
+    return (sort _released_order @perls)[0];
 }
 
 sub first_release {
@@ -64,9 +74,12 @@ sub find_modules {
 
 sub find_version {
     my $v = shift;
-    $v = shift if eval { $v->isa(__PACKAGE__) };
+    if ($v->isa(__PACKAGE__)) {
+        $v = shift;
+        return if not defined $v;
+    }
     return $version{$v} if defined $version{$v};
-    return undef;
+    return;
 }
 
 sub is_deprecated {
@@ -96,7 +109,7 @@ sub removed_from {
 }
 
 sub removed_from_by_date {
-  my @perls = sort { $released{$a} cmp $released{$b} } &removed_raw;
+  my @perls = sort _released_order &removed_raw;
   return shift @perls;
 }
 
@@ -262,6 +275,14 @@ sub changes_between {
     5.021007 => '2014-12-20',
     5.021008 => '2015-01-20',
     5.020002 => '2015-02-14',
+    5.021009 => '2015-02-21',
+    5.021010 => '2015-03-20',
+    5.021011 => '2015-04-20',
+    5.022000 => '2015-06-01',
+    5.023000 => '2015-06-20',
+    5.023001 => '2015-07-20',
+    5.023002 => '2015-08-20',
+    5.020003 => '2015-09-12',
   );
 
 for my $version ( sort { $a <=> $b } keys %released ) {
@@ -393,14 +414,14 @@ for my $version ( sort { $a <=> $b } key
             'Config'                => undef,
             'DB_File'               => '1.03',
             'ExtUtils::Embed'       => '1.18',
-            'ExtUtils::Install'     => '1.15 ',
-            'ExtUtils::Liblist'     => '1.20 ',
-            'ExtUtils::MM_Unix'     => '1.107 ',
+            'ExtUtils::Install'     => '1.15',
+            'ExtUtils::Liblist'     => '1.20',
+            'ExtUtils::MM_Unix'     => '1.107',
             'ExtUtils::MakeMaker'   => '5.38',
             'ExtUtils::Manifest'    => '1.27',
-            'ExtUtils::Mkbootstrap' => '1.13 ',
-            'ExtUtils::Mksymlists'  => '1.12 ',
-            'ExtUtils::testlib'     => '1.11 ',
+            'ExtUtils::Mkbootstrap' => '1.13',
+            'ExtUtils::Mksymlists'  => '1.12',
+            'ExtUtils::testlib'     => '1.11',
             'Fatal'                 => undef,
             'File::Basename'        => '2.4',
             'FindBin'               => '1.04',
@@ -442,7 +463,7 @@ for my $version ( sort { $a <=> $b } key
             'CGI::Push'             => '1.00',
             'CGI::Switch'           => '0.05',
             'CPAN'                  => '1.2401',
-            'CPAN::FirstTime'       => '1.18 ',
+            'CPAN::FirstTime'       => '1.18',
             'CPAN::Nox'             => undef,
             'Class::Struct'         => undef,
             'Cwd'                   => '2.00',
@@ -450,13 +471,13 @@ for my $version ( sort { $a <=> $b } key
             'DynaLoader'            => '1.02',
             'ExtUtils::Command'     => '1.00',
             'ExtUtils::Embed'       => '1.2501',
-            'ExtUtils::Install'     => '1.16 ',
-            'ExtUtils::Liblist'     => '1.2201 ',
-            'ExtUtils::MM_Unix'     => '1.114 ',
+            'ExtUtils::Install'     => '1.16',
+            'ExtUtils::Liblist'     => '1.2201',
+            'ExtUtils::MM_Unix'     => '1.114',
             'ExtUtils::MM_Win32'    => undef,
             'ExtUtils::MakeMaker'   => '5.4002',
-            'ExtUtils::Manifest'    => '1.33 ',
-            'ExtUtils::Mksymlists'  => '1.13 ',
+            'ExtUtils::Manifest'    => '1.33',
+            'ExtUtils::Mksymlists'  => '1.13',
             'ExtUtils::XSSymSet'    => '1.0',
             'Fcntl'                 => '1.03',
             'File::Basename'        => '2.5',
@@ -523,18 +544,18 @@ for my $version ( sort { $a <=> $b } key
             'CGI::Push'             => '1.01',
             'CGI::Switch'           => '0.06',
             'CPAN'                  => '1.40',
-            'CPAN::FirstTime'       => '1.30 ',
+            'CPAN::FirstTime'       => '1.30',
             'Cwd'                   => '2.01',
             'DB_File'               => '1.15',
             'DynaLoader'            => '1.03',
             'ExtUtils::Command'     => '1.01',
             'ExtUtils::Embed'       => '1.2505',
-            'ExtUtils::Install'     => '1.28 ',
-            'ExtUtils::Liblist'     => '1.25 ',
-            'ExtUtils::MM_Unix'     => '1.118 ',
+            'ExtUtils::Install'     => '1.28',
+            'ExtUtils::Liblist'     => '1.25',
+            'ExtUtils::MM_Unix'     => '1.118',
             'ExtUtils::MakeMaker'   => '5.42',
-            'ExtUtils::Mkbootstrap' => '1.14 ',
-            'ExtUtils::Mksymlists'  => '1.16 ',
+            'ExtUtils::Mkbootstrap' => '1.14',
+            'ExtUtils::Mksymlists'  => '1.16',
             'File::Basename'        => '2.6',
             'File::DosGlob'         => undef,
             'File::Path'            => '1.0402',
@@ -591,15 +612,15 @@ for my $version ( sort { $a <=> $b } key
             'B::Xref'               => undef,
             'CGI::Carp'             => '1.101',
             'CPAN'                  => '1.3901',
-            'CPAN::FirstTime'       => '1.29 ',
+            'CPAN::FirstTime'       => '1.29',
             'DB_File'               => '1.60',
             'Data::Dumper'          => '2.09',
             'Errno'                 => '1.09',
             'ExtUtils::Installed'   => '0.02',
-            'ExtUtils::MM_Unix'     => '1.12601 ',
+            'ExtUtils::MM_Unix'     => '1.12601',
             'ExtUtils::MakeMaker'   => '5.4301',
-            'ExtUtils::Mkbootstrap' => '1.13 ',
-            'ExtUtils::Mksymlists'  => '1.17 ',
+            'ExtUtils::Mkbootstrap' => '1.13',
+            'ExtUtils::Mksymlists'  => '1.17',
             'ExtUtils::Packlist'    => '0.03',
             'Fatal'                 => '1.02',
             'File::Path'            => '1.0401',
@@ -667,16 +688,16 @@ for my $version ( sort { $a <=> $b } key
     5.00504 => {
         delta_from => 5.00503,
         changed => {
-            'CPAN::FirstTime'       => '1.36 ',
+            'CPAN::FirstTime'       => '1.36',
             'DB_File'               => '1.807',
-            'ExtUtils::Install'     => '1.28 ',
-            'ExtUtils::Liblist'     => '1.25 ',
-            'ExtUtils::MM_Unix'     => '1.12602 ',
-            'ExtUtils::Manifest'    => '1.33 ',
+            'ExtUtils::Install'     => '1.28',
+            'ExtUtils::Liblist'     => '1.25',
+            'ExtUtils::MM_Unix'     => '1.12602',
+            'ExtUtils::Manifest'    => '1.33',
             'ExtUtils::Miniperl'    => undef,
-            'ExtUtils::Mkbootstrap' => '1.14 ',
-            'ExtUtils::Mksymlists'  => '1.17 ',
-            'ExtUtils::testlib'     => '1.11 ',
+            'ExtUtils::Mkbootstrap' => '1.14',
+            'ExtUtils::Mksymlists'  => '1.17',
+            'ExtUtils::testlib'     => '1.11',
             'File::Compare'         => '1.1002',
             'File::Spec'            => '0.8',
             'File::Spec::Functions' => undef,
@@ -704,7 +725,7 @@ for my $version ( sort { $a <=> $b } key
             'CGI::Pretty'           => '1.03',
             'CGI::Switch'           => undef,
             'CPAN'                  => '1.52',
-            'CPAN::FirstTime'       => '1.38 ',
+            'CPAN::FirstTime'       => '1.38',
             'Carp::Heavy'           => undef,
             'Class::Struct'         => '0.58',
             'Cwd'                   => '2.02',
@@ -716,7 +737,7 @@ for my $version ( sort { $a <=> $b } key
             'Exporter'              => '5.562',
             'Exporter::Heavy'       => undef,
             'ExtUtils::MM_Cygwin'   => undef,
-            'ExtUtils::MM_Unix'     => '1.12603 ',
+            'ExtUtils::MM_Unix'     => '1.12603',
             'ExtUtils::MakeMaker'   => '5.45',
             'File::Copy'            => '2.03',
             'File::Glob'            => '0.991',
@@ -865,7 +886,7 @@ for my $version ( sort { $a <=> $b } key
     5.006002 => {
         delta_from => 5.006001,
         changed => {
-            'CPAN::FirstTime'       => '1.53 ',
+            'CPAN::FirstTime'       => '1.53',
             'DB_File'               => '1.806',
             'Data::Dumper'          => '2.121',
             'ExtUtils::Command'     => '1.05',
@@ -956,7 +977,7 @@ for my $version ( sort { $a <=> $b } key
             'CGI::Switch'           => '1.00',
             'CGI::Util'             => '1.3',
             'CPAN'                  => '1.59_56',
-            'CPAN::FirstTime'       => '1.54 ',
+            'CPAN::FirstTime'       => '1.54',
             'CPAN::Nox'             => '1.00_01',
             'Carp'                  => '1.01',
             'Carp::Heavy'           => '1.01',
@@ -1226,7 +1247,7 @@ for my $version ( sort { $a <=> $b } key
             'CGI'                   => '2.81',
             'CGI::Carp'             => '1.23',
             'CPAN'                  => '1.61',
-            'CPAN::FirstTime'       => '1.56 ',
+            'CPAN::FirstTime'       => '1.56',
             'CPAN::Nox'             => '1.02',
             'Digest::MD5'           => '2.20',
             'Dumpvalue'             => '1.11',
@@ -1377,7 +1398,7 @@ for my $version ( sort { $a <=> $b } key
             'CGI::Pretty'           => '1.07_00',
             'CGI::Util'             => '1.31',
             'CPAN'                  => '1.76_01',
-            'CPAN::FirstTime'       => '1.60 ',
+            'CPAN::FirstTime'       => '1.60',
             'CPAN::Nox'             => '1.03',
             'Class::Struct'         => '0.63',
             'Cwd'                   => '2.08',
@@ -11089,6 +11110,599 @@ for my $version ( sort { $a <=> $b } key
         removed => {
         }
     },
+    5.021009 => {
+        delta_from => 5.021008,
+        changed => {
+            'B'                     => '1.56',
+            'B::Debug'              => '1.23',
+            'B::Deparse'            => '1.33',
+            'B::Op_private'         => '5.021009',
+            'Benchmark'             => '1.20',
+            'CPAN::Author'          => '5.5002',
+            'CPAN::CacheMgr'        => '5.5002',
+            'CPAN::FTP'             => '5.5006',
+            'CPAN::HTTP::Client'    => '1.9601',
+            'CPAN::HandleConfig'    => '5.5005',
+            'CPAN::Index'           => '1.9601',
+            'CPAN::LWP::UserAgent'  => '1.9601',
+            'CPAN::Meta::Requirements'=> '2.132',
+            'CPAN::Mirrors'         => '1.9601',
+            'Carp'                  => '1.35',
+            'Carp::Heavy'           => '1.35',
+            'Config'                => '5.021009',
+            'Config::Perl::V'       => '0.23',
+            'Data::Dumper'          => '2.157',
+            'Devel::Peek'           => '1.22',
+            'DynaLoader'            => '1.31',
+            'Encode'                => '2.70',
+            'Encode::MIME::Header'  => '2.16',
+            'Errno'                 => '1.23',
+            'ExtUtils::Miniperl'    => '1.04',
+            'HTTP::Tiny'            => '0.054',
+            'Module::CoreList'      => '5.20150220',
+            'Module::CoreList::TieHashDelta'=> '5.20150220',
+            'Module::CoreList::Utils'=> '5.20150220',
+            'Opcode'                => '1.32',
+            'POSIX'                 => '1.51',
+            'Perl::OSType'          => '1.008',
+            'PerlIO::scalar'        => '0.22',
+            'Pod::Find'             => '1.63',
+            'Pod::InputObjects'     => '1.63',
+            'Pod::ParseUtils'       => '1.63',
+            'Pod::Parser'           => '1.63',
+            'Pod::Perldoc'          => '3.25',
+            'Pod::Perldoc::BaseTo'  => '3.25',
+            'Pod::Perldoc::GetOptsOO'=> '3.25',
+            'Pod::Perldoc::ToANSI'  => '3.25',
+            'Pod::Perldoc::ToChecker'=> '3.25',
+            'Pod::Perldoc::ToMan'   => '3.25',
+            'Pod::Perldoc::ToNroff' => '3.25',
+            'Pod::Perldoc::ToPod'   => '3.25',
+            'Pod::Perldoc::ToRtf'   => '3.25',
+            'Pod::Perldoc::ToTerm'  => '3.25',
+            'Pod::Perldoc::ToText'  => '3.25',
+            'Pod::Perldoc::ToTk'    => '3.25',
+            'Pod::Perldoc::ToXml'   => '3.25',
+            'Pod::PlainText'        => '2.07',
+            'Pod::Select'           => '1.63',
+            'Socket'                => '2.018',
+            'Storable'              => '2.53',
+            'Test::Builder'         => '1.301001_098',
+            'Test::Builder::Module' => '1.301001_098',
+            'Test::Builder::Tester' => '1.301001_098',
+            'Test::Builder::Tester::Color'=> '1.301001_098',
+            'Test::More'            => '1.301001_098',
+            'Test::Simple'          => '1.301001_098',
+            'Test::Stream'          => '1.301001_098',
+            'Test::Tester'          => '1.301001_098',
+            'Test::use::ok'         => '1.301001_098',
+            'Unicode::Collate'      => '1.11',
+            'Unicode::Collate::CJK::Big5'=> '1.11',
+            'Unicode::Collate::CJK::GB2312'=> '1.11',
+            'Unicode::Collate::CJK::JISX0208'=> '1.11',
+            'Unicode::Collate::CJK::Korean'=> '1.11',
+            'Unicode::Collate::CJK::Pinyin'=> '1.11',
+            'Unicode::Collate::CJK::Stroke'=> '1.11',
+            'Unicode::Collate::CJK::Zhuyin'=> '1.11',
+            'Unicode::Collate::Locale'=> '1.11',
+            'Unicode::UCD'          => '0.61',
+            'VMS::Stdio'            => '2.41',
+            'Win32'                 => '0.51',
+            'Win32API::File'        => '0.1202',
+            'attributes'            => '0.26',
+            'bigint'                => '0.39',
+            'bignum'                => '0.39',
+            'bigrat'                => '0.39',
+            'constant'              => '1.33',
+            'encoding'              => '2.13',
+            'feature'               => '1.40',
+            'ok'                    => '1.301001_098',
+            'overload'              => '1.25',
+            'perlfaq'               => '5.021009',
+            're'                    => '0.31',
+            'threads::shared'       => '1.48',
+            'warnings'              => '1.31',
+        },
+        removed => {
+        }
+    },
+    5.021010 => {
+        delta_from => 5.021009,
+        changed => {
+            'App::Cpan'             => '1.63',
+            'B'                     => '1.57',
+            'B::Deparse'            => '1.34',
+            'B::Op_private'         => '5.021010',
+            'Benchmark'             => '1.2',
+            'CPAN'                  => '2.10',
+            'CPAN::Distribution'    => '2.04',
+            'CPAN::FirstTime'       => '5.5307',
+            'CPAN::HTTP::Credentials'=> '1.9601',
+            'CPAN::HandleConfig'    => '5.5006',
+            'CPAN::Meta'            => '2.150001',
+            'CPAN::Meta::Converter' => '2.150001',
+            'CPAN::Meta::Feature'   => '2.150001',
+            'CPAN::Meta::History'   => '2.150001',
+            'CPAN::Meta::Merge'     => '2.150001',
+            'CPAN::Meta::Prereqs'   => '2.150001',
+            'CPAN::Meta::Spec'      => '2.150001',
+            'CPAN::Meta::Validator' => '2.150001',
+            'CPAN::Module'          => '5.5002',
+            'CPAN::Plugin'          => '0.95',
+            'CPAN::Plugin::Specfile'=> '0.01',
+            'CPAN::Shell'           => '5.5005',
+            'Carp'                  => '1.36',
+            'Carp::Heavy'           => '1.36',
+            'Config'                => '5.02101',
+            'Cwd'                   => '3.55',
+            'DB'                    => '1.08',
+            'Data::Dumper'          => '2.158',
+            'Devel::PPPort'         => '3.31',
+            'DynaLoader'            => '1.32',
+            'Encode'                => '2.72',
+            'Encode::Alias'         => '2.19',
+            'File::Spec'            => '3.55',
+            'File::Spec::Cygwin'    => '3.55',
+            'File::Spec::Epoc'      => '3.55',
+            'File::Spec::Functions' => '3.55',
+            'File::Spec::Mac'       => '3.55',
+            'File::Spec::OS2'       => '3.55',
+            'File::Spec::Unix'      => '3.55',
+            'File::Spec::VMS'       => '3.55',
+            'File::Spec::Win32'     => '3.55',
+            'Getopt::Long'          => '2.45',
+            'Locale::Codes'         => '3.34',
+            'Locale::Codes::Constants'=> '3.34',
+            'Locale::Codes::Country'=> '3.34',
+            'Locale::Codes::Country_Codes'=> '3.34',
+            'Locale::Codes::Country_Retired'=> '3.34',
+            'Locale::Codes::Currency'=> '3.34',
+            'Locale::Codes::Currency_Codes'=> '3.34',
+            'Locale::Codes::Currency_Retired'=> '3.34',
+            'Locale::Codes::LangExt'=> '3.34',
+            'Locale::Codes::LangExt_Codes'=> '3.34',
+            'Locale::Codes::LangExt_Retired'=> '3.34',
+            'Locale::Codes::LangFam'=> '3.34',
+            'Locale::Codes::LangFam_Codes'=> '3.34',
+            'Locale::Codes::LangFam_Retired'=> '3.34',
+            'Locale::Codes::LangVar'=> '3.34',
+            'Locale::Codes::LangVar_Codes'=> '3.34',
+            'Locale::Codes::LangVar_Retired'=> '3.34',
+            'Locale::Codes::Language'=> '3.34',
+            'Locale::Codes::Language_Codes'=> '3.34',
+            'Locale::Codes::Language_Retired'=> '3.34',
+            'Locale::Codes::Script' => '3.34',
+            'Locale::Codes::Script_Codes'=> '3.34',
+            'Locale::Codes::Script_Retired'=> '3.34',
+            'Locale::Country'       => '3.34',
+            'Locale::Currency'      => '3.34',
+            'Locale::Language'      => '3.34',
+            'Locale::Script'        => '3.34',
+            'Module::CoreList'      => '5.20150320',
+            'Module::CoreList::TieHashDelta'=> '5.20150320',
+            'Module::CoreList::Utils'=> '5.20150320',
+            'POSIX'                 => '1.52',
+            'Pod::Functions'        => '1.09',
+            'Pod::Functions::Functions'=> '1.09',
+            'Term::Complete'        => '1.403',
+            'Test::Builder'         => '1.001014',
+            'Test::Builder::IO::Scalar'=> '2.113',
+            'Test::Builder::Module' => '1.001014',
+            'Test::Builder::Tester' => '1.28',
+            'Test::Builder::Tester::Color'=> '1.290001',
+            'Test::More'            => '1.001014',
+            'Test::Simple'          => '1.001014',
+            'Test::Tester'          => '0.114',
+            'Test::use::ok'         => '0.16',
+            'Text::Balanced'        => '2.03',
+            'Text::ParseWords'      => '3.30',
+            'Unicode::Collate'      => '1.12',
+            'Unicode::Collate::CJK::Big5'=> '1.12',
+            'Unicode::Collate::CJK::GB2312'=> '1.12',
+            'Unicode::Collate::CJK::JISX0208'=> '1.12',
+            'Unicode::Collate::CJK::Korean'=> '1.12',
+            'Unicode::Collate::CJK::Pinyin'=> '1.12',
+            'Unicode::Collate::CJK::Stroke'=> '1.12',
+            'Unicode::Collate::CJK::Zhuyin'=> '1.12',
+            'Unicode::Collate::Locale'=> '1.12',
+            'XS::APItest'           => '0.71',
+            'encoding'              => '2.14',
+            'locale'                => '1.06',
+            'meta_notation'         => undef,
+            'ok'                    => '0.16',
+            'parent'                => '0.232',
+            're'                    => '0.32',
+            'sigtrap'               => '1.08',
+            'threads'               => '2.01',
+            'utf8'                  => '1.15',
+        },
+        removed => {
+            'Test::CanFork'         => 1,
+            'Test::CanThread'       => 1,
+            'Test::More::DeepCheck' => 1,
+            'Test::More::DeepCheck::Strict'=> 1,
+            'Test::More::DeepCheck::Tolerant'=> 1,
+            'Test::More::Tools'     => 1,
+            'Test::MostlyLike'      => 1,
+            'Test::Stream'          => 1,
+            'Test::Stream::API'     => 1,
+            'Test::Stream::ArrayBase'=> 1,
+            'Test::Stream::ArrayBase::Meta'=> 1,
+            'Test::Stream::Block'   => 1,
+            'Test::Stream::Carp'    => 1,
+            'Test::Stream::Context' => 1,
+            'Test::Stream::Event'   => 1,
+            'Test::Stream::Event::Bail'=> 1,
+            'Test::Stream::Event::Child'=> 1,
+            'Test::Stream::Event::Diag'=> 1,
+            'Test::Stream::Event::Finish'=> 1,
+            'Test::Stream::Event::Note'=> 1,
+            'Test::Stream::Event::Ok'=> 1,
+            'Test::Stream::Event::Plan'=> 1,
+            'Test::Stream::Event::Subtest'=> 1,
+            'Test::Stream::ExitMagic'=> 1,
+            'Test::Stream::ExitMagic::Context'=> 1,
+            'Test::Stream::Exporter'=> 1,
+            'Test::Stream::Exporter::Meta'=> 1,
+            'Test::Stream::ForceExit'=> 1,
+            'Test::Stream::IOSets'  => 1,
+            'Test::Stream::Meta'    => 1,
+            'Test::Stream::PackageUtil'=> 1,
+            'Test::Stream::Subtest' => 1,
+            'Test::Stream::Tester'  => 1,
+            'Test::Stream::Tester::Checks'=> 1,
+            'Test::Stream::Tester::Checks::Event'=> 1,
+            'Test::Stream::Tester::Events'=> 1,
+            'Test::Stream::Tester::Events::Event'=> 1,
+            'Test::Stream::Tester::Grab'=> 1,
+            'Test::Stream::Threads' => 1,
+            'Test::Stream::Toolset' => 1,
+            'Test::Stream::Util'    => 1,
+        }
+    },
+    5.021011 => {
+        delta_from => 5.021010,
+        changed => {
+            'B'                     => '1.58',
+            'B::Deparse'            => '1.35',
+            'B::Op_private'         => '5.021011',
+            'CPAN'                  => '2.11',
+            'Config'                => '5.021011',
+            'Config::Perl::V'       => '0.24',
+            'Cwd'                   => '3.56',
+            'ExtUtils::Miniperl'    => '1.05',
+            'ExtUtils::ParseXS'     => '3.28',
+            'ExtUtils::ParseXS::Constants'=> '3.28',
+            'ExtUtils::ParseXS::CountLines'=> '3.28',
+            'ExtUtils::ParseXS::Eval'=> '3.28',
+            'ExtUtils::ParseXS::Utilities'=> '3.28',
+            'ExtUtils::Typemaps'    => '3.28',
+            'ExtUtils::Typemaps::Cmd'=> '3.28',
+            'ExtUtils::Typemaps::InputMap'=> '3.28',
+            'ExtUtils::Typemaps::OutputMap'=> '3.28',
+            'ExtUtils::Typemaps::Type'=> '3.28',
+            'File::Spec'            => '3.56',
+            'File::Spec::Cygwin'    => '3.56',
+            'File::Spec::Epoc'      => '3.56',
+            'File::Spec::Functions' => '3.56',
+            'File::Spec::Mac'       => '3.56',
+            'File::Spec::OS2'       => '3.56',
+            'File::Spec::Unix'      => '3.56',
+            'File::Spec::VMS'       => '3.56',
+            'File::Spec::Win32'     => '3.56',
+            'IO::Socket::IP'        => '0.37',
+            'Module::CoreList'      => '5.20150420',
+            'Module::CoreList::TieHashDelta'=> '5.20150420',
+            'Module::CoreList::Utils'=> '5.20150420',
+            'PerlIO::mmap'          => '0.014',
+            'XS::APItest'           => '0.72',
+            'attributes'            => '0.27',
+            'if'                    => '0.0604',
+            'utf8'                  => '1.16',
+            'warnings'              => '1.32',
+        },
+        removed => {
+        }
+    },
+    5.022000 => {
+        delta_from => 5.021011,
+        changed => {
+            'B::Op_private'         => '5.022000',
+            'Config'                => '5.022',
+            'ExtUtils::Command::MM' => '7.04_01',
+            'ExtUtils::Liblist'     => '7.04_01',
+            'ExtUtils::Liblist::Kid'=> '7.04_01',
+            'ExtUtils::MM'          => '7.04_01',
+            'ExtUtils::MM_AIX'      => '7.04_01',
+            'ExtUtils::MM_Any'      => '7.04_01',
+            'ExtUtils::MM_BeOS'     => '7.04_01',
+            'ExtUtils::MM_Cygwin'   => '7.04_01',
+            'ExtUtils::MM_DOS'      => '7.04_01',
+            'ExtUtils::MM_Darwin'   => '7.04_01',
+            'ExtUtils::MM_MacOS'    => '7.04_01',
+            'ExtUtils::MM_NW5'      => '7.04_01',
+            'ExtUtils::MM_OS2'      => '7.04_01',
+            'ExtUtils::MM_QNX'      => '7.04_01',
+            'ExtUtils::MM_UWIN'     => '7.04_01',
+            'ExtUtils::MM_Unix'     => '7.04_01',
+            'ExtUtils::MM_VMS'      => '7.04_01',
+            'ExtUtils::MM_VOS'      => '7.04_01',
+            'ExtUtils::MM_Win32'    => '7.04_01',
+            'ExtUtils::MM_Win95'    => '7.04_01',
+            'ExtUtils::MY'          => '7.04_01',
+            'ExtUtils::MakeMaker'   => '7.04_01',
+            'ExtUtils::MakeMaker::Config'=> '7.04_01',
+            'ExtUtils::MakeMaker::Locale'=> '7.04_01',
+            'ExtUtils::MakeMaker::version'=> '7.04_01',
+            'ExtUtils::MakeMaker::version::regex'=> '7.04_01',
+            'ExtUtils::MakeMaker::version::vpp'=> '7.04_01',
+            'ExtUtils::Mkbootstrap' => '7.04_01',
+            'ExtUtils::Mksymlists'  => '7.04_01',
+            'ExtUtils::testlib'     => '7.04_01',
+            'Module::CoreList'      => '5.20150520',
+            'Module::CoreList::TieHashDelta'=> '5.20150520',
+            'Module::CoreList::Utils'=> '5.20150520',
+            'POSIX'                 => '1.53',
+            'PerlIO::via::QuotedPrint'=> '0.08',
+            'overload'              => '1.26',
+            'utf8'                  => '1.17',
+        },
+        removed => {
+        }
+    },
+    5.023000 => {
+        delta_from => 5.022000,
+        changed => {
+            'B::Op_private'         => '5.023000',
+            'CPAN::Meta'            => '2.150005',
+            'CPAN::Meta::Converter' => '2.150005',
+            'CPAN::Meta::Feature'   => '2.150005',
+            'CPAN::Meta::History'   => '2.150005',
+            'CPAN::Meta::Merge'     => '2.150005',
+            'CPAN::Meta::Prereqs'   => '2.150005',
+            'CPAN::Meta::Requirements'=> '2.133',
+            'CPAN::Meta::Spec'      => '2.150005',
+            'CPAN::Meta::Validator' => '2.150005',
+            'CPAN::Meta::YAML'      => '0.016',
+            'Config'                => '5.023',
+            'Encode'                => '2.73',
+            'ExtUtils::CBuilder'    => '0.280223',
+            'ExtUtils::CBuilder::Base'=> '0.280223',
+            'ExtUtils::CBuilder::Platform::Unix'=> '0.280223',
+            'ExtUtils::CBuilder::Platform::VMS'=> '0.280223',
+            'ExtUtils::CBuilder::Platform::Windows'=> '0.280223',
+            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280223',
+            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280223',
+            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280223',
+            'ExtUtils::CBuilder::Platform::aix'=> '0.280223',
+            'ExtUtils::CBuilder::Platform::android'=> '0.280223',
+            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280223',
+            'ExtUtils::CBuilder::Platform::darwin'=> '0.280223',
+            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280223',
+            'ExtUtils::CBuilder::Platform::os2'=> '0.280223',
+            'Fatal'                 => '2.27',
+            'Getopt::Long'          => '2.46',
+            'HTTP::Tiny'            => '0.056',
+            'List::Util'            => '1.42_01',
+            'List::Util::XS'        => '1.42_01',
+            'Locale::Codes'         => '3.35',
+            'Locale::Codes::Constants'=> '3.35',
+            'Locale::Codes::Country'=> '3.35',
+            'Locale::Codes::Country_Codes'=> '3.35',
+            'Locale::Codes::Country_Retired'=> '3.35',
+            'Locale::Codes::Currency'=> '3.35',
+            'Locale::Codes::Currency_Codes'=> '3.35',
+            'Locale::Codes::Currency_Retired'=> '3.35',
+            'Locale::Codes::LangExt'=> '3.35',
+            'Locale::Codes::LangExt_Codes'=> '3.35',
+            'Locale::Codes::LangExt_Retired'=> '3.35',
+            'Locale::Codes::LangFam'=> '3.35',
+            'Locale::Codes::LangFam_Codes'=> '3.35',
+            'Locale::Codes::LangFam_Retired'=> '3.35',
+            'Locale::Codes::LangVar'=> '3.35',
+            'Locale::Codes::LangVar_Codes'=> '3.35',
+            'Locale::Codes::LangVar_Retired'=> '3.35',
+            'Locale::Codes::Language'=> '3.35',
+            'Locale::Codes::Language_Codes'=> '3.35',
+            'Locale::Codes::Language_Retired'=> '3.35',
+            'Locale::Codes::Script' => '3.35',
+            'Locale::Codes::Script_Codes'=> '3.35',
+            'Locale::Codes::Script_Retired'=> '3.35',
+            'Locale::Country'       => '3.35',
+            'Locale::Currency'      => '3.35',
+            'Locale::Language'      => '3.35',
+            'Locale::Script'        => '3.35',
+            'Math::BigFloat'        => '1.999701',
+            'Math::BigInt'          => '1.999701',
+            'Math::BigInt::Calc'    => '1.999701',
+            'Math::BigInt::CalcEmu' => '1.999701',
+            'Math::BigRat'          => '0.260801',
+            'Module::CoreList'      => '5.20150620',
+            'Module::CoreList::TieHashDelta'=> '5.20150620',
+            'Module::CoreList::Utils'=> '5.20150620',
+            'Module::Metadata'      => '1.000027',
+            'Net::Cmd'              => '3.06',
+            'Net::Config'           => '3.06',
+            'Net::Domain'           => '3.06',
+            'Net::FTP'              => '3.06',
+            'Net::FTP::A'           => '3.06',
+            'Net::FTP::E'           => '3.06',
+            'Net::FTP::I'           => '3.06',
+            'Net::FTP::L'           => '3.06',
+            'Net::FTP::dataconn'    => '3.06',
+            'Net::NNTP'             => '3.06',
+            'Net::Netrc'            => '3.06',
+            'Net::POP3'             => '3.06',
+            'Net::SMTP'             => '3.06',
+            'Net::Time'             => '3.06',
+            'POSIX'                 => '1.54',
+            'Parse::CPAN::Meta'     => '1.4417',
+            'Pod::Simple'           => '3.30',
+            'Pod::Simple::BlackBox' => '3.30',
+            'Pod::Simple::Checker'  => '3.30',
+            'Pod::Simple::Debug'    => '3.30',
+            'Pod::Simple::DumpAsText'=> '3.30',
+            'Pod::Simple::DumpAsXML'=> '3.30',
+            'Pod::Simple::HTML'     => '3.30',
+            'Pod::Simple::HTMLBatch'=> '3.30',
+            'Pod::Simple::LinkSection'=> '3.30',
+            'Pod::Simple::Methody'  => '3.30',
+            'Pod::Simple::Progress' => '3.30',
+            'Pod::Simple::PullParser'=> '3.30',
+            'Pod::Simple::PullParserEndToken'=> '3.30',
+            'Pod::Simple::PullParserStartToken'=> '3.30',
+            'Pod::Simple::PullParserTextToken'=> '3.30',
+            'Pod::Simple::PullParserToken'=> '3.30',
+            'Pod::Simple::RTF'      => '3.30',
+            'Pod::Simple::Search'   => '3.30',
+            'Pod::Simple::SimpleTree'=> '3.30',
+            'Pod::Simple::Text'     => '3.30',
+            'Pod::Simple::TextContent'=> '3.30',
+            'Pod::Simple::TiedOutFH'=> '3.30',
+            'Pod::Simple::Transcode'=> '3.30',
+            'Pod::Simple::TranscodeDumb'=> '3.30',
+            'Pod::Simple::TranscodeSmart'=> '3.30',
+            'Pod::Simple::XHTML'    => '3.30',
+            'Pod::Simple::XMLOutStream'=> '3.30',
+            'Pod::Usage'            => '1.67',
+            'Scalar::Util'          => '1.42_01',
+            'Socket'                => '2.019',
+            'Sub::Util'             => '1.42_01',
+            'Time::Piece'           => '1.30',
+            'Time::Seconds'         => '1.30',
+            'UNIVERSAL'             => '1.13',
+            'Unicode'               => '8.0.0',
+            'XS::APItest'           => '0.73',
+            'autodie'               => '2.27',
+            'autodie::Scope::Guard' => '2.27',
+            'autodie::Scope::GuardStack'=> '2.27',
+            'autodie::Util'         => '2.27',
+            'autodie::exception'    => '2.27',
+            'autodie::exception::system'=> '2.27',
+            'autodie::hints'        => '2.27',
+            'autodie::skip'         => '2.27',
+            'encoding'              => '2.15',
+            'feature'               => '1.41',
+            'parent'                => '0.234',
+            'threads'               => '2.02',
+        },
+        removed => {
+        }
+    },
+    5.023001 => {
+        delta_from => 5.023000,
+        changed => {
+            'B::Op_private'         => '5.023001',
+            'Config'                => '5.023001',
+            'DynaLoader'            => '1.33',
+            'Encode'                => '2.75',
+            'Encode::MIME::Header'  => '2.17',
+            'Encode::Unicode'       => '2.13',
+            'Fatal'                 => '2.29',
+            'File::Path'            => '2.11',
+            'Getopt::Long'          => '2.47',
+            'I18N::Langinfo'        => '0.13',
+            'IPC::Open3'            => '1.19',
+            'Module::CoreList'      => '5.20150720',
+            'Module::CoreList::TieHashDelta'=> '5.20150720',
+            'Module::CoreList::Utils'=> '5.20150720',
+            'Net::Cmd'              => '3.07',
+            'Net::Config'           => '3.07',
+            'Net::Domain'           => '3.07',
+            'Net::FTP'              => '3.07',
+            'Net::FTP::A'           => '3.07',
+            'Net::FTP::E'           => '3.07',
+            'Net::FTP::I'           => '3.07',
+            'Net::FTP::L'           => '3.07',
+            'Net::FTP::dataconn'    => '3.07',
+            'Net::NNTP'             => '3.07',
+            'Net::Netrc'            => '3.07',
+            'Net::POP3'             => '3.07',
+            'Net::SMTP'             => '3.07',
+            'Net::Time'             => '3.07',
+            'Opcode'                => '1.33',
+            'POSIX'                 => '1.55',
+            'PerlIO::scalar'        => '0.23',
+            'Socket'                => '2.020',
+            'Storable'              => '2.54',
+            'Unicode::Collate'      => '1.14',
+            'Unicode::Collate::CJK::Big5'=> '1.14',
+            'Unicode::Collate::CJK::GB2312'=> '1.14',
+            'Unicode::Collate::CJK::JISX0208'=> '1.14',
+            'Unicode::Collate::CJK::Korean'=> '1.14',
+            'Unicode::Collate::CJK::Pinyin'=> '1.14',
+            'Unicode::Collate::CJK::Stroke'=> '1.14',
+            'Unicode::Collate::CJK::Zhuyin'=> '1.14',
+            'Unicode::Collate::Locale'=> '1.14',
+            'Unicode::Normalize'    => '1.19',
+            'XS::APItest'           => '0.74',
+            'XS::Typemap'           => '0.14',
+            'autodie'               => '2.29',
+            'autodie::Scope::Guard' => '2.29',
+            'autodie::Scope::GuardStack'=> '2.29',
+            'autodie::Util'         => '2.29',
+            'autodie::exception'    => '2.29',
+            'autodie::exception::system'=> '2.29',
+            'autodie::hints'        => '2.29',
+            'autodie::skip'         => '2.29',
+            'encoding'              => '2.16',
+            'feature'               => '1.42',
+            'warnings'              => '1.33',
+        },
+        removed => {
+            'autodie::ScopeUtil'    => 1,
+        }
+    },
+    5.023002 => {
+        delta_from => 5.023001,
+        changed => {
+            'Attribute::Handlers'   => '0.99',
+            'B::Op_private'         => '5.023002',
+            'CPAN::Meta::YAML'      => '0.017',
+            'Config'                => '5.023002',
+            'Cwd'                   => '3.57',
+            'Encode'                => '2.76',
+            'ExtUtils::ParseXS'     => '3.29',
+            'ExtUtils::ParseXS::Constants'=> '3.29',
+            'ExtUtils::ParseXS::CountLines'=> '3.29',
+            'ExtUtils::ParseXS::Eval'=> '3.29',
+            'ExtUtils::ParseXS::Utilities'=> '3.29',
+            'ExtUtils::Typemaps'    => '3.29',
+            'File::Find'            => '1.30',
+            'File::Spec'            => '3.57',
+            'File::Spec::Cygwin'    => '3.57',
+            'File::Spec::Epoc'      => '3.57',
+            'File::Spec::Functions' => '3.57',
+            'File::Spec::Mac'       => '3.57',
+            'File::Spec::OS2'       => '3.57',
+            'File::Spec::Unix'      => '3.57',
+            'File::Spec::VMS'       => '3.57',
+            'File::Spec::Win32'     => '3.57',
+            'Filter::Util::Call'    => '1.55',
+            'Hash::Util'            => '0.19',
+            'Module::CoreList'      => '5.20150820',
+            'Module::CoreList::TieHashDelta'=> '5.20150820',
+            'Module::CoreList::Utils'=> '5.20150820',
+            'POSIX'                 => '1.56',
+            'Term::Cap'             => '1.17',
+            'Unicode::UCD'          => '0.62',
+            'perlfaq'               => '5.021010',
+        },
+        removed => {
+        }
+    },
+    5.020003 => {
+        delta_from => 5.020002,
+        changed => {
+            'Config'                => '5.020003',
+            'Errno'                 => '1.20_06',
+            'Module::CoreList'      => '5.20150912',
+            'Module::CoreList::TieHashDelta'=> '5.20150912',
+            'Module::CoreList::Utils'=> '5.20150912',
+        },
+        removed => {
+        }
+    },
 );
 
 sub is_core
@@ -11106,7 +11720,7 @@ sub is_core
 
     my $final_release = removed_from($module);
 
-    return 0 if defined($final_release) && $perl_version > $final_release;
+    return 0 if defined($final_release) && $perl_version >= $final_release;
 
     # If a minimum version of the module was specified:
     # Step through all perl releases ($prn)
@@ -11121,7 +11735,9 @@ sub is_core
         my @releases = ($perl_version);
         my $rel = $perl_version;
         while (defined($rel)) {
-            $rel = $delta{$rel}->{delta_from};
+            # XXX: This line is a sign of failure. -- rjbs, 2015-04-15
+            my $this_delta = $delta{$rel} || $delta{ sprintf '%0.6f', $rel };
+            $rel = $this_delta->{delta_from};
             unshift(@releases, $rel) if defined($rel);
         }
         RELEASE:
@@ -11291,9 +11907,8 @@ for my $version (sort { $a <=> $b } keys
     },
     5.01701  => { delta_from => 5.017009 },
     5.017011 => { delta_from => 5.01701  },
-    5.017012 => { delta_from => 5.017011 },
 
-    5.018    => { delta_from => 5.017012 },
+    5.018    => { delta_from => 5.017011 },
     5.018001 => {
         delta_from => 5.018,
         changed => {
@@ -11509,10 +12124,45 @@ for my $version (sort { $a <=> $b } keys
         changed => {
         },
         removed => {
+            'CGI'                   => 1,
+            'CGI::Apache'           => 1,
+            'CGI::Carp'             => 1,
+            'CGI::Cookie'           => 1,
+            'CGI::Fast'             => 1,
+            'CGI::Pretty'           => 1,
+            'CGI::Push'             => 1,
+            'CGI::Switch'           => 1,
+            'CGI::Util'             => 1,
+            'Module::Build'         => 1,
+            'Module::Build::Base'   => 1,
+            'Module::Build::Compat' => 1,
+            'Module::Build::Config' => 1,
+            'Module::Build::ConfigData'=> 1,
+            'Module::Build::Cookbook'=> 1,
+            'Module::Build::Dumper' => 1,
+            'Module::Build::ModuleInfo'=> 1,
+            'Module::Build::Notes'  => 1,
+            'Module::Build::PPMMaker'=> 1,
+            'Module::Build::Platform::Default'=> 1,
+            'Module::Build::Platform::MacOS'=> 1,
+            'Module::Build::Platform::Unix'=> 1,
+            'Module::Build::Platform::VMS'=> 1,
+            'Module::Build::Platform::VOS'=> 1,
+            'Module::Build::Platform::Windows'=> 1,
+            'Module::Build::Platform::aix'=> 1,
+            'Module::Build::Platform::cygwin'=> 1,
+            'Module::Build::Platform::darwin'=> 1,
+            'Module::Build::Platform::os2'=> 1,
+            'Module::Build::PodParser'=> 1,
+            'Module::Build::Version'=> 1,
+            'Module::Build::YAML'   => 1,
+            'Package::Constants'    => 1,
+            'Simple'                => 1,
+            'inc::latest'           => 1,
         }
     },
     5.021001 => {
-        delta_from => 5.017007,
+        delta_from => 5.021000,
         changed => {
         },
         removed => {
@@ -11581,6 +12231,62 @@ for my $version (sort { $a <=> $b } keys
         removed => {
         }
     },
+    5.021009 => {
+        delta_from => 5.021008,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.021010 => {
+        delta_from => 5.021009,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.021011 => {
+        delta_from => 5.02101,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.022000 => {
+        delta_from => 5.021011,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.023000 => {
+        delta_from => 5.022000,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.023001 => {
+        delta_from => 5.023000,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.023002 => {
+        delta_from => 5.023001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.020003 => {
+        delta_from => 5.020002,
+        changed => {
+        },
+        removed => {
+        }
+    },
 );
 
 for my $version (sort { $a <=> $b } keys %deprecated) {
@@ -12053,7 +12759,7 @@ for my $version (sort { $a <=> $b } keys
     'CPAN::Meta::Requirements'=> 'https://github.com/dagolden/CPAN-Meta-Requirements/issues',
     'CPAN::Meta::Spec'      => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
     'CPAN::Meta::Validator' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
-    'CPAN::Meta::YAML'      => 'https://github.com/dagolden/CPAN-Meta-YAML/issues',
+    'CPAN::Meta::YAML'      => 'https://github.com/Perl-Toolchain-Gang/YAML-Tiny/issues',
     'CPAN::Mirrors'         => undef,
     'CPAN::Module'          => undef,
     'CPAN::Nox'             => undef,
@@ -12257,7 +12963,7 @@ for my $version (sort { $a <=> $b } keys
     'Net::Time'             => undef,
     'Package::Constants'    => undef,
     'Params::Check'         => undef,
-    'Parse::CPAN::Meta'     => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Parse-CPAN-Meta',
+    'Parse::CPAN::Meta'     => 'https://github.com/Perl-Toolchain-Gang/Parse-CPAN-Meta/issues',
     'Perl::OSType'          => 'https://github.com/dagolden/Perl-OSType/issues',
     'PerlIO::via::QuotedPrint'=> undef,
     'Pod::Checker'          => undef,
Index: gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod,v
retrieving revision 1.1.1.4
diff -u -p -u -p -r1.1.1.4 CoreList.pod
--- gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod 25 Apr 2015 19:10:34 -0000 1.1.1.4
+++ gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod 28 Jun 2016 18:04:57 -0000
@@ -73,8 +73,11 @@ you may provide a list of perl versions
 
 =item C<find_version( PERL_VERSION )>
 
-Takes a perl version as an argument. Returns that perl version if it exists or C<undef>
-otherwise.
+Takes a perl version as an argument. Upon successful completion, returns a
+reference to a hash.  Each element of that hash has a key which is the name of
+a module (I<e.g.,> 'File::Path') shipped with that version of perl and a value
+which is the version number (I<e.g.,> '2.09') of that module which shipped
+with that version of perl .  Returns C<undef> otherwise.
 
 =item C<is_core( MODULE, [ MODULE_VERSION, [ PERL_VERSION ] ] )>
 
@@ -100,7 +103,7 @@ omitted, it defaults to the current vers
 
 Available in version 2.77 and above.
 
-Returns the first PERL_VERSION where the MODULE was marked as deprecated. Returns C<undef>
+Returns the first perl version where the MODULE was marked as deprecated. Returns C<undef>
 if the MODULE has not been marked as deprecated.
 
 =item C<removed_from( MODULE )>
Index: gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm,v
retrieving revision 1.1.1.4
diff -u -p -u -p -r1.1.1.4 TieHashDelta.pm
--- gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm 25 Apr 2015 19:10:34 -0000 1.1.1.4
+++ gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm 28 Jun 2016 18:04:57 -0000
@@ -3,7 +3,7 @@ package Module::CoreList::TieHashDelta;
 use strict;
 use vars qw($VERSION);
 
-$VERSION = '5.20150214';
+$VERSION = '5.20150822';
 
 sub TIEHASH {
     my ($class, $changed, $removed, $parent) = @_;
Index: gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm,v
retrieving revision 1.1.1.3
diff -u -p -u -p -r1.1.1.3 Utils.pm
--- gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm 25 Apr 2015 19:10:34 -0000 1.1.1.3
+++ gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm 28 Jun 2016 18:04:57 -0000
@@ -6,7 +6,7 @@ use vars qw[$VERSION %utilities];
 use Module::CoreList;
 use Module::CoreList::TieHashDelta;
 
-$VERSION = '5.20150214';
+$VERSION = '5.20150822';
 
 sub utilities {
     my $perl = shift;
@@ -15,6 +15,16 @@ sub utilities {
     return sort keys %{ $utilities{$perl} };
 }
 
+sub _released_order {   # Sort helper, to make '?' sort after everything else
+    (substr($Module::CoreList::released{$a}, 0, 1) eq "?")
+    ? ((substr($Module::CoreList::released{$b}, 0, 1) eq "?")
+        ? 0
+        : 1)
+    : ((substr($Module::CoreList::released{$b}, 0, 1) eq "?")
+        ? -1
+        : $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} )
+}
+
 sub first_release_raw {
     my $util = shift;
     $util = shift if eval { $util->isa(__PACKAGE__) };
@@ -32,7 +42,7 @@ sub first_release_raw {
 sub first_release_by_date {
     my @perls = &first_release_raw;
     return unless @perls;
-    return (sort { $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} } @perls)[0];
+    return (sort _released_order @perls)[0];
 }
 
 sub first_release {
@@ -47,7 +57,7 @@ sub removed_from {
 }
 
 sub removed_from_by_date {
-  my @perls = sort { $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} } &removed_raw;
+  my @perls = sort _released_order &removed_raw;
   return shift @perls;
 }
 
@@ -1008,6 +1018,63 @@ my %delta = (
     },
     5.020002 => {
         delta_from => 5.020001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.021009 => {
+        delta_from => 5.021008,
+        changed => {
+            'encguess'              => '1',
+        },
+        removed => {
+        }
+    },
+    5.021010 => {
+        delta_from => 5.021009,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.021011 => {
+        delta_from => 5.02101,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.022000 => {
+        delta_from => 5.021011,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.023000 => {
+        delta_from => 5.022000,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.023001 => {
+        delta_from => 5.023,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.023002 => {
+        delta_from => 5.023001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.020003 => {
+        delta_from => 5.020002,
         changed => {
         },
         removed => {
Index: gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t,v
retrieving revision 1.1.1.2
diff -u -p -u -p -r1.1.1.2 corelist.t
--- gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t 25 Apr 2015 19:10:34 -0000 1.1.1.2
+++ gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t 28 Jun 2016 18:04:57 -0000
@@ -1,7 +1,7 @@
 #!perl -w
 use strict;
 use Module::CoreList;
-use Test::More tests => 29;
+use Test::More tests => 32;
 
 BEGIN { require_ok('Module::CoreList'); }
 
@@ -106,3 +106,12 @@ is(Module::CoreList::removed_from('CPANP
     cmp_ok($warnings_count, '==', 0,
            "an undefined version does not produce warnings rt#123556");
 }
+
+ok(! defined(Module::CoreList->find_version()),
+    "Lacking an argument, Module::CoreList->find_version() returns undef");
+my $v = 5.022;
+is(ref(Module::CoreList->find_version($v)), 'HASH',
+    "With argument, Module::CoreList->find_version() returns hashref");
+$v = 5.022000;
+is(ref(Module::CoreList->find_version($v)), 'HASH',
+    "With argument, Module::CoreList->find_version() returns hashref");
Index: gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t,v
retrieving revision 1.1.1.2
diff -u -p -u -p -r1.1.1.2 is_core.t
--- gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t 17 Nov 2014 20:53:04 -0000 1.1.1.2
+++ gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t 28 Jun 2016 18:04:57 -0000
@@ -1,7 +1,7 @@
 #!perl -w
 use strict;
 use Module::CoreList;
-use Test::More tests => 34;
+use Test::More tests => 38;
 
 BEGIN { require_ok('Module::CoreList'); }
 
@@ -69,3 +69,9 @@ ok(Module::CoreList->is_core('Text::Soun
 ok(Module::CoreList->is_core('DB_File', '1.01', '5.002'), "DB_File 1.01 was included in 5.002");
 ok(!Module::CoreList->is_core('DB_File', '1.03', '5.002'), "DB_File 1.03 wasn't included in 5.002");
 ok(Module::CoreList->is_core('DB_File', '1.03', '5.00307'), "DB_File 1.03 was included in 5.00307");
+
+ok(! Module::CoreList->is_core("CGI", undef, 5.021), "CGI not in 5.021");
+ok(! Module::CoreList->is_core("CGI", undef, 5.021001), "CGI not in 5.021001");
+
+ok(  Module::CoreList::is_core("Config", 0, "5.020"), "Config v0+ is in core in 5.020");
+ok(  Module::CoreList::is_core("Config", undef, "5.020"), "Config v(undef) is in core in 7.020");
Index: gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t,v
retrieving revision 1.1.1.1
diff -u -p -u -p -r1.1.1.1 utils.t
--- gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t 24 Mar 2014 14:59:00 -0000 1.1.1.1
+++ gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t 28 Jun 2016 18:04:57 -0000
@@ -11,7 +11,7 @@ is( Module::CoreList::Utils->first_relea
 is( Module::CoreList::Utils->first_release_by_date('corelist'), 5.009002, 'corelist with v5.9.2');
 is( Module::CoreList::Utils::first_release_by_date('corelist'), 5.009002, 'corelist with v5.9.2');
 {
-  my @expected = qw(a2p c2ph cppstdin find2perl h2xs pstruct s2p);
+  my @expected = sort qw(a2p c2ph cppstdin find2perl h2xs pstruct s2p);
   {
     my @foo = Module::CoreList::Utils->utilities(5.001);
     is_deeply( \@foo, \@expected, '5.001 utils all present and correct' );
Index: gnu/usr.bin/perl/ext/Errno/Errno_pm.PL
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL,v
retrieving revision 1.1.1.14
diff -u -p -u -p -r1.1.1.14 Errno_pm.PL
--- gnu/usr.bin/perl/ext/Errno/Errno_pm.PL 25 Apr 2015 19:10:36 -0000 1.1.1.14
+++ gnu/usr.bin/perl/ext/Errno/Errno_pm.PL 28 Jun 2016 18:04:57 -0000
@@ -2,7 +2,7 @@ use ExtUtils::MakeMaker;
 use Config;
 use strict;
 
-our $VERSION = "1.20_05";
+our $VERSION = "1.20_06";
 
 my %err = ();
 
@@ -225,20 +225,31 @@ sub write_errno_pm {
     { # BeOS (support now removed) did not enter this block
     # invoke CPP and read the output
 
+ my $inhibit_linemarkers = '';
+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) {
+    # GCC 5.0 interleaves expanded macros with line numbers breaking
+    # each line into multiple lines. RT#123784
+    $inhibit_linemarkers = ' -P';
+ }
+
  if ($^O eq 'VMS') {
-    my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}";
+    my $cpp = "$Config{cppstdin} $Config{cppflags}" .
+ $inhibit_linemarkers . " $Config{cppminus}";
     $cpp =~ s/sys\$input//i;
     open(CPPO,"$cpp  errno.c |") or
  die "Cannot exec $Config{cppstdin}";
  } elsif ($IsMSWin32 || $^O eq 'NetWare') {
-    open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or
- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'";
+    my $cpp = "$Config{cpprun} $Config{cppflags}" .
+ $inhibit_linemarkers;
+    open(CPPO,"$cpp errno.c |") or
+ die "Cannot run '$cpp errno.c'";
  } elsif ($IsSymbian) {
-            my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -";
+            my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" .
+ $inhibit_linemarkers ." -";
     open(CPPO,"$cpp < errno.c |")
  or die "Cannot exec $cpp";
         } else {
-    my $cpp = default_cpp();
+    my $cpp = default_cpp() . $inhibit_linemarkers;
     open(CPPO,"$cpp < errno.c |")
  or die "Cannot exec $cpp";
  }
Index: gnu/usr.bin/perl/hints/catamount.sh
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/hints/catamount.sh,v
retrieving revision 1.1.1.7
diff -u -p -u -p -r1.1.1.7 catamount.sh
--- gnu/usr.bin/perl/hints/catamount.sh 25 Apr 2015 19:10:37 -0000 1.1.1.7
+++ gnu/usr.bin/perl/hints/catamount.sh 28 Jun 2016 18:04:57 -0000
@@ -31,11 +31,11 @@
 # mkdir -p /opt/perl-catamount
 # mkdir -p /opt/perl-catamount/include
 # mkdir -p /opt/perl-catamount/lib
-# mkdir -p /opt/perl-catamount/lib/perl5/5.20.2
+# mkdir -p /opt/perl-catamount/lib/perl5/5.20.3
 # mkdir -p /opt/perl-catamount/bin
 # cp *.h /opt/perl-catamount/include
 # cp libperl.a /opt/perl-catamount/lib
-# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.20.2
+# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.20.3
 # cp miniperl perl run.sh cc.sh /opt/perl-catamount/lib
 #
 # With the headers and the libperl.a you can embed Perl to your Catamount
Index: gnu/usr.bin/perl/hints/darwin.sh
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/hints/darwin.sh,v
retrieving revision 1.1.1.11
diff -u -p -u -p -r1.1.1.11 darwin.sh
--- gnu/usr.bin/perl/hints/darwin.sh 25 Apr 2015 19:10:37 -0000 1.1.1.11
+++ gnu/usr.bin/perl/hints/darwin.sh 28 Jun 2016 18:04:57 -0000
@@ -123,9 +123,11 @@ ccflags="${ccflags} -fno-common -DPERL_D
 # stdint.h defining INT32_MIN as (-INT32_MAX-1)
 # -- Edward Moy
 #
-case "$(grep '^#define INT32_MIN' /usr/include/stdint.h)" in
+if test -f /usr/include/stdint.h; then
+  case "$(grep '^#define INT32_MIN' /usr/include/stdint.h)" in
   *-2147483648) ccflags="${ccflags} -DINT32_MIN_BROKEN -DINT64_MIN_BROKEN" ;;
-esac
+  esac
+fi
 
 # Avoid Apple's cpp precompiler, better for extensions
 if [ "X`echo | ${cc} -no-cpp-precomp -E - 2>&1 >/dev/null`" = "X" ]; then
Index: gnu/usr.bin/perl/hints/os390.sh
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/hints/os390.sh,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 os390.sh
--- gnu/usr.bin/perl/hints/os390.sh 25 Mar 2013 20:40:55 -0000 1.8
+++ gnu/usr.bin/perl/hints/os390.sh 28 Jun 2016 18:04:57 -0000
@@ -158,10 +158,10 @@ esac
 # under a compiler other than c89.
 case "$usedl" in
 define)
-echo 'cat >.$$.c; '"$cc"' -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -D_SHR_ENVIRON -E -Wc,"LANGLVL(DOLLARINNAMES)",NOLOC ${1+"$@"} .$$.c | grep -v "??="; rm .$$.c' > cppstdin
+echo 'cat >.$$.c; '"$cc"' -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -D_SHR_ENVIRON -E -Wc,"LANGLVL(DOLLARINNAMES)",NOLOC ${1+"$@"} .$$.c | fgrep -v "??="; rm .$$.c' > cppstdin
     ;;
 *)
-echo 'cat >.$$.c; '"$cc"' -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -E -Wc,"LANGLVL(DOLLARINNAMES)",NOLOC ${1+"$@"} .$$.c | grep -v "??="; rm .$$.c' > cppstdin
+echo 'cat >.$$.c; '"$cc"' -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -E -Wc,"LANGLVL(DOLLARINNAMES)",NOLOC ${1+"$@"} .$$.c | fgrep -v "??="; rm .$$.c' > cppstdin
     ;;
 esac
 
Index: gnu/usr.bin/perl/lib/h2ph.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/lib/h2ph.t,v
retrieving revision 1.1.1.3
diff -u -p -u -p -r1.1.1.3 h2ph.t
--- gnu/usr.bin/perl/lib/h2ph.t 25 Mar 2013 20:08:52 -0000 1.1.1.3
+++ gnu/usr.bin/perl/lib/h2ph.t 28 Jun 2016 18:04:57 -0000
@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pr
                    stderr => 1 );
 like( $result, qr/syntax OK$/, "preamble compiles");
 
-$result = runperl( switches => ["-w"],
+$result = runperl( switches => ['-I.', "-w"],
                    stderr => 1,
                    prog => <<'PROG' );
 $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);
Index: gnu/usr.bin/perl/lib/perl5db.pl
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/lib/perl5db.pl,v
retrieving revision 1.18
diff -u -p -u -p -r1.18 perl5db.pl
--- gnu/usr.bin/perl/lib/perl5db.pl 17 Nov 2014 20:57:06 -0000 1.18
+++ gnu/usr.bin/perl/lib/perl5db.pl 28 Jun 2016 18:04:57 -0000
@@ -523,7 +523,7 @@ BEGIN {
 # Debugger for Perl 5.00x; perl5db.pl patch level:
 use vars qw($VERSION $header);
 
-$VERSION = '1.44';
+$VERSION = '1.44_01';
 
 $header = "perl5db.pl version $VERSION";
 
@@ -866,6 +866,7 @@ BEGIN {
         lock($DBGR);
         print "Threads support enabled\n";
     } else {
+        *lock = sub(*) {};
         *share = sub(\[$@%]) {};
     }
 }
Index: gnu/usr.bin/perl/lib/unicore/mktables.lst
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/lib/unicore/mktables.lst,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 mktables.lst
--- gnu/usr.bin/perl/lib/unicore/mktables.lst 17 Nov 2014 21:03:16 -0000 1.7
+++ gnu/usr.bin/perl/lib/unicore/mktables.lst 28 Jun 2016 18:04:57 -0000
@@ -1,7 +1,7 @@
 #
 # mktables.lst -- File list for lib/unicore/mktables.
 #
-#   Autogenerated starting on 1409436669 (Sat Aug 30 15:11:09 2014)
+#   Autogenerated starting on 1451598799 (Thu Dec 31 13:53:19 2015)
 #   From options -C lib/unicore -P pod -maketest -makelist -p
 #
 # - First section is input files
Index: gnu/usr.bin/perl/plan9/config.plan9
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/plan9/config.plan9,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 config.plan9
--- gnu/usr.bin/perl/plan9/config.plan9 25 Apr 2015 19:14:47 -0000 1.16
+++ gnu/usr.bin/perl/plan9/config.plan9 28 Jun 2016 18:04:57 -0000
@@ -3373,8 +3373,8 @@
  * This symbol contains the ~name expanded version of PRIVLIB, to be used
  * in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define PRIVLIB "/sys/lib/perl/5.20.2" /**/
-#define PRIVLIB_EXP "/sys/lib/perl/5.20.2" /**/
+#define PRIVLIB "/sys/lib/perl/5.20.3" /**/
+#define PRIVLIB_EXP "/sys/lib/perl/5.20.3" /**/
 
 /* PTRSIZE:
  * This symbol contains the size of a pointer, so that the C preprocessor
@@ -3501,9 +3501,9 @@
  * removed.  The elements in inc_version_list (inc_version_list.U) can
  * be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "/sys/lib/perl/5.20.2/site_perl" /**/
-#define SITELIB_EXP "/sys/lib/perl/5.20.2/site_perl" /**/
-#define SITELIB_STEM "/sys/lib/perl/5.20.2/site_perl" /**/
+#define SITELIB "/sys/lib/perl/5.20.3/site_perl" /**/
+#define SITELIB_EXP "/sys/lib/perl/5.20.3/site_perl" /**/
+#define SITELIB_STEM "/sys/lib/perl/5.20.3/site_perl" /**/
 
 /* Size_t_size:
  * This symbol holds the size of a Size_t in bytes.
Index: gnu/usr.bin/perl/plan9/config_sh.sample
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/plan9/config_sh.sample,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 config_sh.sample
--- gnu/usr.bin/perl/plan9/config_sh.sample 25 Apr 2015 19:26:22 -0000 1.4
+++ gnu/usr.bin/perl/plan9/config_sh.sample 28 Jun 2016 18:04:57 -0000
@@ -34,10 +34,10 @@ aphostname='/bin/uname -n'
 api_revision='5'
 api_subversion='0'
 api_version='20'
-api_versionstring='5.20.2'
+api_versionstring='5.20.0'
 ar='ar'
-archlib='/sys/lib/perl5/5.20.2/386'
-archlibexp='/sys/lib/perl5/5.20.2/386'
+archlib='/sys/lib/perl5/5.20.3/386'
+archlibexp='/sys/lib/perl5/5.20.3/386'
 archname64=''
 archname='386'
 archobjs=''
@@ -723,17 +723,17 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='/sys/lib/perl/5.20.2/386'
+installarchlib='/sys/lib/perl/5.20.3/386'
 installbin='/usr/bin'
 installman1dir='/sys/man/1pub'
 installman3dir='/sys/man/2pub'
 installprefix='/usr'
 installprefixexp='/usr'
-installprivlib='/sys/lib/perl/5.20.2'
+installprivlib='/sys/lib/perl/5.20.3'
 installscript='/usr/bin'
-installsitearch='/sys/lib/perl/5.20.2/site_perl/386'
+installsitearch='/sys/lib/perl/5.20.3/site_perl/386'
 installsitebin='/usr/bin'
-installsitelib='/sys/lib/perl/5.20.2/site_perl'
+installsitelib='/sys/lib/perl/5.20.3/site_perl'
 installstyle='lib/perl5'
 installusrbinperl='undef'
 installvendorarch=''
@@ -853,8 +853,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/sys/lib/perl/5.20.2'
-privlibexp='/sys/lib/perl/5.20.2'
+privlib='/sys/lib/perl/5.20.3'
+privlibexp='/sys/lib/perl/5.20.3'
 procselfexe=''
 prototype='define'
 ptrsize='4'
@@ -919,13 +919,13 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 0'
 sig_size='50'
 signal_t='void'
-sitearch='/sys/lib/perl/5.20.2/site_perl/386'
+sitearch='/sys/lib/perl/5.20.3/site_perl/386'
 sitearchexp='/sys/lib/perl/site_perl/386'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
-sitelib='/sys/lib/perl/5.20.2/site_perl'
-sitelib_stem='/sys/lib/perl/5.20.2/site_perl'
-sitelibexp='/sys/lib/perl/5.20.2/site_perl'
+sitelib='/sys/lib/perl/5.20.3/site_perl'
+sitelib_stem='/sys/lib/perl/5.20.3/site_perl'
+sitelibexp='/sys/lib/perl/5.20.3/site_perl'
 siteprefix='/usr'
 siteprefixexp='/usr'
 sizesize='4'
@@ -958,7 +958,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/sys/include/ape/string.h'
 submit=''
-subversion='2'
+subversion='3'
 sysman='/sys/man/1pub'
 tail=''
 tar=''
@@ -1038,8 +1038,8 @@ vendorlib_stem=''
 vendorlibexp=''
 vendorprefix=''
 vendorprefixexp=''
-version='5.20.2'
-version_patchlevel_string='version 20 subversion 2'
+version='5.20.3'
+version_patchlevel_string='version 20 subversion 3'
 versiononly='undef'
 vi=''
 xlibpth=''
@@ -1053,7 +1053,7 @@ config_args=''
 config_argc=0
 PERL_REVISION=5
 PERL_VERSION=20
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
 PERL_API_REVISION=5
 PERL_API_VERSION=20
 PERL_API_SUBVERSION=0
Index: gnu/usr.bin/perl/pod/perl.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pod/perl.pod,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 perl.pod
--- gnu/usr.bin/perl/pod/perl.pod 25 Apr 2015 19:30:23 -0000 1.20
+++ gnu/usr.bin/perl/pod/perl.pod 28 Jun 2016 18:04:57 -0000
@@ -180,6 +180,7 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod
 
     perlhist Perl history records
     perldelta Perl changes since previous version
+    perl5202delta Perl changes in version 5.20.2
     perl5201delta Perl changes in version 5.20.1
     perl5200delta Perl changes in version 5.20.0
     perl5184delta Perl changes in version 5.18.4
Index: gnu/usr.bin/perl/pod/perl5202delta.pod
===================================================================
RCS file: gnu/usr.bin/perl/pod/perl5202delta.pod
diff -N gnu/usr.bin/perl/pod/perl5202delta.pod
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/usr.bin/perl/pod/perl5202delta.pod 28 Jun 2016 18:04:57 -0000
@@ -0,0 +1,415 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5202delta - what is new for perl v5.20.2
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.20.1 release and the 5.20.2
+release.
+
+If you are upgrading from an earlier release such as 5.20.0, first read
+L<perl5201delta>, which describes differences between 5.20.0 and 5.20.1.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.20.1.  If any exist,
+they are bugs, and we request that you submit a report.  See L</Reporting Bugs>
+below.
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<attributes> has been upgraded from version 0.22 to 0.23.
+
+The usage of C<memEQs> in the XS has been corrected.
+L<[perl #122701]|https://rt.perl.org/Ticket/Display.html?id=122701>
+
+=item *
+
+L<Data::Dumper> has been upgraded from version 2.151 to 2.151_01.
+
+Fixes CVE-2014-4330 by adding a configuration variable/option to limit
+recursion when dumping deep data structures.
+
+=item *
+
+L<Errno> has been upgraded from version 1.20_03 to 1.20_05.
+
+Warnings when building the XS on Windows with the Visual C++ compiler are now
+avoided.
+
+=item *
+
+L<feature> has been upgraded from version 1.36 to 1.36_01.
+
+The C<postderef> feature has now been documented.  This feature was actually
+added in Perl 5.20.0 but was accidentally omitted from the feature
+documentation until now.
+
+=item *
+
+L<IO::Socket> has been upgraded from version 1.37 to 1.38.
+
+Document the limitations of the connected() method.
+L<[perl #123096]|https://rt.perl.org/Ticket/Display.html?id=123096>
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 5.020001 to 5.20150214.
+
+The list of Perl versions covered has been updated.
+
+=item *
+
+PathTools has been upgraded from version 3.48 to 3.48_01.
+
+A warning from the B<gcc> compiler is now avoided when building the XS.
+
+=item *
+
+L<PerlIO::scalar> has been upgraded from version 0.18 to 0.18_01.
+
+Reading from a position well past the end of the scalar now correctly returns
+end of file.
+L<[perl #123443]|https://rt.perl.org/Ticket/Display.html?id=123443>
+
+Seeking to a negative position still fails, but no longer leaves the file
+position set to a negation location.
+
+C<eof()> on a C<PerlIO::scalar> handle now properly returns true when the file
+position is past the 2GB mark on 32-bit systems.
+
+=item *
+
+L<Storable> has been upgraded from version 2.49 to 2.49_01.
+
+Minor grammatical change to the documentation only.
+
+=item *
+
+L<VMS::DCLsym> has been upgraded from version 1.05 to 1.05_01.
+
+Minor formatting change to the documentation only.
+
+=item *
+
+L<VMS::Stdio> has been upgraded from version 2.4 to 2.41.
+
+Minor formatting change to the documentation only.
+
+=back
+
+=head1 Documentation
+
+=head2 New Documentation
+
+=head3 L<perlunicook>
+
+This document, by Tom Christiansen, provides examples of handling Unicode in
+Perl.
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlexperiment>
+
+=over 4
+
+=item *
+
+Added reference to subroutine signatures.  This feature was actually added in
+Perl 5.20.0 but was accidentally omitted from the experimental feature
+documentation until now.
+
+=back
+
+=head3 L<perlpolicy>
+
+=over 4
+
+=item *
+
+The process whereby features may graduate from experimental status has now been
+formally documented.
+
+=back
+
+=head3 L<perlsyn>
+
+=over 4
+
+=item *
+
+An ambiguity in the documentation of the ellipsis statement has been corrected.
+L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661>
+
+=back
+
+=head1 Diagnostics
+
+The following additions or changes have been made to diagnostic output,
+including warnings and fatal error messages.  For the complete list of
+diagnostic messages, see L<perldiag>.
+
+=head2 Changes to Existing Diagnostics
+
+=over 4
+
+=item *
+
+L<Bad symbol for scalar|perldiag/"Bad symbol for scalar"> is now documented.
+This error is not new, but was not previously documented here.
+
+=item *
+
+L<Missing right brace on \N{}|perldiag/"Missing right brace on \N{}"> is now
+documented.  This error is not new, but was not previously documented here.
+
+=back
+
+=head1 Testing
+
+=over 4
+
+=item *
+
+The test script F<re/rt122747.t> has been added to verify that
+L<perl #122747|https://rt.perl.org/Ticket/Display.html?id=122747> remains
+fixed.
+
+=back
+
+=head1 Platform Support
+
+=head2 Regained Platforms
+
+IRIX and Tru64 platforms are working again.  (Some C<make test> failures
+remain.)
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+AIX now sets the length in C<< getsockopt >> correctly.
+L<[perl #120835]|https://rt.perl.org/Ticket/Display.html?id=120835>,
+L<[cpan #91183]|https://rt.cpan.org/Ticket/Display.html?id=91183>,
+L<[cpan #85570]|https://rt.cpan.org/Ticket/Display.html?id=85570>
+
+=item *
+
+In Perl 5.20.0, C<$^N> accidentally had the internal UTF8 flag turned off if
+accessed from a code block within a regular expression, effectively
+UTF8-encoding the value.  This has been fixed.
+L<[perl #123135]|https://rt.perl.org/Ticket/Display.html?id=123135>
+
+=item *
+
+Various cases where the name of a sub is used (autoload, overloading, error
+messages) used to crash for lexical subs, but have been fixed.
+
+=item *
+
+An assertion failure when parsing C<sort> with debugging enabled has been
+fixed.
+L<[perl #122771]|https://rt.perl.org/Ticket/Display.html?id=122771>
+
+=item *
+
+Loading UTF8 tables during a regular expression match could cause assertion
+failures under debugging builds if the previous match used the very same
+regular expression.
+L<[perl #122747]|https://rt.perl.org/Ticket/Display.html?id=122747>
+
+=item *
+
+Due to a mistake in the string-copying logic, copying the value of a state
+variable could instead steal the value and undefine the variable.  This bug,
+introduced in Perl 5.20, would happen mostly for long strings (1250 chars or
+more), but could happen for any strings under builds with copy-on-write
+disabled.
+L<[perl #123029]|https://rt.perl.org/Ticket/Display.html?id=123029>
+
+=item *
+
+Fixed a bug that could cause perl to execute an infinite loop during
+compilation.
+L<[perl #122995]|https://rt.perl.org/Ticket/Display.html?id=122995>
+
+=item *
+
+On Win32, restoring in a child pseudo-process a variable that was C<local()>ed
+in a parent pseudo-process before the C<fork> happened caused memory corruption
+and a crash in the child pseudo-process (and therefore OS process).
+L<[perl #40565]|https://rt.perl.org/Ticket/Display.html?id=40565>
+
+=item *
+
+Tainted constants evaluated at compile time no longer cause unrelated
+statements to become tainted.
+L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669>
+
+=item *
+
+Calling C<write> on a format with a C<^**> field could produce a panic in
+sv_chop() if there were insufficient arguments or if the variable used to fill
+the field was empty.
+L<[perl #123245]|https://rt.perl.org/Ticket/Display.html?id=123245>
+
+=item *
+
+In Perl 5.20.0, C<sort CORE::fake> where 'fake' is anything other than a
+keyword started chopping of the last 6 characters and treating the result as a
+sort sub name.  The previous behaviour of treating "CORE::fake" as a sort sub
+name has been restored.
+L<[perl #123410]|https://rt.perl.org/Ticket/Display.html?id=123410>
+
+=item *
+
+A bug in regular expression patterns that could lead to segfaults and other
+crashes has been fixed.  This occurred only in patterns compiled with C<"/i">,
+while taking into account the current POSIX locale (this usually means they
+have to be compiled within the scope of C<S<"use locale">>), and there must be
+a string of at least 128 consecutive bytes to match.
+L<[perl #123539]|https://rt.perl.org/Ticket/Display.html?id=123539>
+
+=item *
+
+C<qr/@array(?{block})/> no longer dies with "Bizarre copy of ARRAY".
+L<[perl #123344]|https://rt.perl.org/Ticket/Display.html?id=123344>
+
+=item *
+
+C<gmtime> no longer crashes with not-a-number values.
+L<[perl #123495]|https://rt.perl.org/Ticket/Display.html?id=123495>
+
+=item *
+
+Certain syntax errors in substitutions, such as C<< s/${<>{})// >>, would
+crash, and had done so since Perl 5.10.  (In some cases the crash did not start
+happening until Perl 5.16.)  The crash has, of course, been fixed.
+L<[perl #123542]|https://rt.perl.org/Ticket/Display.html?id=123542>
+
+=item *
+
+A memory leak in some regular expressions, introduced in Perl 5.20.1, has been
+fixed.
+L<[perl #123198]|https://rt.perl.org/Ticket/Display.html?id=123198>
+
+=item *
+
+C<< formline("@...", "a"); >> would crash.  The C<FF_CHECKNL> case in
+pp_formline() didn't set the pointer used to mark the chop position, which led
+to the C<FF_MORE> case crashing with a segmentation fault.  This has been
+fixed.
+L<[perl #123538]|https://rt.perl.org/Ticket/Display.html?id=123538>
+L<[perl #123622]|https://rt.perl.org/Ticket/Display.html?id=123622>
+
+=item *
+
+A possible buffer overrun and crash when parsing a literal pattern during
+regular expression compilation has been fixed.
+L<[perl #123604]|https://rt.perl.org/Ticket/Display.html?id=123604>
+
+=back
+
+=head1 Known Problems
+
+=over 4
+
+=item *
+
+It is a known bug that lexical subroutines cannot be used as the C<SUBNAME>
+argument to C<sort>.  This will be fixed in a future version of Perl.
+
+=back
+
+=head1 Errata From Previous Releases
+
+=over 4
+
+=item *
+
+A regression has been fixed that was introduced in Perl 5.20.0 (fixed in Perl
+5.20.1 as well as here) in which a UTF-8 encoded regular expression pattern
+that contains a single ASCII lowercase letter does not match its uppercase
+counterpart.
+L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655>
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.20.2 represents approximately 5 months of development since Perl 5.20.1
+and contains approximately 6,300 lines of changes across 170 files from 34
+authors.
+
+Excluding auto-generated files, documentation and release tools, there were
+approximately 1,900 lines of changes to 80 .pm, .t, .c and .h files.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers.  The following people are known to have contributed
+the improvements that became Perl 5.20.2:
+
+Aaron Crane, Abigail, Andreas Voegele, Andy Dougherty, Anthony Heading,
+Aristotle Pagaltzis, Chris 'BinGOs' Williams, Craig A. Berry, Daniel Dragan,
+Doug Bell, Ed J, Father Chrysostomos, Glenn D. Golden, H.Merijn Brand, Hugo van
+der Sanden, James E Keenan, Jarkko Hietaniemi, Jim Cromie, Karen Etheridge,
+Karl Williamson, kmx, Matthew Horsfall, Max Maischein, Peter Martini, Rafael
+Garcia-Suarez, Ricardo Signes, Shlomi Fish, Slaven Rezic, Steffen Müller,
+Steve Hay, Tadeusz Sośnierz, Tony Cook, Yves Orton, Ævar Arnfjörð
+Bjarmason.
+
+The list above is almost certainly incomplete as it is automatically generated
+from version control history.  In particular, it does not include the names of
+the (very much appreciated) contributors who reported issues to the Perl bug
+tracker.
+
+Many of the changes included in this version originated in the CPAN modules
+included in Perl's core.  We're grateful to the entire CPAN community for
+helping Perl to flourish.
+
+For a more complete list of all of Perl's historical contributors, please see
+the F<AUTHORS> file in the Perl source distribution.
+
+=head1 Reporting Bugs
+
+If you find what you think is a bug, you might check the articles recently
+posted to the comp.lang.perl.misc newsgroup and the perl bug database at
+https://rt.perl.org/ .  There may also be information at http://www.perl.org/ ,
+the Perl Home Page.
+
+If you believe you have an unreported bug, please run the L<perlbug> program
+included with your release.  Be sure to trim your bug down to a tiny but
+sufficient test case.  Your bug report, along with the output of C<perl -V>,
+will be sent off to [hidden email] to be analysed by the Perl porting team.
+
+If the bug you are reporting has security implications, which make it
+inappropriate to send to a publicly archived mailing list, then please send it
+to [hidden email].  This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who will be
+able to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported.  Please only use this address for
+security issues in the Perl core, not for modules independently distributed on
+CPAN.
+
+=head1 SEE ALSO
+
+The F<Changes> file for an explanation of how to view exhaustive details on
+what changed.
+
+The F<INSTALL> file for how to build Perl.
+
+The F<README> file for general stuff.
+
+The F<Artistic> and F<Copying> files for copyright information.
+
+=cut
Index: gnu/usr.bin/perl/pod/perlclib.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pod/perlclib.pod,v
retrieving revision 1.1.1.9
diff -u -p -u -p -r1.1.1.9 perlclib.pod
--- gnu/usr.bin/perl/pod/perlclib.pod 17 Nov 2014 20:53:13 -0000 1.1.1.9
+++ gnu/usr.bin/perl/pod/perlclib.pod 28 Jun 2016 18:04:57 -0000
@@ -222,7 +222,7 @@ everywhere by now.
  system(s)                   Don't. Look at pp_system or use my_popen
 
  getenv(s)                   PerlEnv_getenv(s)
- setenv(s, val)              my_putenv(s, val)
+ setenv(s, val)              my_setenv(s, val)
 
 =head2 Miscellaneous functions
 
Index: gnu/usr.bin/perl/pod/perldelta.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pod/perldelta.pod,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 perldelta.pod
--- gnu/usr.bin/perl/pod/perldelta.pod 25 Apr 2015 19:14:47 -0000 1.12
+++ gnu/usr.bin/perl/pod/perldelta.pod 28 Jun 2016 18:04:57 -0000
@@ -2,19 +2,19 @@
 
 =head1 NAME
 
-perldelta - what is new for perl v5.20.2
+perldelta - what is new for perl v5.20.3
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.20.1 release and the 5.20.2
+This document describes differences between the 5.20.2 release and the 5.20.3
 release.
 
-If you are upgrading from an earlier release such as 5.20.0, first read
-L<perl5201delta>, which describes differences between 5.20.0 and 5.20.1.
+If you are upgrading from an earlier release such as 5.20.1, first read
+L<perl5202delta>, which describes differences between 5.20.1 and 5.20.2.
 
 =head1 Incompatible Changes
 
-There are no changes intentionally incompatible with 5.20.1.  If any exist,
+There are no changes intentionally incompatible with 5.20.2.  If any exist,
 they are bugs, and we request that you submit a report.  See L</Reporting Bugs>
 below.
 
@@ -26,346 +26,243 @@ below.
 
 =item *
 
-L<attributes> has been upgraded from version 0.22 to 0.23.
+L<Errno> has been upgraded from version 1.20_05 to 1.20_06.
 
-The usage of C<memEQs> in the XS has been corrected.
-L<[perl #122701]|https://rt.perl.org/Ticket/Display.html?id=122701>
+Add B<-P> to the pre-processor command-line on GCC 5.  GCC added extra line
+directives, breaking parsing of error code definitions.
+L<[perl #123784]|https://rt.perl.org/Ticket/Display.html?id=123784>
 
 =item *
 
-L<Data::Dumper> has been upgraded from version 2.151 to 2.151_01.
+L<Module::CoreList> has been upgraded from version 5.20150214 to 5.20150822.
 
-Fixes CVE-2014-4330 by adding a configuration variable/option to limit
-recursion when dumping deep data structures.
+Updated to cover the latest releases of Perl.
 
 =item *
 
-L<Errno> has been upgraded from version 1.20_03 to 1.20_05.
+L<perl5db.pl> has been upgraded from 1.44 to 1.44_01.
 
-Warnings when building the XS on Windows with the Visual C++ compiler are now
-avoided.
-
-=item *
-
-L<feature> has been upgraded from version 1.36 to 1.36_01.
-
-The C<postderef> feature has now been documented.  This feature was actually
-added in Perl 5.20.0 but was accidentally omitted from the feature
-documentation until now.
-
-=item *
-
-L<IO::Socket> has been upgraded from version 1.37 to 1.38.
-
-Document the limitations of the connected() method.
-L<[perl #123096]|https://rt.perl.org/Ticket/Display.html?id=123096>
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.020001 to 5.20150214.
-
-The list of Perl versions covered has been updated.
-
-=item *
-
-PathTools has been upgraded from version 3.48 to 3.48_01.
-
-A warning from the B<gcc> compiler is now avoided when building the XS.
-
-=item *
-
-L<PerlIO::scalar> has been upgraded from version 0.18 to 0.18_01.
-
-Reading from a position well past the end of the scalar now correctly returns
-end of file.
-L<[perl #123443]|https://rt.perl.org/Ticket/Display.html?id=123443>
-
-Seeking to a negative position still fails, but no longer leaves the file
-position set to a negation location.
-
-C<eof()> on a C<PerlIO::scalar> handle now properly returns true when the file
-position is past the 2GB mark on 32-bit systems.
-
-=item *
-
-L<Storable> has been upgraded from version 2.49 to 2.49_01.
-
-Minor grammatical change to the documentation only.
-
-=item *
-
-L<VMS::DCLsym> has been upgraded from version 1.05 to 1.05_01.
-
-Minor formatting change to the documentation only.
-
-=item *
-
-L<VMS::Stdio> has been upgraded from version 2.4 to 2.41.
-
-Minor formatting change to the documentation only.
+The debugger would cause an assertion failure.
+L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127>
 
 =back
 
 =head1 Documentation
 
-=head2 New Documentation
-
-=head3 L<perlunicook>
-
-This document, by Tom Christiansen, provides examples of handling Unicode in
-Perl.
-
 =head2 Changes to Existing Documentation
 
-=head3 L<perlexperiment>
+=head3 L<perlfunc>
 
 =over 4
 
 =item *
 
-Added reference to subroutine signatures.  This feature was actually added in
-Perl 5.20.0 but was accidentally omitted from the experimental feature
-documentation until now.
+Mention that L<C<study()>|perlfunc/study> is currently a no-op.
 
 =back
 
-=head3 L<perlpolicy>
+=head3 L<perlguts>
 
 =over 4
 
 =item *
 
-The process whereby features may graduate from experimental status has now been
-formally documented.
+The OOK example has been updated to account for COW changes and a change in the
+storage of the offset.
 
 =back
 
-=head3 L<perlsyn>
+=head3 L<perlhacktips>
 
 =over 4
 
 =item *
 
-An ambiguity in the documentation of the ellipsis statement has been corrected.
-L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661>
+Documentation has been added illustrating the perils of assuming the contents
+of static memory pointed to by the return values of Perl wrappers for C library
+functions doesn't change.
 
 =back
 
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages.  For the complete list of
-diagnostic messages, see L<perldiag>.
-
-=head2 Changes to Existing Diagnostics
+=head3 L<perlpodspec>
 
 =over 4
 
 =item *
 
-L<Bad symbol for scalar|perldiag/"Bad symbol for scalar"> is now documented.
-This error is not new, but was not previously documented here.
-
-=item *
-
-L<Missing right brace on \N{}|perldiag/"Missing right brace on \N{}"> is now
-documented.  This error is not new, but was not previously documented here.
+The specification of the POD language is changing so that the default encoding
+of PODs that aren't in UTF-8 (unless otherwise indicated) is CP1252 instead of
+ISO-8859-1 (Latin1).
 
 =back
 
-=head1 Testing
+=head1 Utility Changes
+
+=head2 L<h2ph>
 
 =over 4
 
 =item *
 
-The test script F<re/rt122747.t> has been added to verify that
-L<perl #122747|https://rt.perl.org/Ticket/Display.html?id=122747> remains
-fixed.
+B<h2ph> now handles hexadecimal constants in the compiler's predefined macro
+definitions, as visible in C<$Config{cppsymbols}>.
+L<[perl #123784]|https://rt.perl.org/Ticket/Display.html?id=123784>
 
 =back
 
-=head1 Platform Support
-
-=head2 Regained Platforms
-
-IRIX and Tru64 platforms are working again.  (Some C<make test> failures
-remain.)
-
-=head1 Selected Bug Fixes
+=head1 Testing
 
 =over 4
 
 =item *
 
-AIX now sets the length in C<< getsockopt >> correctly.
-L<[perl #120835]|https://rt.perl.org/Ticket/Display.html?id=120835>,
-L<[cpan #91183]|https://rt.cpan.org/Ticket/Display.html?id=91183>,
-L<[cpan #85570]|https://rt.cpan.org/Ticket/Display.html?id=85570>
+F<t/perf/taint.t> has been added to see if optimisations with taint issues are
+keeping things fast.
 
 =item *
 
-In Perl 5.20.0, C<$^N> accidentally had the internal UTF8 flag turned off if
-accessed from a code block within a regular expression, effectively
-UTF8-encoding the value.  This has been fixed.
-L<[perl #123135]|https://rt.perl.org/Ticket/Display.html?id=123135>
+F<t/porting/re_context.t> has been added to test that L<utf8> and its
+dependencies only use the subset of the C<$1..$n> capture vars that
+Perl_save_re_context() is hard-coded to localize, because that function has no
+efficient way of determining at runtime what vars to localize.
 
-=item *
+=back
 
-Various cases where the name of a sub is used (autoload, overloading, error
-messages) used to crash for lexical subs, but have been fixed.
+=head1 Platform Support
 
-=item *
+=head2 Platform-Specific Notes
 
-An assertion failure when parsing C<sort> with debugging enabled has been
-fixed.
-L<[perl #122771]|https://rt.perl.org/Ticket/Display.html?id=122771>
+=over 4
 
-=item *
+=item Win32
 
-Loading UTF8 tables during a regular expression match could cause assertion
-failures under debugging builds if the previous match used the very same
-regular expression.
-L<[perl #122747]|https://rt.perl.org/Ticket/Display.html?id=122747>
+=over 4
 
 =item *
 
-Due to a mistake in the string-copying logic, copying the value of a state
-variable could instead steal the value and undefine the variable.  This bug,
-introduced in Perl 5.20, would happen mostly for long strings (1250 chars or
-more), but could happen for any strings under builds with copy-on-write
-disabled.
-L<[perl #123029]|https://rt.perl.org/Ticket/Display.html?id=123029>
+Previously, when compiling with a 64-bit Visual C++, every Perl XS module
+(including CPAN ones) and Perl aware C file would unconditionally have around a
+dozen warnings from F<hv_func.h>.  These warnings have been silenced.  GCC (all
+bitness) and 32-bit Visual C++ were not affected.
 
 =item *
 
-Fixed a bug that could cause perl to execute an infinite loop during
-compilation.
-L<[perl #122995]|https://rt.perl.org/Ticket/Display.html?id=122995>
+B<miniperl.exe> is now built with B<-fno-strict-aliasing>, allowing 64-bit
+builds to complete with GCC 4.8.
+L<[perl #123976]|https://rt.perl.org/Ticket/Display.html?id=123976>
 
-=item *
+=back
 
-On Win32, restoring in a child pseudo-process a variable that was C<local()>ed
-in a parent pseudo-process before the C<fork> happened caused memory corruption
-and a crash in the child pseudo-process (and therefore OS process).
-L<[perl #40565]|https://rt.perl.org/Ticket/Display.html?id=40565>
+=back
 
-=item *
+=head1 Selected Bug Fixes
 
-Tainted constants evaluated at compile time no longer cause unrelated
-statements to become tainted.
-L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669>
+=over 4
 
 =item *
 
-Calling C<write> on a format with a C<^**> field could produce a panic in
-sv_chop() if there were insufficient arguments or if the variable used to fill
-the field was empty.
-L<[perl #123245]|https://rt.perl.org/Ticket/Display.html?id=123245>
+Repeated global pattern matches in scalar context on large tainted strings were
+exponentially slow depending on the current match position in the string.
+L<[perl #123202]|https://rt.perl.org/Ticket/Display.html?id=123202>
 
 =item *
 
-In Perl 5.20.0, C<sort CORE::fake> where 'fake' is anything other than a
-keyword started chopping of the last 6 characters and treating the result as a
-sort sub name.  The previous behaviour of treating "CORE::fake" as a sort sub
-name has been restored.
-L<[perl #123410]|https://rt.perl.org/Ticket/Display.html?id=123410>
+The original visible value of L<C<$E<sol>>|perlvar/$E<sol>> is now preserved
+when it is set to an invalid value.  Previously if you set C<$/> to a reference
+to an array, for example, perl would produce a runtime error and not set PL_rs,
+but Perl code that checked C<$/> would see the array reference.
+L<[perl #123218]|https://rt.perl.org/Ticket/Display.html?id=123218>
 
 =item *
 
-A bug in regular expression patterns that could lead to segfaults and other
-crashes has been fixed.  This occurred only in patterns compiled with C<"/i">,
-while taking into account the current POSIX locale (this usually means they
-have to be compiled within the scope of C<S<"use locale">>), and there must be
-a string of at least 128 consecutive bytes to match.
-L<[perl #123539]|https://rt.perl.org/Ticket/Display.html?id=123539>
+Perl 5.14.0 introduced a bug whereby C<eval { LABEL: }> would crash.  This has
+been fixed.
+L<[perl #123652]|https://rt.perl.org/Ticket/Display.html?id=123652>
 
 =item *
 
-C<qr/@array(?{block})/> no longer dies with "Bizarre copy of ARRAY".
-L<[perl #123344]|https://rt.perl.org/Ticket/Display.html?id=123344>
+Extending an array cloned from a parent thread could result in "Modification of
+a read-only value attempted" errors when attempting to modify the new elements.
+L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127>
 
 =item *
 
-C<gmtime> no longer crashes with not-a-number values.
-L<[perl #123495]|https://rt.perl.org/Ticket/Display.html?id=123495>
+Several cases of data used to store environment variable contents in core C
+code being potentially overwritten before being used have been fixed.
+L<[perl #123748]|https://rt.perl.org/Ticket/Display.html?id=123748>
 
 =item *
 
-Certain syntax errors in substitutions, such as C<< s/${<>{})// >>, would
-crash, and had done so since Perl 5.10.  (In some cases the crash did not start
-happening until Perl 5.16.)  The crash has, of course, been fixed.
-L<[perl #123542]|https://rt.perl.org/Ticket/Display.html?id=123542>
+UTF-8 variable names used in array indexes, unquoted UTF-8 HERE-document
+terminators and UTF-8 function names all now work correctly.
+L<[perl #124113]|https://rt.perl.org/Ticket/Display.html?id=124113>
 
 =item *
 
-A memory leak in some regular expressions, introduced in Perl 5.20.1, has been
-fixed.
-L<[perl #123198]|https://rt.perl.org/Ticket/Display.html?id=123198>
+A subtle bug introduced in Perl 5.20.2 involving UTF-8 in regular expressions
+and sometimes causing a crash has been fixed.  A new test script has been added
+to test this fix; see under L</Testing>.
+L<[perl #124109]|https://rt.perl.org/Ticket/Display.html?id=124109>
 
 =item *
 
-C<< formline("@...", "a"); >> would crash.  The C<FF_CHECKNL> case in
-pp_formline() didn't set the pointer used to mark the chop position, which led
-to the C<FF_MORE> case crashing with a segmentation fault.  This has been
-fixed.
-L<[perl #123538]|https://rt.perl.org/Ticket/Display.html?id=123538>
-L<[perl #123622]|https://rt.perl.org/Ticket/Display.html?id=123622>
+Some patterns starting with C</.*..../> matched against long strings have been
+slow since Perl 5.8, and some of the form C</.*..../i> have been slow since
+Perl 5.18.  They are now all fast again.
+L<[perl #123743]|https://rt.perl.org/Ticket/Display.html?id=123743>
 
 =item *
 
-A possible buffer overrun and crash when parsing a literal pattern during
-regular expression compilation has been fixed.
-L<[perl #123604]|https://rt.perl.org/Ticket/Display.html?id=123604>
+Warning fatality is now ignored when rewinding the stack.  This prevents
+infinite recursion when the now fatal error also causes rewinding of the stack.
+L<[perl #123398]|https://rt.perl.org/Ticket/Display.html?id=123398>
 
-=back
-
-=head1 Known Problems
+=item *
 
-=over 4
+C<setpgrp($nonzero)> (with one argument) was accidentally changed in Perl 5.16
+to mean C<setpgrp(0)>.  This has been fixed.
 
 =item *
 
-It is a known bug that lexical subroutines cannot be used as the C<SUBNAME>
-argument to C<sort>.  This will be fixed in a future version of Perl.
+A crash with C<< %::=(); J->${\"::"} >> has been fixed.
+L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541>
 
-=back
-
-=head1 Errata From Previous Releases
+=item *
 
-=over 4
+Regular expression possessive quantifier Perl 5.20 regression now fixed.
+C<qr/>I<PAT>C<{>I<min>,I<max>C<}+>C</> is supposed to behave identically to
+C<qr/(?E<gt>>I<PAT>C<{>I<min>,I<max>C<})/>.  Since Perl 5.20, this didn't work
+if I<min> and I<max> were equal.
+L<[perl #125825]|https://rt.perl.org/Ticket/Display.html?id=125825>
 
 =item *
 
-A regression has been fixed that was introduced in Perl 5.20.0 (fixed in Perl
-5.20.1 as well as here) in which a UTF-8 encoded regular expression pattern
-that contains a single ASCII lowercase letter does not match its uppercase
-counterpart.
-L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655>
+Code like C</$a[/> used to read the next line of input and treat it as though
+it came immediately after the opening bracket.  Some invalid code consequently
+would parse and run, but some code caused crashes, so this is now disallowed.
+L<[perl #123712]|https://rt.perl.org/Ticket/Display.html?id=123712>
 
 =back
 
 =head1 Acknowledgements
 
-Perl 5.20.2 represents approximately 5 months of development since Perl 5.20.1
-and contains approximately 6,300 lines of changes across 170 files from 34
+Perl 5.20.3 represents approximately 7 months of development since Perl 5.20.2
+and contains approximately 3,200 lines of changes across 99 files from 26
 authors.
 
 Excluding auto-generated files, documentation and release tools, there were
-approximately 1,900 lines of changes to 80 .pm, .t, .c and .h files.
+approximately 1,500 lines of changes to 43 .pm, .t, .c and .h files.
 
 Perl continues to flourish into its third decade thanks to a vibrant community
 of users and developers.  The following people are known to have contributed
-the improvements that became Perl 5.20.2:
+the improvements that became Perl 5.20.3:
 
-Aaron Crane, Abigail, Andreas Voegele, Andy Dougherty, Anthony Heading,
-Aristotle Pagaltzis, Chris 'BinGOs' Williams, Craig A. Berry, Daniel Dragan,
-Doug Bell, Ed J, Father Chrysostomos, Glenn D. Golden, H.Merijn Brand, Hugo van
-der Sanden, James E Keenan, Jarkko Hietaniemi, Jim Cromie, Karen Etheridge,
-Karl Williamson, kmx, Matthew Horsfall, Max Maischein, Peter Martini, Rafael
-Garcia-Suarez, Ricardo Signes, Shlomi Fish, Slaven Rezic, Steffen Müller,
-Steve Hay, Tadeusz Sośnierz, Tony Cook, Yves Orton, Ævar Arnfjörð
-Bjarmason.
+Alex Vandiver, Andy Dougherty, Aristotle Pagaltzis, Chris 'BinGOs' Williams,
+Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel Dragan, David Mitchell,
+Father Chrysostomos, H.Merijn Brand, James E Keenan, James McCoy, Jarkko
+Hietaniemi, Karen Etheridge, Karl Williamson, kmx, Lajos Veres, Lukas Mai,
+Matthew Horsfall, Petr Písař, Randy Stauner, Ricardo Signes, Sawyer X, Steve
+Hay, Tony Cook, Yves Orton.
 
 The list above is almost certainly incomplete as it is automatically generated
 from version control history.  In particular, it does not include the names of
@@ -383,8 +280,8 @@ the F<AUTHORS> file in the Perl source d
 
 If you find what you think is a bug, you might check the articles recently
 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
-https://rt.perl.org/ .  There may also be information at http://www.perl.org/ ,
-the Perl Home Page.
+https://rt.perl.org/ .  There may also be information at
+http://www.perl.org/ , the Perl Home Page.
 
 If you believe you have an unreported bug, please run the L<perlbug> program
 included with your release.  Be sure to trim your bug down to a tiny but
Index: gnu/usr.bin/perl/pod/perlfunc.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pod/perlfunc.pod,v
retrieving revision 1.19
diff -u -p -u -p -r1.19 perlfunc.pod
--- gnu/usr.bin/perl/pod/perlfunc.pod 25 Apr 2015 19:14:47 -0000 1.19
+++ gnu/usr.bin/perl/pod/perlfunc.pod 28 Jun 2016 18:04:57 -0000
@@ -7671,14 +7671,18 @@ X<study>
 
 =for Pod::Functions optimize input data for repeated searches
 
-Takes extra time to study SCALAR (C<$_> if unspecified) in anticipation of
-doing many pattern matches on the string before it is next modified.
+May take extra time to study SCALAR (C<$_> if unspecified) in anticipation
+of doing many pattern matches on the string before it is next modified.
 This may or may not save time, depending on the nature and number of
 patterns you are searching and the distribution of character
 frequencies in the string to be searched; you probably want to compare
 run times with and without it to see which is faster.  Those loops
 that scan for many short constant strings (including the constant
 parts of more complex patterns) will benefit most.
+
+Note that since Perl version 5.16 this function has been a no-op, but
+this might change in a future release.
+
 (The way C<study> works is this: a linked list of every
 character in the string to be searched is made, so we know, for
 example, where all the C<'k'> characters are.  From each search string,
Index: gnu/usr.bin/perl/pod/perlguts.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pod/perlguts.pod,v
retrieving revision 1.18
diff -u -p -u -p -r1.18 perlguts.pod
--- gnu/usr.bin/perl/pod/perlguts.pod 25 Apr 2015 19:14:47 -0000 1.18
+++ gnu/usr.bin/perl/pod/perlguts.pod 28 Jun 2016 18:04:57 -0000
@@ -323,22 +323,40 @@ Hence, at this point, the start of the b
 at C<SvPVX(sv) - SvIV(sv)> in memory and the PV pointer is pointing
 into the middle of this allocated storage.
 
-This is best demonstrated by example:
+This is best demonstrated by example.  Normally copy-on-write will prevent
+the substitution from operator from using this hack, but if you can craft a
+string for which copy-on-write is not possible, you can see it in play.  In
+the current implementation, the final byte of a string buffer is used as a
+copy-on-write reference count.  If the buffer is not big enough, then
+copy-on-write is skipped.  First have a look at an empty string:
 
-  % ./perl -Ilib -MDevel::Peek -le '$a="12345"; $a=~s/.//; Dump($a)'
-  SV = PVIV(0x8128450) at 0x81340f0
+  % ./perl -Ilib -MDevel::Peek -le '$a=""; $a .= ""; Dump $a'
+  SV = PV(0x7ffb7c008a70) at 0x7ffb7c030390
+    REFCNT = 1
+    FLAGS = (POK,pPOK)
+    PV = 0x7ffb7bc05b50 ""\0
+    CUR = 0
+    LEN = 10
+
+Notice here the LEN is 10.  (It may differ on your platform.)  Extend the
+length of the string to one less than 10, and do a substitution:
+
+  % ./perl -Ilib -MDevel::Peek -le '$a=""; $a.="123456789"; $a=~s/.//; Dump($a)'
+  SV = PV(0x7ffa04008a70) at 0x7ffa04030390
     REFCNT = 1
     FLAGS = (POK,OOK,pPOK)
-    IV = 1  (OFFSET)
-    PV = 0x8135781 ( "1" . ) "2345"\0
-    CUR = 4
-    LEN = 5
+    OFFSET = 1
+    PV = 0x7ffa03c05b61 ( "\1" . ) "23456789"\0
+    CUR = 8
+    LEN = 9
 
-Here the number of bytes chopped off (1) is put into IV, and
-C<Devel::Peek::Dump> helpfully reminds us that this is an offset.  The
+Here the number of bytes chopped off (1) is shown next as the OFFSET.  The
 portion of the string between the "real" and the "fake" beginnings is
 shown in parentheses, and the values of C<SvCUR> and C<SvLEN> reflect
-the fake beginning, not the real one.
+the fake beginning, not the real one.  (The first character of the string
+buffer happens to have changed to "\1" here, not "1", because the current
+implementation stores the offset count in the string buffer.  This is
+subject to change.)
 
 Something similar to the offset hack is performed on AVs to enable
 efficient shifting and splicing off the beginning of the array; while
Index: gnu/usr.bin/perl/pod/perlhacktips.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pod/perlhacktips.pod,v
retrieving revision 1.1.1.3
diff -u -p -u -p -r1.1.1.3 perlhacktips.pod
--- gnu/usr.bin/perl/pod/perlhacktips.pod 17 Nov 2014 20:53:14 -0000 1.1.1.3
+++ gnu/usr.bin/perl/pod/perlhacktips.pod 28 Jun 2016 18:04:57 -0000
@@ -560,6 +560,39 @@ temporarily try the following:
 But in any case, try to keep the features and operating systems
 separate.
 
+=item *
+
+Assuming the contents of static memory pointed to by the return values
+of Perl wrappers for C library functions doesn't change.  Many C library
+functions return pointers to static storage that can be overwritten by
+subsequent calls to the same or related functions.  Perl has
+light-weight wrappers for some of these functions, and which don't make
+copies of the static memory.  A good example is the interface to the
+environment variables that are in effect for the program.  Perl has
+C<PerlEnv_getenv> to get values from the environment.  But the return is
+a pointer to static memory in the C library.  If you are using the value
+to immediately test for something, that's fine, but if you save the
+value and expect it to be unchanged by later processing, you would be
+wrong, but perhaps you wouldn't know it because different C library
+implementations behave differently, and the one on the platform you're
+testing on might work for your situation.  But on some platforms, a
+subsequent call to C<PerlEnv_getenv> or related function WILL overwrite
+the memory that your first call points to.  This has led to some
+hard-to-debug problems.  Do a L<perlapi/savepv> to make a copy, thus
+avoiding these problems.  You will have to free the copy when you're
+done to avoid memory leaks.  If you don't have control over when it gets
+freed, you'll need to make the copy in a mortal scalar, like so:
+
+ if ((s = PerlEnv_getenv("foo") == NULL) {
+    ... /* handle NULL case */
+ }
+ else {
+     s = SvPVX(sv_2mortal(newSVpv(s, 0)));
+ }
+
+The above example works only if C<"s"> is C<NUL>-terminated; otherwise
+you have to pass its length to C<newSVpv>.
+
 =back
 
 =head2 Problematic System Interfaces
Index: gnu/usr.bin/perl/pod/perlhist.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pod/perlhist.pod,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 perlhist.pod
--- gnu/usr.bin/perl/pod/perlhist.pod 25 Apr 2015 19:14:48 -0000 1.17
+++ gnu/usr.bin/perl/pod/perlhist.pod 28 Jun 2016 18:04:57 -0000
@@ -32,8 +32,8 @@ Leon Brocard, Dave Mitchell, Jesse Vince
 Matt S Trout, David Golden, Florian Ragwitz, Tatsuhiko Miyagawa,
 Chris C<BinGOs> Williams, Zefram, Ævar Arnfjörð Bjarmason, Stevan
 Little, Dave Rolsky, Max Maischein, Abigail, Jesse Luehrs, Tony Cook,
-Dominic Hargreaves, Aaron Crane, Aristotle Pagaltzis, Matthew Horsfall
-and Peter Martini.
+Dominic Hargreaves, Aaron Crane, Aristotle Pagaltzis, Matthew Horsfall,
+Peter Martini, and Sawyer X.
 
 =head2 PUMPKIN?
 
@@ -540,6 +540,9 @@ the strings?).
  Steve     5.20.1       2014-Sep-14
  Steve     5.20.2-RC1   2015-Jan-31
  Steve     5.20.2       2015-Feb-14
+ Steve     5.20.3-RC1   2015-Aug-22
+ Steve     5.20.3-RC2   2015-Aug-29
+ Steve     5.20.3       2015-Sep-12
 
  Ricardo   5.21.0       2014-May-27     The 5.21 development track
  Matthew H 5.21.1       2014-Jun-20
@@ -550,6 +553,17 @@ the strings?).
  BinGOs    5.21.6       2014-Nov-20
  Max M     5.21.7       2014-Dec-20
  Matthew H 5.21.8       2015-Jan-20
+ Sawyer X  5.21.9       2015-Feb-20
+ Steve     5.21.10      2015-Mar-20
+ Steve     5.21.11      2015-Apr-20
+
+ Ricardo   5.22.0-RC1   2015-May-19     The 5.22 maintenance track
+ Ricardo   5.22.0-RC2   2015-May-21
+ Ricardo   5.22.0       2015-Jun-01
+
+ Ricardo   5.23.0       2015-Jun-20     The 5.23 development track
+ Matthew   5.23.1       2015-Jul-20
+ Matthew   5.23.2       2015-Aug-20
 
 =head2 SELECTED RELEASE SIZES
 
@@ -631,6 +645,7 @@ explained below.
  5.16.0         5562 109   1077  80  20504 2702   8750 2375   4815 152
  5.18.0         5892 113   1088  79  20077 2760   9365 2439   4943 154
  5.20.0         6243 115   1187  75  19499 2701   9620 2457   5145 159
+ 5.22.0         7819 115   1284  77  19121 2635   9772 2434   5615 176
 
 The "core"..."doc" mean the following files from the Perl source code
 distribution.  The glob notation ** means recursively, (.) means
@@ -935,25 +950,25 @@ the Perl source distribution for somewha
 
  ======================================================================
 
-                  5.20.0
+                  5.20.0           5.22.0
 
- Configure    552      1
- Cross        118     15
- NetWare      467     61
- Porting     1204     68
- djgpp         18      7
- h2pl          13     15
- hints        355     90
- mad          174      8
- os2          510     70
- plan9        316     17
- qnx            1      4
- symbian      290     54
- utils        241     27
- vms          538     12
- vos            8      7
- win32       1183     64
- x2p          341     19
+ Configure    552      1       570      1
+ Cross        118     15       118     15
+ djgpp         18      7        17      7
+ h2pl          13     15        13     15
+ hints        355     90       356     87
+ mad          174      8         -      -
+ NetWare      467     61       466     61
+ os2          510     70       510     70
+ plan9        316     17       317     17
+ Porting     1204     68      1393     71
+ qnx            1      4         1      4
+ symbian      290     54       291     54
+ utils        241     27       242     27
+ vms          538     12       532     12
+ vos            8      7         8      7
+ win32       1183     64      1201     64
+ x2p          341     19         -      -
 
 =head2 SELECTED PATCH SIZES
 
Index: gnu/usr.bin/perl/pod/perlpod.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pod/perlpod.pod,v
retrieving revision 1.14
diff -u -p -u -p -r1.14 perlpod.pod
--- gnu/usr.bin/perl/pod/perlpod.pod 17 Nov 2014 20:57:07 -0000 1.14
+++ gnu/usr.bin/perl/pod/perlpod.pod 28 Jun 2016 18:04:57 -0000
@@ -282,11 +282,15 @@ be for formatting as a footnote).
 X<=encoding> X<encoding>
 
 This command is used for declaring the encoding of a document.  Most
-users won't need this; but if your encoding isn't US-ASCII or Latin-1,
-then put a C<=encoding I<encodingname>> command early in the document so
+users won't need this; but if your encoding isn't US-ASCII,
+then put a C<=encoding I<encodingname>> command very early in the document so
 that pod formatters will know how to decode the document.  For
 I<encodingname>, use a name recognized by the L<Encode::Supported>
-module.  Examples:
+module.  Some pod formatters may try to guess between a Latin-1 versus
+UTF-8 encoding, but they may guess wrong.  It's best to be explicit if
+you use anything besides strict ASCII.  Examples:
+
+  =encoding latin1
 
   =encoding utf8
 
Index: gnu/usr.bin/perl/pod/perlpodspec.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pod/perlpodspec.pod,v
retrieving revision 1.1.1.9
diff -u -p -u -p -r1.1.1.9 perlpodspec.pod
--- gnu/usr.bin/perl/pod/perlpodspec.pod 17 Nov 2014 20:53:15 -0000 1.1.1.9
+++ gnu/usr.bin/perl/pod/perlpodspec.pod 28 Jun 2016 18:04:57 -0000
@@ -633,15 +633,21 @@ UTF-16.  If the file begins with the thr
 
 =item *
 
-A naive but sufficient heuristic for testing the first highbit
+A naive but often sufficient heuristic for testing the first highbit
 byte-sequence in a BOM-less file (whether in code or in Pod!), to see
 whether that sequence is valid as UTF-8 (RFC 2279) is to check whether
-that the first byte in the sequence is in the range 0xC0 - 0xFD
+that the first byte in the sequence is in the range 0xC2 - 0xFD
 I<and> whether the next byte is in the range
 0x80 - 0xBF.  If so, the parser may conclude that this file is in
 UTF-8, and all highbit sequences in the file should be assumed to
 be UTF-8.  Otherwise the parser should treat the file as being
-in Latin-1.  In the unlikely circumstance that the first highbit
+in Latin-1.  (A better check is to pass a copy of the sequence to
+L<utf8::decode()|utf8> which performs a full validity check on the
+sequence and returns TRUE if it is valid UTF-8, FALSE otherwise.  This
+function is always pre-loaded, is fast because it is written in C, and
+will only get called at most once, so you don't need to avoid it out of
+performance concerns.)
+In the unlikely circumstance that the first highbit
 sequence in a truly non-UTF-8 file happens to appear to be UTF-8, one
 can cater to our heuristic (as well as any more intelligent heuristic)
 by prefacing that line with a comment line containing a highbit
Index: gnu/usr.bin/perl/pod/perlpolicy.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pod/perlpolicy.pod,v
retrieving revision 1.1.1.5
diff -u -p -u -p -r1.1.1.5 perlpolicy.pod
--- gnu/usr.bin/perl/pod/perlpolicy.pod 25 Apr 2015 19:10:44 -0000 1.1.1.5
+++ gnu/usr.bin/perl/pod/perlpolicy.pod 28 Jun 2016 18:04:57 -0000
@@ -84,9 +84,9 @@ the Perl community should expect from Pe
 
 =item *
 
-We "officially" support the two most recent stable release series.  5.14.x
-and earlier are now out of support.  As of the release of 5.20.0, we will
-"officially" end support for Perl 5.16.x, other than providing security
+We "officially" support the two most recent stable release series.  5.16.x
+and earlier are now out of support.  As of the release of 5.22.0, we will
+"officially" end support for Perl 5.18.x, other than providing security
 updates as described below.
 
 =item *
@@ -515,10 +515,14 @@ Civility is simple:  stick to the facts
 sarcasm.  It is not enough to be factual.  You must also be civil.  Responding
 in kind to incivility is not acceptable.
 
+While civility is required, kindness is encouraged; if you have any doubt about
+whether you are being civil, simply ask yourself, "Am I being kind?" and aspire
+to that.
+
 If the list moderators tell you that you are not being civil, carefully
-consider how your words have appeared before responding in any way.  You may
-protest, but repeated protest in the face of a repeatedly reaffirmed decision
-is not acceptable.
+consider how your words have appeared before responding in any way.  Were they
+kind?  You may protest, but repeated protest in the face of a repeatedly
+reaffirmed decision is not acceptable.
 
 Unacceptable behavior will result in a public and clearly identified warning.
 Repeated unacceptable behavior will result in removal from the mailing list and
Index: gnu/usr.bin/perl/pod/perlunicook.pod
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/pod/perlunicook.pod,v
retrieving revision 1.1.1.1
diff -u -p -u -p -r1.1.1.1 perlunicook.pod
--- gnu/usr.bin/perl/pod/perlunicook.pod 25 Apr 2015 19:10:45 -0000 1.1.1.1
+++ gnu/usr.bin/perl/pod/perlunicook.pod 28 Jun 2016 18:04:57 -0000
@@ -33,7 +33,8 @@ This I<does> make even Unix programmers
 or open them with C<:raw>, but that's the only way to get at them
 portably anyway.
 
-B<WARNING>: C<use autoload> and C<use open> do not get along with each other.
+B<WARNING>: C<use autodie> (pre 2.26) and C<use open> do not get along with each
+other.
 
 =head2 ℞ 1: Generic Unicode-savvy filter
 
@@ -439,7 +440,7 @@ convert such strings manually.
  use Unicode::UCD qw(num);
  my $str = "got Ⅻ and ४५६७ and ⅞ and here";
  my @nums = ();
- while (/$str =~ (\d+|\N)/g) {  # not just ASCII!
+ while ($str =~ /(\d+|\N)/g) {  # not just ASCII!
     push @nums, num($1);
  }
  say "@nums";   #     12      4567      0.875
@@ -637,7 +638,7 @@ won’t fit into a byte.  Here’s how t
     # assume $uni_key holds a normal Perl string (abstract Unicode)
     my $enc_key   = encode("UTF-8", $uni_key, 1);
     my $enc_value = $dbhash{$enc_key};
-    my $uni_value = decode("UTF-8", $enc_key, 1);
+    my $uni_value = decode("UTF-8", $enc_value, 1);
 
 =head2 ℞ 43: Unicode text in DBM hashes, the easy way
 
Index: gnu/usr.bin/perl/regen/lib_cleanup.pl
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/regen/lib_cleanup.pl,v
retrieving revision 1.1.1.1
diff -u -p -u -p -r1.1.1.1 lib_cleanup.pl
--- gnu/usr.bin/perl/regen/lib_cleanup.pl 17 Nov 2014 20:53:19 -0000 1.1.1.1
+++ gnu/usr.bin/perl/regen/lib_cleanup.pl 28 Jun 2016 18:04:57 -0000
@@ -74,6 +74,12 @@ foreach my $file (@ext) {
                 $package = $1;
                 last;
             }
+            elsif (/^\s*package\s*$/) {
+                # If they're hiding their package name, we ignore them
+                ++$ignore{"/$path"};
+                $package='';
+                last;
+            }
         }
         close $fh
             or die "Can't close $file: $!";
Index: gnu/usr.bin/perl/t/base/lex.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/base/lex.t,v
retrieving revision 1.13
diff -u -p -u -p -r1.13 lex.t
--- gnu/usr.bin/perl/t/base/lex.t 17 Nov 2014 20:57:07 -0000 1.13
+++ gnu/usr.bin/perl/t/base/lex.t 28 Jun 2016 18:04:57 -0000
@@ -434,3 +434,6 @@ print "ok $test - y <comment> <newline>
 print "not " unless (time
                      =>) eq time=>;
 print "ok $test - => quotes keywords across lines\n"; $test++;
+
+# Used to crash [perl #123711]
+0-5x-l{0};
Index: gnu/usr.bin/perl/t/base/rs.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/base/rs.t,v
retrieving revision 1.1.1.8
diff -u -p -u -p -r1.1.1.8 rs.t
--- gnu/usr.bin/perl/t/base/rs.t 17 Nov 2014 20:53:16 -0000 1.1.1.8
+++ gnu/usr.bin/perl/t/base/rs.t 28 Jun 2016 18:04:57 -0000
@@ -1,7 +1,7 @@
 #!./perl
-# Test $!
+# Test $/
 
-print "1..48\n";
+print "1..39\n";
 
 $test_count = 1;
 $teststring = "1\n12\n123\n1234\n1234\n12345\n\n123456\n1234567\n";
@@ -32,9 +32,15 @@ open TESTFILE, "<./foo";
 binmode TESTFILE;
 test_record(*TESTFILE);
 close TESTFILE;
-test_bad_setting();
 $test_count_end = $test_count;  # Needed to know how many tests to skip
 
+$/ = "\n";
+my $note = "\$/ preserved when set to bad value";
+# none of the setting of $/ to bad values should modify its value
+test_bad_setting();
+print +($/ ne "\n" ? "not " : "") .
+  "ok $test_count # \$/ preserved when set to bad value\n";
+++$test_count;
 
 # Now for the tricky bit--full record reading
 if ($^O eq 'VMS') {
Index: gnu/usr.bin/perl/t/comp/parser.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/comp/parser.t,v
retrieving revision 1.1.1.10
diff -u -p -u -p -r1.1.1.10 parser.t
--- gnu/usr.bin/perl/t/comp/parser.t 25 Apr 2015 19:10:46 -0000 1.1.1.10
+++ gnu/usr.bin/perl/t/comp/parser.t 28 Jun 2016 18:04:57 -0000
@@ -502,6 +502,9 @@ like $@, "^No such class a1b at ", 'TYPE
 # Used to crash [perl #123542]
 eval 's /${<>{}) //';
 
+# Also used to crash [perl #123652]
+eval{$1=eval{a:}};
+
 # Add new tests HERE (above this line)
 
 # bug #74022: Loop on characters in \p{OtherIDContinue}
Index: gnu/usr.bin/perl/t/lib/feature/bundle
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/lib/feature/bundle,v
retrieving revision 1.1.1.3
diff -u -p -u -p -r1.1.1.3 bundle
--- gnu/usr.bin/perl/t/lib/feature/bundle 25 Mar 2013 20:09:34 -0000 1.1.1.3
+++ gnu/usr.bin/perl/t/lib/feature/bundle 28 Jun 2016 18:04:57 -0000
@@ -117,3 +117,11 @@ EXPECT
 Use of assignment to $[ is deprecated at - line 2.
 Assigning non-zero to $[ is no longer possible at - line 5.
 b
+########
+# NAME $^H accidentally enabling all features
+eval 'BEGIN { $^H |= 0x1c020000 } $_ = evalbytes 12345';
+print $_||$@;
+EXPECT
+Number found where operator expected at (eval 1) line 1, near "evalbytes 12345"
+ (Do you need to predeclare evalbytes?)
+syntax error at (eval 1) line 1, near "evalbytes 12345"
Index: gnu/usr.bin/perl/t/lib/warnings/toke
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/lib/warnings/toke,v
retrieving revision 1.1.1.8
diff -u -p -u -p -r1.1.1.8 toke
--- gnu/usr.bin/perl/t/lib/warnings/toke 17 Nov 2014 20:53:17 -0000 1.1.1.8
+++ gnu/usr.bin/perl/t/lib/warnings/toke 28 Jun 2016 18:04:57 -0000
@@ -1510,3 +1510,34 @@ Use of literal control characters in var
 -a;
 ;-a;
 EXPECT
+########
+# toke.c
+# [perl #124113] Compile-time warning with UTF8 variable in array index
+use warnings;
+use utf8;
+my $𝛃 = 0;
+my @array = (0);
+my $v = $array[ 0 + $𝛃 ];
+   $v = $array[ $𝛃 + 0 ];
+EXPECT
+########
+# toke.c
+# Allow Unicode here doc boundaries
+use warnings;
+use utf8;
+my $v = <<EnFraçais;
+Comme ca!
+EnFraçais
+print $v;
+EXPECT
+Comme ca!
+########
+# toke.c
+# Fix 'Use of "..." without parentheses is ambiguous' warning for
+# Unicode function names
+use utf8;
+use warnings;
+sub 𝛃(;$) { return 0; }
+my $v = 𝛃 - 5;
+EXPECT
+Warning: Use of "𝛃" without parentheses is ambiguous at - line 7.
Index: gnu/usr.bin/perl/t/op/crypt.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/op/crypt.t,v
retrieving revision 1.1.1.1
diff -u -p -u -p -r1.1.1.1 crypt.t
--- gnu/usr.bin/perl/t/op/crypt.t 27 Oct 2002 22:15:10 -0000 1.1.1.1
+++ gnu/usr.bin/perl/t/op/crypt.t 28 Jun 2016 18:04:57 -0000
@@ -28,19 +28,20 @@ BEGIN {
 # bets, given alternative encryption/hashing schemes like MD5,
 # C2 (or higher) security schemes, and non-UNIX platforms.
 
+my $alg = '$2b$12$12345678901234567890';   # Use Blowfish
 SKIP: {
  skip ("VOS crypt ignores salt.", 1) if ($^O eq 'vos');
- ok(substr(crypt("ab", "cd"), 2) ne substr(crypt("ab", "ce"), 2), "salt makes a difference");
+ ok(substr(crypt("ab", $alg . "cd"), 2) ne substr(crypt("ab", $alg . "ce"), 2), "salt makes a difference");
 }
 
 $a = "a\xFF\x{100}";
 
-eval {$b = crypt($a, "cd")};
+eval {$b = crypt($a, $alg . "cd")};
 like($@, qr/Wide character in crypt/, "wide characters ungood");
 
 chop $a; # throw away the wide character
 
-eval {$b = crypt($a, "cd")};
+eval {$b = crypt($a, $alg . "cd")};
 is($@, '',                   "downgrade to eight bit characters");
-is($b, crypt("a\xFF", "cd"), "downgrade results agree");
+is($b, crypt("a\xFF", $alg . "cd"), "downgrade results agree");
 
Index: gnu/usr.bin/perl/t/op/lex.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/op/lex.t,v
retrieving revision 1.1.1.3
diff -u -p -u -p -r1.1.1.3 lex.t
--- gnu/usr.bin/perl/t/op/lex.t 17 Nov 2014 20:53:18 -0000 1.1.1.3
+++ gnu/usr.bin/perl/t/op/lex.t 28 Jun 2016 18:04:57 -0000
@@ -4,7 +4,7 @@ use warnings;
 
 BEGIN { chdir 't'; require './test.pl'; }
 
-plan(tests => 8);
+plan(tests => 11);
 
 {
     no warnings 'deprecated';
@@ -88,3 +88,29 @@ is runperl(
  ."2.\n",
   'no buffer corruption with multiline *{...expr...}'
 ;
+
+fresh_perl_is(
+  '/$a[/<<a',
+  "Missing right curly or square bracket at - line 1, within pattern\n" .
+  "syntax error at - line 1, at EOF\n" .
+  "Execution of - aborted due to compilation errors.\n",
+   { stderr => 1 },
+  '/$a[/<<a with no newline [perl #123712]'
+);
+fresh_perl_is(
+  '/$a[m||/<<a',
+  "Missing right curly or square bracket at - line 1, within pattern\n" .
+  "syntax error at - line 1, at EOF\n" .
+  "Execution of - aborted due to compilation errors.\n",
+   { stderr => 1 },
+  '/$a[m||/<<a with no newline [perl #123712]'
+);
+
+fresh_perl_is(
+  '"@{"',
+  "Missing right curly or square bracket at - line 1, within string\n" .
+  "syntax error at - line 1, at EOF\n" .
+  "Execution of - aborted due to compilation errors.\n",
+   { stderr => 1 },
+  '"@{" [perl #123712]'
+);
Index: gnu/usr.bin/perl/t/op/sub.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/op/sub.t,v
retrieving revision 1.1.1.4
diff -u -p -u -p -r1.1.1.4 sub.t
--- gnu/usr.bin/perl/t/op/sub.t 17 Nov 2014 20:53:18 -0000 1.1.1.4
+++ gnu/usr.bin/perl/t/op/sub.t 28 Jun 2016 18:04:57 -0000
@@ -6,7 +6,7 @@ BEGIN {
     require './test.pl';
 }
 
-plan( tests => 33 );
+plan( tests => 36 );
 
 sub empty_sub {}
 
@@ -221,4 +221,54 @@ ok !exists $INC{"re.pm"}, 're.pm not loa
     eval "sub foo{}";
     is $str[1], $str[0],
       'Pure-Perl sub clobbering sub whose DESTROY assigns to the glob';
+}
+
+# RT #124156 death during unwinding causes crash
+# the tie allows us to trigger another die while cleaning up the stack
+# from an earlier die.
+
+{
+    package RT124156;
+
+    sub TIEHASH { bless({}, $_[0]) }
+    sub EXISTS { 0 }
+    sub FETCH { undef }
+    sub STORE { }
+    sub DELETE { die "outer\n" }
+
+    my @value;
+    eval {
+        @value = sub {
+            @value = sub {
+                my %a;
+                tie %a, "RT124156";
+                local $a{foo} = "bar";
+                die "inner";
+                ("dd2a", "dd2b");
+            }->();
+            ("cc3a", "cc3b");
+        }->();
+    };
+    ::is($@, "outer\n", "RT124156 plain");
+
+    my $destroyed = 0;
+    sub DESTROY { $destroyed = 1 }
+
+    sub f {
+        my $x;
+        my $f = sub {
+            $x = 1; # force closure
+            my %a;
+            tie %a, "RT124156";
+            local $a{foo} = "bar";
+            die "inner";
+        };
+        bless $f, 'RT124156';
+        $f->();
+    }
+
+    eval { f(); };
+    # as opposed to $@ eq "Can't undef active subroutine"
+    ::is($@, "outer\n", "RT124156 depth");
+    ::is($destroyed, 1, "RT124156 freed cv");
 }
Index: gnu/usr.bin/perl/t/op/taint.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/op/taint.t,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 taint.t
--- gnu/usr.bin/perl/t/op/taint.t 25 Apr 2015 19:26:22 -0000 1.20
+++ gnu/usr.bin/perl/t/op/taint.t 28 Jun 2016 18:04:57 -0000
@@ -2070,7 +2070,8 @@ foreach my $ord (78, 163, 256) {
   SKIP: {
       skip 'No crypt function, skipping crypt tests', 4 if(!$Config{d_crypt});
       # 59998
-      sub cr { my $x = crypt($_[0], $_[1]); $x }
+      my $alg = '$2b$12$12345678901234567890';   # Use Blowfish
+      sub cr { my $x = crypt($_[0], $alg . $_[1]); $x }
       sub co { my $x = ~$_[0]; $x }
       my ($a, $b);
       $a = cr('hello', 'foo' . $TAINT);
Index: gnu/usr.bin/perl/t/op/threads.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/op/threads.t,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 threads.t
--- gnu/usr.bin/perl/t/op/threads.t 17 Nov 2014 20:57:07 -0000 1.4
+++ gnu/usr.bin/perl/t/op/threads.t 28 Jun 2016 18:04:57 -0000
@@ -9,7 +9,7 @@ BEGIN {
      skip_all_without_config('useithreads');
      skip_all_if_miniperl("no dynamic loading on miniperl, no threads");
 
-     plan(27);
+     plan(28);
 }
 
 use strict;
@@ -398,5 +398,11 @@ fresh_perl_is(
    {},
   'no crash when deleting $::{INC} in thread'
 );
+
+fresh_perl_is(<<'CODE', 'ok', 'no crash modifying extended array element');
+use threads;
+my @a = 1;
+threads->create(sub { $#a = 1; $a[1] = 2; print qq/ok\n/ })->join;
+CODE
 
 # EOF
Index: gnu/usr.bin/perl/t/perf/taint.t
===================================================================
RCS file: gnu/usr.bin/perl/t/perf/taint.t
diff -N gnu/usr.bin/perl/t/perf/taint.t
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/usr.bin/perl/t/perf/taint.t 28 Jun 2016 18:04:57 -0000
@@ -0,0 +1,42 @@
+#!./perl -T
+#
+# All the tests in this file are ones that run exceptionally slowly
+# (each test taking seconds or even minutes) in the absence of particular
+# optimisations. Thus it is a sort of canary for optimisations being
+# broken.
+#
+# Although it includes a watchdog timeout, this is set to a generous limit
+# to allow for running on slow systems; therefore a broken optimisation
+# might be indicated merely by this test file taking unusually long to
+# run, rather than actually timing out.
+#
+# This is similar to t/perf/speed.t but tests performance regressions specific
+# to taint.
+#
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = ('../lib');
+    require Config; import Config;
+    require './test.pl';
+}
+
+use strict;
+use warnings;
+use Scalar::Util qw(tainted);
+
+$| = 1;
+
+plan tests => 2;
+
+watchdog(60);
+
+{
+    my $in = substr($ENV{PATH}, 0, 0) . ( "ab" x 200_000 );
+    utf8::upgrade($in);
+    ok(tainted($in), "performance issue only when tainted");
+    while ($in =~ /\Ga+b/g) { }
+    pass("\\G on tainted string");
+}
+
+1;
Index: gnu/usr.bin/perl/t/porting/customized.dat
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/porting/customized.dat,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 customized.dat
--- gnu/usr.bin/perl/t/porting/customized.dat 25 Apr 2015 19:26:22 -0000 1.4
+++ gnu/usr.bin/perl/t/porting/customized.dat 28 Jun 2016 18:04:57 -0000
@@ -34,6 +34,6 @@ Text::ParseWords cpan/Text-ParseWords/t/
 Text::ParseWords cpan/Text-ParseWords/t/taint.t 3cff0dae812801f7aa1738d6070508f2c5bcc2e5
 autodie cpan/autodie/t/utf8_open.t 5295851351c49f939008c5aca6a798742b1e503d
 libnet cpan/libnet/Makefile.PL 13a8e4a8c7fb2607219c3106cad6c3d7173f7221
-podlators cpan/podlators/scripts/pod2man.PL f81acf53f3ff46cdcc5ebdd661c5d13eb35d20d6
+podlators cpan/podlators/scripts/pod2man.PL 425720066bd91642d47646ae670c5d7ddb079a35
 podlators cpan/podlators/scripts/pod2text.PL b4693fcfe4a0a1b38a215cfb8985a65d5d025d69
 version cpan/version/lib/version.pm d0923b895d57f1d669ae36fcf85c87b16db341d1
Index: gnu/usr.bin/perl/t/porting/re_context.t
===================================================================
RCS file: gnu/usr.bin/perl/t/porting/re_context.t
diff -N gnu/usr.bin/perl/t/porting/re_context.t
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/usr.bin/perl/t/porting/re_context.t 28 Jun 2016 18:04:57 -0000
@@ -0,0 +1,43 @@
+#!./perl -w
+#
+# Check that utf8.pm and its dependencies only use the subset of the
+# $1..$n capture vars that Perl_save_re_context() is hard-coded to
+# localise, because that function has no efficient way of determining at
+# runtime what vars to localise.
+#
+# Note that this script tests for the existence of symbol table entries in
+# %::, so @4 etc would trigger a failure as well as $4.
+#
+# If tests start to fail, either (in order of descending preference):
+#
+# * fix utf8.pm or its dependencies so that any recent change no longer
+#   uses more special vars (ideally it would use no vars);
+#
+# * fix Perl_save_re_context() so that it localises more vars, then
+#   update this test script with the new relaxed var list.
+
+
+use warnings;
+use strict;
+
+# trigger the dependency loading
+
+my $x = lc "\x{411}";
+
+# determine which relevant vars those dependencies accessed
+
+my @vars =
+        grep !/^[0123]$/, # $0, and $1, ..$3 allowed
+        grep /^(?:\d+|[`'&])$/,  # numeric and $`, $&, $' vars
+        sort keys %::;
+
+# load any other modules *after* calculating @vars
+
+require './test.pl';
+
+plan(1);
+
+is(scalar @vars, 0, "extraneous vars")
+    or diag("extra vars seen: " . join(", ", map "*$_", @vars));
+
+exit 0;
Index: gnu/usr.bin/perl/t/re/pat_advanced.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/re/pat_advanced.t,v
retrieving revision 1.1.1.4
diff -u -p -u -p -r1.1.1.4 pat_advanced.t
--- gnu/usr.bin/perl/t/re/pat_advanced.t 17 Nov 2014 20:53:18 -0000 1.1.1.4
+++ gnu/usr.bin/perl/t/re/pat_advanced.t 28 Jun 2016 18:04:57 -0000
@@ -2255,6 +2255,19 @@ EOP
     }
 
     {
+        fresh_perl_is(<<'EOF',
+                my $s = "\x{41c}";
+                $s =~ /(.*)/ or die;
+                $ls = lc $1;
+                print $ls eq lc $s ? "good\n" : "bad: [$ls]\n";
+EOF
+            "good\n",
+            {},
+            "swash triggered by lc() doesn't corrupt \$1"
+        );
+    }
+
+    {
         #' RT #119075
         no warnings 'regexp';   # Silence "has useless greediness modifier"
         local $@;
Index: gnu/usr.bin/perl/t/re/re_tests
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/re/re_tests,v
retrieving revision 1.1.1.5
diff -u -p -u -p -r1.1.1.5 re_tests
--- gnu/usr.bin/perl/t/re/re_tests 25 Apr 2015 19:10:48 -0000 1.1.1.5
+++ gnu/usr.bin/perl/t/re/re_tests 28 Jun 2016 18:04:57 -0000
@@ -1887,5 +1887,7 @@ A+(*PRUNE)BC(?{}) AAABC y $& AAABC
 /(alias|status)es$/i Statuses y $1 Status # [perl #121778]
 (.)(?{$~=$^N}) \x{100} y $~ \x{100} # [perl #123135]
 
+/(a+){1}+a/ aaa n - - # [perl #125825]
+
 # Keep these lines at the end of the file
 # vim: softtabstop=0 noexpandtab
Index: gnu/usr.bin/perl/t/re/reg_mesg.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/re/reg_mesg.t,v
retrieving revision 1.1.1.4
diff -u -p -u -p -r1.1.1.4 reg_mesg.t
--- gnu/usr.bin/perl/t/re/reg_mesg.t 17 Nov 2014 20:53:18 -0000 1.1.1.4
+++ gnu/usr.bin/perl/t/re/reg_mesg.t 28 Jun 2016 18:04:57 -0000
@@ -382,7 +382,6 @@ my @warning = (
                     'Useless (?c) - use /gc modifier {#} m/(?ogc{#})/',
                   ],
     '/a{1,1}?/' => 'Useless use of greediness modifier \'?\' {#} m/a{1,1}?{#}/',
-    '/b{3}  +/x' => 'Useless use of greediness modifier \'+\' {#} m/b{3}  +{#}/',
 );
 
 my @warnings_utf8 = mark_as_utf8(
Index: gnu/usr.bin/perl/t/run/switchd.t
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/t/run/switchd.t,v
retrieving revision 1.1.1.7
diff -u -p -u -p -r1.1.1.7 switchd.t
--- gnu/usr.bin/perl/t/run/switchd.t 25 Apr 2015 19:10:49 -0000 1.1.1.7
+++ gnu/usr.bin/perl/t/run/switchd.t 28 Jun 2016 18:04:57 -0000
@@ -9,7 +9,7 @@ BEGIN { require "./test.pl"; }
 
 # This test depends on t/lib/Devel/switchd*.pm.
 
-plan(tests => 19);
+plan(tests => 20);
 
 my $r;
 
@@ -285,3 +285,25 @@ is(
   "42\n",
   '-d does not conflict with sort optimisations'
 );
+
+# [perl #123748]
+#
+# On some platforms, it's possible that calls to getenv() will
+# return a pointer to statically allocated data that may be
+# overwritten by subsequent calls to getenv/putenv/setenv/unsetenv.
+#
+# In perl.c, s = PerlEnv_GetEnv("PERL5OPT") is called, and
+# then moreswitches(s), which, if -d:switchd_empty is given,
+# will call my_setenv("PERL5DB", "use Devel::switchd_empty"),
+# and then return to continue parsing s.
+{
+local $ENV{PERL5OPT} = '-d:switchd_empty';
+
+like(
+  runperl(
+   switches => [ '-Ilib' ], prog => 'print q(hi)',
+  ),
+  qr/hi/,
+ 'putenv does not interfere with PERL5OPT parsing',
+);
+}
Index: gnu/usr.bin/perl/utils/h2ph.PL
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/utils/h2ph.PL,v
retrieving revision 1.25
diff -u -p -u -p -r1.25 h2ph.PL
--- gnu/usr.bin/perl/utils/h2ph.PL 25 Apr 2015 19:26:23 -0000 1.25
+++ gnu/usr.bin/perl/utils/h2ph.PL 28 Jun 2016 18:04:57 -0000
@@ -769,7 +769,7 @@ sub inc_dirs
 sub build_preamble_if_necessary
 {
     # Increment $VERSION every time this function is modified:
-    my $VERSION     = 3;
+    my $VERSION     = 4;
     my $preamble    = "$Dest_dir/_h2ph_pre.ph";
 
     # Can we skip building the preamble file?
@@ -788,6 +788,11 @@ sub build_preamble_if_necessary
 
     open  PREAMBLE, ">$preamble" or die "Cannot open $preamble:  $!";
  print PREAMBLE "# This file was created by h2ph version $VERSION\n";
+        # Prevent non-portable hex constants from warning.
+        #
+        # We still produce an overflow warning if we can't represent
+        # a hex constant as an integer.
+        print PREAMBLE "no warnings qw(portable);\n";
 
  foreach (sort keys %define) {
     if ($opt_D) {
@@ -814,6 +819,18 @@ DEFINE
  # integer:
  print PREAMBLE
     "unless (defined &$_) { sub $_() { $1 } }\n\n";
+            } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) {
+                # hex integer
+                # Special cased, since perl warns on hex integers
+                # that can't be represented in a UV.
+                #
+                # This way we get the warning at time of use, so the user
+                # only gets the warning if they happen to use this
+                # platform-specific definition.
+                my $code = $1;
+                $code = "hex('$code')" if length $code > 10;
+                print PREAMBLE
+                    "unless (defined &$_) { sub $_() { $code } }\n\n";
     } elsif ($define{$_} =~ /^\w+$/) {
  my $def = $define{$_};
  if ($isatype{$def}) {
Index: gnu/usr.bin/perl/vms/descrip_mms.template
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/vms/descrip_mms.template,v
retrieving revision 1.1.1.16
diff -u -p -u -p -r1.1.1.16 descrip_mms.template
--- gnu/usr.bin/perl/vms/descrip_mms.template 25 Apr 2015 19:10:50 -0000 1.1.1.16
+++ gnu/usr.bin/perl/vms/descrip_mms.template 28 Jun 2016 18:04:57 -0000
@@ -319,7 +319,7 @@ x2p : [.x2p]$(DBG)a2p$(E) [.x2p]s2p.com
 extra.pods : miniperl
  @ @extra_pods.com
 
-PERLDELTA_CURRENT = [.pod]perl5202delta.pod
+PERLDELTA_CURRENT = [.pod]perl5203delta.pod
 
 $(PERLDELTA_CURRENT) : [.pod]perldelta.pod
  Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
Index: gnu/usr.bin/perl/win32/Makefile
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/win32/Makefile,v
retrieving revision 1.21
diff -u -p -u -p -r1.21 Makefile
--- gnu/usr.bin/perl/win32/Makefile 25 Apr 2015 19:30:23 -0000 1.21
+++ gnu/usr.bin/perl/win32/Makefile 28 Jun 2016 18:04:57 -0000
@@ -37,7 +37,7 @@ INST_TOP = $(INST_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-#INST_VER = \5.20.2
+#INST_VER = \5.20.3
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -1192,7 +1192,7 @@ utils: $(PERLEXE) $(X2P) ..\utils\Makefi
  copy ..\README.tw       ..\pod\perltw.pod
  copy ..\README.vos      ..\pod\perlvos.pod
  copy ..\README.win32    ..\pod\perlwin32.pod
- copy ..\pod\perldelta.pod ..\pod\perl5202delta.pod
+ copy ..\pod\perldelta.pod ..\pod\perl5203delta.pod
  cd ..\win32
  $(PERLEXE) $(PL2BAT) $(UTILS)
  $(MINIPERL) -I..\lib ..\autodoc.pl ..
@@ -1291,7 +1291,7 @@ distclean: realclean
  -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
  -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
  -cd $(PODDIR) && del /f *.html *.bat roffitall \
-    perl5202delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+    perl5203delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
     perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
     perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
     perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
Index: gnu/usr.bin/perl/win32/config_H.gc
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/win32/config_H.gc,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 config_H.gc
--- gnu/usr.bin/perl/win32/config_H.gc 17 Nov 2014 20:57:08 -0000 1.16
+++ gnu/usr.bin/perl/win32/config_H.gc 28 Jun 2016 18:04:57 -0000
@@ -1973,7 +1973,9 @@
  * available to exclusively create and open a uniquely named
  * temporary file.
  */
-/*#define HAS_MKSTEMP / **/
+#if __MINGW64_VERSION_MAJOR >= 4
+#define HAS_MKSTEMP
+#endif
 
 /* HAS_MMAP:
  * This symbol, if defined, indicates that the mmap system call is
Index: gnu/usr.bin/perl/win32/makefile.mk
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/win32/makefile.mk,v
retrieving revision 1.21
diff -u -p -u -p -r1.21 makefile.mk
--- gnu/usr.bin/perl/win32/makefile.mk 25 Apr 2015 19:30:23 -0000 1.21
+++ gnu/usr.bin/perl/win32/makefile.mk 28 Jun 2016 18:04:57 -0000
@@ -43,7 +43,7 @@ INST_TOP *= $(INST_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-#INST_VER *= \5.20.2
+#INST_VER *= \5.20.3
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -480,6 +480,7 @@ EXEOUT_FLAG = -o
 LIBOUT_FLAG =
 
 BUILDOPT += -fno-strict-aliasing -mms-bitfields
+MINIBUILDOPT += -fno-strict-aliasing
 
 .ELSE
 
@@ -1391,7 +1392,7 @@ utils: $(PERLEXE) $(X2P) ..\utils\Makefi
  copy ..\README.tw       ..\pod\perltw.pod
  copy ..\README.vos      ..\pod\perlvos.pod
  copy ..\README.win32    ..\pod\perlwin32.pod
- copy ..\pod\perldelta.pod ..\pod\perl5202delta.pod
+ copy ..\pod\perldelta.pod ..\pod\perl5203delta.pod
  $(PERLEXE) $(PL2BAT) $(UTILS)
  $(MINIPERL) -I..\lib ..\autodoc.pl ..
  $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1489,7 +1490,7 @@ distclean: realclean
  -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
  -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
  -cd $(PODDIR) && del /f *.html *.bat roffitall \
-    perl5202delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+    perl5203delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
     perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
     perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
     perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
Index: gnu/usr.bin/perl/win32/pod.mak
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/win32/pod.mak,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 pod.mak
--- gnu/usr.bin/perl/win32/pod.mak 25 Apr 2015 19:14:49 -0000 1.16
+++ gnu/usr.bin/perl/win32/pod.mak 28 Jun 2016 18:04:57 -0000
@@ -39,6 +39,7 @@ POD = perl.pod \
  perl5200delta.pod \
  perl5201delta.pod \
  perl5202delta.pod \
+ perl5203delta.pod \
  perl561delta.pod \
  perl56delta.pod \
  perl581delta.pod \
@@ -172,6 +173,7 @@ MAN = perl.man \
  perl5200delta.man \
  perl5201delta.man \
  perl5202delta.man \
+ perl5203delta.man \
  perl561delta.man \
  perl56delta.man \
  perl581delta.man \
@@ -305,6 +307,7 @@ HTML = perl.html \
  perl5200delta.html \
  perl5201delta.html \
  perl5202delta.html \
+ perl5203delta.html \
  perl561delta.html \
  perl56delta.html \
  perl581delta.html \
@@ -438,6 +441,7 @@ TEX = perl.tex \
  perl5200delta.tex \
  perl5201delta.tex \
  perl5202delta.tex \
+ perl5203delta.tex \
  perl561delta.tex \
  perl56delta.tex \
  perl581delta.tex \
Index: gnu/usr.bin/perl/win32/win32.c
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/win32/win32.c,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 win32.c
--- gnu/usr.bin/perl/win32/win32.c 17 Nov 2014 20:57:08 -0000 1.16
+++ gnu/usr.bin/perl/win32/win32.c 28 Jun 2016 18:04:57 -0000
@@ -1122,6 +1122,7 @@ chown(const char *path, uid_t owner, gid
  * XXX this needs strengthening  (for PerlIO)
  *   -- BKS, 11-11-200
 */
+#if !defined(__MINGW64_VERSION_MAJOR) || __MINGW64_VERSION_MAJOR < 4
 int mkstemp(const char *path)
 {
     dTHX;
@@ -1142,6 +1143,7 @@ retry:
  goto retry;
     return fd;
 }
+#endif
 
 static long
 find_pid(pTHX_ int pid)
Index: gnu/usr.bin/perl/win32/win32.h
===================================================================
RCS file: /usr/obj/perl/cvs/src/gnu/usr.bin/perl/win32/win32.h,v
retrieving revision 1.13
diff -u -p -u -p -r1.13 win32.h
--- gnu/usr.bin/perl/win32/win32.h 25 Apr 2015 19:14:49 -0000 1.13
+++ gnu/usr.bin/perl/win32/win32.h 28 Jun 2016 18:04:57 -0000
@@ -326,7 +326,9 @@ extern  void *sbrk(ptrdiff_t need);
 #endif
 extern char * getlogin(void);
 extern int chown(const char *p, uid_t o, gid_t g);
+#if !defined(__MINGW64_VERSION_MAJOR) || __MINGW64_VERSION_MAJOR < 4
 extern  int mkstemp(const char *path);
+#endif
 #endif
 
 #undef Stat

Reply | Threaded
Open this post in threaded view
|

Re: Update perl to 5.20.3

Alexander Bluhm
On Wed, Jun 29, 2016 at 09:38:08AM -0700, Andrew Fresh wrote:
> Unfortunately due to reasons, I won't be getting perl 5.22 in before
> OpenBSD 6.0.  However, I'd like to see if it's possible to get updated
> to the latest in the 5.20 branch, 5.20.3.

I would like to see the latest Perl bugfix release 5.20.3 in OpenBSD
6.0.  This diff is running on my machine now, no problems so far.

OK bluhm@

Reply | Threaded
Open this post in threaded view
|

Update perl to 5.24.1

Andrew Fresh-4
In reply to this post by Andrew Fresh-4
It looks like I'm about ready to import perl 5.24.1 into base with
updated local patches.

The infrastructure to do that is still here on github:

https://github.com/afresh1/OpenBSD-perl/

You can download a pre-patched perl from here and use it to replace
src/gnu/usr.bin/perl and update your system.

http://cvs.afresh1.com/~andrew/OpenBSD-perl-5.24.1.tar.gz

Unfortunately picked up a cold or something this week, but expect to
feel well enough by this weekend to import it.  

Looking forward to any feedback.

l8rZ,
--
andrew - http://afresh1.com

Life's unfair - but root password helps!

Reply | Threaded
Open this post in threaded view
|

Update perl to 5.28.1

Andrew Fresh-4
I've finally gotten our local patches applied to perl 5.28.1 and it now
could use some testing.  I was trying to get a few more of my
architectures working, but I ran out of time and now I have to go visit
family for the holidays so it's up to y'all to do some testing for me.


The infrastructure to do that is still here on github, including
instructions on using it:

https://github.com/afresh1/OpenBSD-perl/



You can also download a pre-patched perl from here, use it to replace
src/gnu/usr.bin/perl and do a normal build to get it installed, do note
that any XS modules that were built with the old version of perl will no
longer work, so be careful.

http://cvs.afresh1.com/~andrew/OpenBSD-perl-5.28.1.tar.gz


You can read more on the new features and changes on the metacpan.

https://metacpan.org/release/SHAY/perl-5.28.1

You find them in the perldelta for the versions since 5.24.

https://metacpan.org/pod/release/SHAY/perl-5.28.1/pod/perl5260delta.pod
https://metacpan.org/pod/release/SHAY/perl-5.28.1/pod/perl5280delta.pod
https://metacpan.org/pod/release/SHAY/perl-5.28.1/pod/perldelta.pod


One of the important changes, and the one most likely to cause trouble
is the removal of "." from the @INC library search list.


This seems to work on most of the architectures I have available: arm64;
amd64; i386; and macppc.  However, my alpha and octeon are slow enough
that they needed to set the PERL_TEST_TIME_OUT_FACTOR as high as 20 to
pass all tests.

I have seen that sometimes there is a syslog test that fails unless you
restart syslogd just before starting the build, not yet sure why.


My octeon is an EdgeRouter Lite which has software floating point.  On
this machine perl gets the wrong answer when comparing some numbers to
"NaN".   I've emailed a test case to visa@ and there may be a patch to
fix something coming out before long.

I did run into some problems with my other test machines, but the
problem seems unrelated to perl.

My armv7 is apparently mad at me, it is a Beaglebone Black and doesn't
want to build some of the test programs in the Configure script so that
just failed.

bbb$ sysctl -n kern.version
OpenBSD 6.4-current (GENERIC) #105: Sun Dec 23 12:49:26 MST 2018
    [hidden email]:/usr/src/sys/arch/armv7/compile/GENERIC
bbb$ cat >try.c <<EOL
> #include <stdio.h>
> int main() { printf("Ok\n"); return(0); }
> EOL
bbb$ cc -o try try.c -lm
/usr/lib/libm.so.10.1: file not recognized: File format not recognized
cc: error: linker command failed with exit code 1 (use -v to see invocation)


My sparc64, a Sun Fire V100, first decided to have a bad hard disk and
two new disks later I think there must be something else wrong with the
machine as I am now getting bus errors and sent to DDB.  When I get back
home I'll try swapping the disk into a different V100 and see if I have
better luck.

Reply | Threaded
Open this post in threaded view
|

Re: Update perl to 5.28.1

Stuart Henderson
On 2018/12/24 19:05, Andrew Hewus Fresh wrote:

> I've finally gotten our local patches applied to perl 5.28.1 and it now
> could use some testing.  I was trying to get a few more of my
> architectures working, but I ran out of time and now I have to go visit
> family for the holidays so it's up to y'all to do some testing for me.
>
>
> The infrastructure to do that is still here on github, including
> instructions on using it:
>
> https://github.com/afresh1/OpenBSD-perl/
>
>
>
> You can also download a pre-patched perl from here, use it to replace
> src/gnu/usr.bin/perl and do a normal build to get it installed, do note
> that any XS modules that were built with the old version of perl will no
> longer work, so be careful.
>
> http://cvs.afresh1.com/~andrew/OpenBSD-perl-5.28.1.tar.gz
>
>
> You can read more on the new features and changes on the metacpan.
>
> https://metacpan.org/release/SHAY/perl-5.28.1
>
> You find them in the perldelta for the versions since 5.24.
>
> https://metacpan.org/pod/release/SHAY/perl-5.28.1/pod/perl5260delta.pod
> https://metacpan.org/pod/release/SHAY/perl-5.28.1/pod/perl5280delta.pod
> https://metacpan.org/pod/release/SHAY/perl-5.28.1/pod/perldelta.pod
>
>
> One of the important changes, and the one most likely to cause trouble
> is the removal of "." from the @INC library search list.

Having fixed a bunch of these, and cwen@ fixing a bunch more, and still
having 100-odd ports failing to build, I have come round to the idea of
setting PERL_USE_UNSAFE_INC instead. I wasn't super happy about this but
the upstream cpan tool seems resigned to doing this for now so we might
as well follow suit.

It seems sanest to set this in cpan.port.mk rather than individual Makefiles:

Index: cpan.port.mk
===================================================================
RCS file: /cvs/ports/infrastructure/mk/cpan.port.mk,v
retrieving revision 1.20
diff -u -p -r1.20 cpan.port.mk
--- cpan.port.mk 20 Mar 2016 19:56:44 -0000 1.20
+++ cpan.port.mk 3 Feb 2019 14:10:27 -0000
@@ -24,6 +24,11 @@ TEST_DEPENDS += devel/p5-Test-Pod \
  devel/p5-Test-Pod-Coverage
 .endif
 
+# perl 5.26+ no longer has "." in @INC by default, but it's widely required in
+# build/test systems. set it locally, as is also done in the upstream cpan tool.
+CONFIGURE_ENV += PERL_USE_UNSAFE_INC=1
+TEST_ENV += PERL_USE_UNSAFE_INC=1
+
 MODCPAN_POST_INSTALL = ${INSTALL_DATA_DIR} ${MODCPAN_EXAMPLES_DIR}; \
  cd ${WRKSRC}/${MODCPAN_EXAMPLES_DIST}/ && pax -rw . ${MODCPAN_EXAMPLES_DIR};\
  chown -R ${SHAREOWN}:${SHAREGRP} ${MODCPAN_EXAMPLES_DIR}


Applying that diff fixes 80+. Any major concerns about doing that
(especially espie@, afresh1@)? It hasn't been through a full build
(I added it after a run to mop up breakage) but I can do that.

The remaining broken ports after that are:

devel/p5-PerlIO-via-Timeout
games/zangband, security/steghide, x11/xtraceroute (via autoconf autom4te)
misc/cbb
net/p5-Net-FTPServer
security/p5-Crypt-Twofish
sysutils/p5-Sys-Virt
www/ap2-mod_perl
www/p5-HTML-FormatText-WithLinks-AndTables

Reply | Threaded
Open this post in threaded view
|

Re: Update perl to 5.28.1

Marc Espie-2
On Sun, Feb 03, 2019 at 02:23:16PM +0000, Stuart Henderson wrote:

> On 2018/12/24 19:05, Andrew Hewus Fresh wrote:
> > I've finally gotten our local patches applied to perl 5.28.1 and it now
> > could use some testing.  I was trying to get a few more of my
> > architectures working, but I ran out of time and now I have to go visit
> > family for the holidays so it's up to y'all to do some testing for me.
> >
> >
> > The infrastructure to do that is still here on github, including
> > instructions on using it:
> >
> > https://github.com/afresh1/OpenBSD-perl/
> >
> >
> >
> > You can also download a pre-patched perl from here, use it to replace
> > src/gnu/usr.bin/perl and do a normal build to get it installed, do note
> > that any XS modules that were built with the old version of perl will no
> > longer work, so be careful.
> >
> > http://cvs.afresh1.com/~andrew/OpenBSD-perl-5.28.1.tar.gz
> >
> >
> > You can read more on the new features and changes on the metacpan.
> >
> > https://metacpan.org/release/SHAY/perl-5.28.1
> >
> > You find them in the perldelta for the versions since 5.24.
> >
> > https://metacpan.org/pod/release/SHAY/perl-5.28.1/pod/perl5260delta.pod
> > https://metacpan.org/pod/release/SHAY/perl-5.28.1/pod/perl5280delta.pod
> > https://metacpan.org/pod/release/SHAY/perl-5.28.1/pod/perldelta.pod
> >
> >
> > One of the important changes, and the one most likely to cause trouble
> > is the removal of "." from the @INC library search list.
>
> Having fixed a bunch of these, and cwen@ fixing a bunch more, and still
> having 100-odd ports failing to build, I have come round to the idea of
> setting PERL_USE_UNSAFE_INC instead. I wasn't super happy about this but
> the upstream cpan tool seems resigned to doing this for now so we might
> as well follow suit.
>
> It seems sanest to set this in cpan.port.mk rather than individual Makefiles:
>
> Index: cpan.port.mk
> ===================================================================
> RCS file: /cvs/ports/infrastructure/mk/cpan.port.mk,v
> retrieving revision 1.20
> diff -u -p -r1.20 cpan.port.mk
> --- cpan.port.mk 20 Mar 2016 19:56:44 -0000 1.20
> +++ cpan.port.mk 3 Feb 2019 14:10:27 -0000
> @@ -24,6 +24,11 @@ TEST_DEPENDS += devel/p5-Test-Pod \
>   devel/p5-Test-Pod-Coverage
>  .endif
>  
> +# perl 5.26+ no longer has "." in @INC by default, but it's widely required in
> +# build/test systems. set it locally, as is also done in the upstream cpan tool.
> +CONFIGURE_ENV += PERL_USE_UNSAFE_INC=1
> +TEST_ENV += PERL_USE_UNSAFE_INC=1
> +
>  MODCPAN_POST_INSTALL = ${INSTALL_DATA_DIR} ${MODCPAN_EXAMPLES_DIR}; \
>   cd ${WRKSRC}/${MODCPAN_EXAMPLES_DIST}/ && pax -rw . ${MODCPAN_EXAMPLES_DIR};\
>   chown -R ${SHAREOWN}:${SHAREGRP} ${MODCPAN_EXAMPLES_DIR}
>
>
> Applying that diff fixes 80+. Any major concerns about doing that
> (especially espie@, afresh1@)? It hasn't been through a full build
> (I added it after a run to mop up breakage) but I can do that.

No, I think it's sane to do that. Let cpan mop up most of the breakage,
then we'll remove that.