Update to perl 5.20.3
authorafresh1 <afresh1@openbsd.org>
Sun, 3 Jul 2016 01:07:47 +0000 (01:07 +0000)
committerafresh1 <afresh1@openbsd.org>
Sun, 3 Jul 2016 01:07:47 +0000 (01:07 +0000)
OK bluhm@

111 files changed:
gnu/usr.bin/perl/AUTHORS
gnu/usr.bin/perl/Configure
gnu/usr.bin/perl/Cross/config.sh-arm-linux
gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770
gnu/usr.bin/perl/INSTALL
gnu/usr.bin/perl/MANIFEST
gnu/usr.bin/perl/META.json
gnu/usr.bin/perl/META.yml
gnu/usr.bin/perl/Makefile.SH
gnu/usr.bin/perl/Makefile.bsd-wrapper
gnu/usr.bin/perl/NetWare/Makefile
gnu/usr.bin/perl/NetWare/config_H.wc
gnu/usr.bin/perl/Porting/Maintainers.pl
gnu/usr.bin/perl/Porting/checkAUTHORS.pl
gnu/usr.bin/perl/Porting/cmpVERSION.pl
gnu/usr.bin/perl/Porting/config.sh
gnu/usr.bin/perl/Porting/config_H
gnu/usr.bin/perl/Porting/epigraphs.pod
gnu/usr.bin/perl/Porting/perldelta_template.pod
gnu/usr.bin/perl/Porting/release_managers_guide.pod
gnu/usr.bin/perl/Porting/todo.pod
gnu/usr.bin/perl/README.haiku
gnu/usr.bin/perl/README.macosx
gnu/usr.bin/perl/README.os2
gnu/usr.bin/perl/README.vms
gnu/usr.bin/perl/cop.h
gnu/usr.bin/perl/cpan/OpenBSD-MkTemp/t/OpenBSD-MkTemp.t
gnu/usr.bin/perl/cpan/OpenBSD-Pledge/lib/OpenBSD/Pledge.pm
gnu/usr.bin/perl/cpan/OpenBSD-Pledge/t/OpenBSD-Pledge.t
gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm
gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL
gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs
gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl
gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl
gnu/usr.bin/perl/dist/Module-CoreList/Changes
gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm
gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod
gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t
gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t
gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t
gnu/usr.bin/perl/embed.fnc
gnu/usr.bin/perl/embed.h
gnu/usr.bin/perl/ext/Errno/Errno_pm.PL
gnu/usr.bin/perl/gv.c
gnu/usr.bin/perl/hints/catamount.sh
gnu/usr.bin/perl/hints/darwin.sh
gnu/usr.bin/perl/hints/os390.sh
gnu/usr.bin/perl/hv.c
gnu/usr.bin/perl/hv_func.h
gnu/usr.bin/perl/inline.h
gnu/usr.bin/perl/intrpvar.h
gnu/usr.bin/perl/lib/h2ph.t
gnu/usr.bin/perl/lib/perl5db.pl
gnu/usr.bin/perl/locale.c
gnu/usr.bin/perl/mg.c
gnu/usr.bin/perl/mg.h
gnu/usr.bin/perl/op.c
gnu/usr.bin/perl/op.h
gnu/usr.bin/perl/pad.c
gnu/usr.bin/perl/patchlevel.h
gnu/usr.bin/perl/perl.c
gnu/usr.bin/perl/plan9/config.plan9
gnu/usr.bin/perl/plan9/config_sh.sample
gnu/usr.bin/perl/pod/perl.pod
gnu/usr.bin/perl/pod/perl5202delta.pod [new file with mode: 0644]
gnu/usr.bin/perl/pod/perlclib.pod
gnu/usr.bin/perl/pod/perldelta.pod
gnu/usr.bin/perl/pod/perlfunc.pod
gnu/usr.bin/perl/pod/perlguts.pod
gnu/usr.bin/perl/pod/perlhacktips.pod
gnu/usr.bin/perl/pod/perlhist.pod
gnu/usr.bin/perl/pod/perlpod.pod
gnu/usr.bin/perl/pod/perlpodspec.pod
gnu/usr.bin/perl/pod/perlpolicy.pod
gnu/usr.bin/perl/pod/perlunicook.pod
gnu/usr.bin/perl/pp_sys.c
gnu/usr.bin/perl/proto.h
gnu/usr.bin/perl/regcomp.c
gnu/usr.bin/perl/regen/lib_cleanup.pl
gnu/usr.bin/perl/regexec.c
gnu/usr.bin/perl/sv.c
gnu/usr.bin/perl/sv.h
gnu/usr.bin/perl/t/base/lex.t
gnu/usr.bin/perl/t/base/rs.t
gnu/usr.bin/perl/t/comp/parser.t
gnu/usr.bin/perl/t/lib/feature/bundle
gnu/usr.bin/perl/t/lib/warnings/toke
gnu/usr.bin/perl/t/op/crypt.t
gnu/usr.bin/perl/t/op/lex.t
gnu/usr.bin/perl/t/op/sub.t
gnu/usr.bin/perl/t/op/taint.t
gnu/usr.bin/perl/t/op/threads.t
gnu/usr.bin/perl/t/perf/taint.t [new file with mode: 0644]
gnu/usr.bin/perl/t/porting/customized.dat
gnu/usr.bin/perl/t/porting/re_context.t [new file with mode: 0644]
gnu/usr.bin/perl/t/re/pat_advanced.t
gnu/usr.bin/perl/t/re/re_tests
gnu/usr.bin/perl/t/re/reg_mesg.t
gnu/usr.bin/perl/t/run/switchd.t
gnu/usr.bin/perl/toke.c
gnu/usr.bin/perl/util.c
gnu/usr.bin/perl/utils/h2ph.PL
gnu/usr.bin/perl/vms/descrip_mms.template
gnu/usr.bin/perl/win32/Makefile
gnu/usr.bin/perl/win32/config_H.gc
gnu/usr.bin/perl/win32/makefile.mk
gnu/usr.bin/perl/win32/pod.mak
gnu/usr.bin/perl/win32/win32.c
gnu/usr.bin/perl/win32/win32.h

index 691773e..a71d0bf 100644 (file)
@@ -517,6 +517,7 @@ James FitzGibbon            <james@ican.net>
 James Jurach                   <muaddib@erf.net>
 James E Keenan                 <jkeenan@cpan.org>
 James Mastros                  <james@mastros.biz>
+James McCoy                     <vega.james@gmail.com>
 Jamshid Afshar
 Jan D.                         <jan.djarv@mbox200.swipnet.se>
 Jan Dubois                     <jand@activestate.com>
@@ -696,6 +697,7 @@ Krishna Sethuraman          <krishna@sgi.com>
 Kriton Kyrimis                 <kyrimis@princeton.edu>
 Kurt D. Starsinic              <kstar@wolfetech.com>
 Kyriakos Georgiou
+Lajos Veres                    <vlajos@gmail.com>
 Larry Parmelee                 <parmelee@CS.Cornell.EDU>
 Larry Schuler
 Larry Schwimmer                        <rosebud@cyclone.Stanford.EDU>
@@ -979,6 +981,7 @@ Randal L. Schwartz          <merlyn@stonehenge.com>
 Randall Gellens                        <randy@qualcomm.com>
 Randolf Werner                 <randolf.werner@sap.com>
 Randy J. Ray                   <rjray@redhat.com>
+Randy Stauner                  <rwstauner@cpan.org>
 Randy W. Sims
 Raphael Manfredi               <Raphael.Manfredi@pobox.com>
 Raul Dias                      <raul@dias.com.br>
index 056b46a..4f1a02b 100644 (file)
@@ -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 320c08b..8a44a74 100644 (file)
@@ -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/share/man/man1'
 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 14 15 16 17 18 19 20 21 22 23 24 25 26
 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 8e7a509..cbf158b 100644 (file)
@@ -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/share/man/man1'
 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 14 15 16 17 18 19 20 21 22 23 24 25 26
 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 bc2374a..1fb40ad 100644 (file)
@@ -564,7 +564,7 @@ The directories set up by Configure fall into three broad categories.
 
 =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/~sgtatham/bugs.html
 
 =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.  (The defaults guarantee this for
 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 script
      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 72f466f..c280bde 100644 (file)
@@ -5012,6 +5012,7 @@ pod/perl5182delta.pod             Perl changes in version 5.18.2
 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 Functions_pm.PL can parse perlfunc.pod
 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 82f25da..fb3f619 100644 (file)
          "url" : "http://perl5.git.perl.org/"
       }
    },
-   "version" : "5.020002"
+   "version" : "5.020003"
 }
index 5dc17d5..2af0abd 100644 (file)
@@ -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 cdf1601..9443463 100644 (file)
@@ -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) autodoc.pl embed.fnc
 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 d070d06..313eeb8 100644 (file)
@@ -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.103 2016/07/03 01:07:47 afresh1 Exp $
 #
 # Build wrapper for Perl 5.20.1-RC2
 #
index 71ba0da..30200b0 100644 (file)
@@ -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 8541736..717f9a8 100644 (file)
  *     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:
  *     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,
  *     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:
  *     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 96133c1..2b50948 100644 (file)
@@ -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 431ddb9..39eb0d5 100755 (executable)
@@ -691,6 +691,8 @@ keith.s.thompson\100gmail.com           kst\100mib.org
 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 f583191..bcc5eea 100644 (file)
@@ -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 7ff00ab..75a5080 100644 (file)
@@ -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='hmbrand@cpan.org'
 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 14 15 16 17 18 19 20 21 22 23 24 25 26
 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 e7eb91b..734ded3 100644 (file)
  *     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.
  *     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
  *     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.
  *     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:
  *     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 0299225..ecf2ade 100644 (file)
@@ -17,6 +17,295 @@ Consult your favorite dictionary for details.
 
 =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 53d4f2d..23cadfc 100644 (file)
@@ -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 52c9515..a6bc0f9 100644 (file)
@@ -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 release of the current branch, check
 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 number in its F<Changes> file.
 
 =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 9b7cfdf..739f15e 100644 (file)
@@ -467,7 +467,7 @@ Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall.
 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-lists/perl5-porters/2013-01/msg00339.html>
 =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 ebad8be..3a9ba1b 100644 (file)
@@ -22,9 +22,9 @@ The build procedure is completely standard:
 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 5797303..cd558a0 100644 (file)
@@ -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 under Mac OS X.
 
 =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 86324c1..da4d2e6 100644 (file)
@@ -619,7 +619,7 @@ C<set PERLLIB_PREFIX> in F<Config.sys>, see L<"PERLLIB_PREFIX">.
 
 =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 365705f..9b5fba2 100644 (file)
@@ -142,11 +142,11 @@ You may need to set up a foreign symbol for the unpacking utility of
 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 37980f0..cb2b42a 100644 (file)
@@ -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 143d80d..70d78ce 100644 (file)
@@ -10,6 +10,7 @@ use warnings;
 
 use Test::More;
 use Errno;
+use FileHandle;
 use Scalar::Util qw( openhandle );
 BEGIN { use_ok('OpenBSD::MkTemp') };
 
index 129a77d..0882e13 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: Pledge.pm,v 1.1 2015/11/29 19:01:27 afresh1 Exp $     #
+#      $OpenBSD: Pledge.pm,v 1.2 2016/07/03 01:07:57 afresh1 Exp $     #
 package OpenBSD::Pledge;
 
 use 5.020002;
@@ -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 1a3791a..6068f77 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: OpenBSD-Pledge.t,v 1.1 2015/11/29 19:01:27 afresh1 Exp $      #
+#      $OpenBSD: OpenBSD-Pledge.t,v 1.2 2016/07/03 01:07:58 afresh1 Exp $      #
 ## no critic 'version'
 ## no critic 'package'
 # Before 'make install' is performed this script should be runnable with
@@ -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 9c502d3..8ae97e2 100644 (file)
@@ -8,7 +8,7 @@
 #  merging into the original, please contact me at kjahds@kjahds.com or
 #  CIS:70705,126
 #
-#  $Id: Configure.pm,v 1.2 2016/05/07 16:04:46 espie Exp $
+#  $Id: Configure.pm,v 1.3 2016/07/03 01:07:58 afresh1 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 3298913..4c97e22 100644 (file)
@@ -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 29c83b9..e4c70ca 100644 (file)
@@ -18,7 +18,7 @@
 
  Maintained by Jonathan Stowe <jns@gellyfish.com>
 
- $Id: ReadKey.xs,v 1.1.1.1 2016/05/07 16:03:09 espie Exp $
+ $Id: ReadKey.xs,v 1.2 2016/07/03 01:07:58 afresh1 Exp $
 
  Version 2.21, Sun Jul 28 12:57:56 BST 2002
     Fix to improve the chances of automated testing succeeding
index 359e75b..efbc866 100644 (file)
@@ -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 696c55b..0ea0fc3 100644 (file)
@@ -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 1.2 2016/07/03 01:07:58 afresh1 Exp $
 #
 ##############################
 $version="1.97";
index 323b4c8..70a96e6 100644 (file)
@@ -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 54725c8..d50e7c5 100644 (file)
@@ -4,7 +4,17 @@ use vars qw/$VERSION %released %version %families %upstream
            %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 } keys %released ) {
             '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 } keys %released ) {
             '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 } keys %released ) {
             '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 } keys %released ) {
             '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 } keys %released ) {
             '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 } keys %released ) {
     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 } keys %released ) {
             '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 } keys %released ) {
             '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 } keys %released ) {
     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 } keys %released ) {
             '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 } keys %released ) {
             '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 } keys %released ) {
             '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 } keys %released ) {
         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 %delta) {
     },
     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 %delta) {
         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 %delta) {
         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 %deprecated) {
     '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 %deprecated) {
     '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 edc00ec..d8807bf 100644 (file)
@@ -73,8 +73,11 @@ you may provide a list of perl versions to limit the regex search.
 
 =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 version of Perl.
 
 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 eb769f3..b715bfd 100644 (file)
@@ -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 b9fde3e..350c917 100644 (file)
@@ -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;
 }
 
@@ -1013,6 +1023,63 @@ my %delta = (
         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 => {
+        }
+    },
 );
 
 for my $version (sort { $a <=> $b } keys %delta) {
index c129584..db09f48 100755 (executable)
@@ -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('CPANPLUS::inc'), 5.010001,
     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 869aa37..cc06a21 100644 (file)
@@ -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::Soundex', '3.03', '5.01'), "5.01 had Text::S
 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 4822495..d42a158 100644 (file)
@@ -11,7 +11,7 @@ is( Module::CoreList::Utils->first_release('corelist'), 5.008009, 'corelist with
 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 88f03c2..1eec6b1 100644 (file)
@@ -1407,6 +1407,7 @@ Apd       |void   |sv_magic       |NN SV *const sv|NULLOK SV *const obj|const int how \
 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 a6e3b9d..6f773f6 100644 (file)
 #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 cfab893..f82c091 100644 (file)
@@ -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 ce68478..6b17ae2 100644 (file)
@@ -1339,7 +1339,7 @@ Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags)
     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 572a6a7..6c09353 100644 (file)
 # 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 276695a..e1f20af 100644 (file)
@@ -123,9 +123,11 @@ ccflags="${ccflags} -fno-common -DPERL_DARWIN"
 # 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 5aafb4e..892d36d 100644 (file)
@@ -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 ef686ab..fe4947b 100644 (file)
@@ -3154,7 +3154,7 @@ Perl_refcounted_he_fetch_pvn(pTHX_ const struct refcounted_he *chain,
        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 struct refcounted_he *chain,
            return sv_2mortal(refcounted_he_value(chain));
        }
     }
+  ret:
     return flags & REFCOUNTED_HE_EXISTS ? NULL : &PL_sv_placeholder;
 }
 
index 191912a..d274762 100644 (file)
@@ -257,7 +257,7 @@ S_perl_hash_siphash_2_4(const unsigned char * const seed, const unsigned char *i
 
 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 seed, const unsigned char *ptr,
 
     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 * const seed, const unsigned char *ptr,
     /* 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 * const seed, const unsigned char *ptr,
     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 * const seed, const unsigned char *ptr,
 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 * const seed, const unsigned char *str, con
 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 * const seed, const unsigned char *str, con
 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 char * const seed, const unsigned char
 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 0fe8a0e..916f557 100644 (file)
@@ -322,6 +322,30 @@ S_is_safe_syscall(pTHX_ const char *pv, STRLEN len, const char *what, const char
     return TRUE;
 }
 
+/*
+
+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
index 08c4a38..9e1fdb6 100644 (file)
@@ -736,7 +736,7 @@ PERLVAR(I, debug_pad,       struct perl_debug_pad)  /* always needed because of the re
 /* 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 2b58f6a..64d9dc0 100644 (file)
@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph',
                    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 707d04d..8474611 100644 (file)
@@ -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 27225f3..29cdbbe 100644 (file)
@@ -348,7 +348,7 @@ Perl_my_setlocale(pTHX_ int category, const char* locale)
      * 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;
 
@@ -910,6 +915,13 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
 
 #endif /* USE_LOCALE */
 
+#ifdef __GLIBC__
+    Safefree(language);
+#endif
+
+    Safefree(lc_all);
+    Safefree(lang);
+
     return ok;
 }
 
index 4158f1a..01b3cdc 100644 (file)
@@ -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 81ed296..cd5c647 100644 (file)
@@ -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 7337f23..7038526 100644 (file)
@@ -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 9d9dd58..ff45354 100644 (file)
@@ -1005,7 +1005,7 @@ For custom ops the type is returned from the registration, and it is up
 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 *oOptype 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_ISNT> is also available
 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 *oOptype 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 fed2892..f22c3c5 100644 (file)
@@ -976,8 +976,10 @@ Perl_pad_findmy_pvn(pTHX_ const char *namepv, STRLEN namelen, U32 flags)
 
         if (is_utf8)
             flags |= padadd_UTF8_NAME;
-        else
+        else {
             flags &= ~padadd_UTF8_NAME;
+            SAVEFREEPV(namepv);
+        }
     }
 
     offset = pad_findlex(namepv, namelen, flags,
index dee7024..7f8cc30 100644 (file)
@@ -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 1c2588b..432cc3d 100644 (file)
@@ -2003,6 +2003,10 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit)
 #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 7f860f9..0d540a0 100644 (file)
  *     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
  *     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 ea1d853..26897c4 100644 (file)
@@ -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 14 15 16 17 18 19 20 21 22 23 24 25 26
 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 f8f7681..e0f121b 100644 (file)
@@ -180,6 +180,7 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
 
     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
diff --git a/gnu/usr.bin/perl/pod/perl5202delta.pod b/gnu/usr.bin/perl/pod/perl5202delta.pod
new file mode 100644 (file)
index 0000000..98707fd
--- /dev/null
@@ -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 perlbug@perl.org 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 perl5-security-report@perl.org.  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 0cdee24..2e20784 100644 (file)
@@ -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 a339f3d..3aa81ec 100644 (file)
@@ -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 distribution.
 
 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 802b990..272a6cd 100644 (file)
@@ -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 d845010..61468bc 100644 (file)
@@ -323,22 +323,40 @@ Hence, at this point, the start of the buffer that we allocated lives
 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=""; $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="12345"; $a=~s/.//; Dump($a)'
-  SV = PVIV(0x8128450) at 0x81340f0
+  % ./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 f2f2e6c..5544b5d 100644 (file)
@@ -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 7afc2fc..58b006b 100644 (file)
@@ -32,8 +32,8 @@ Leon Brocard, Dave Mitchell, Jesse Vincent, Ricardo Signes, Steve Hay,
 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 somewhat more selected releases.
 
  ======================================================================
 
-                  5.20.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
+                  5.20.0           5.22.0
+
+ 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 2f531f9..12b156b 100644 (file)
@@ -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 67f74b6..f2af63e 100644 (file)
@@ -633,15 +633,21 @@ UTF-16.  If the file begins with the three literal byte values
 
 =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 c6e0bbd..779ccff 100644 (file)
@@ -84,9 +84,9 @@ the Perl community should expect from Perl's developers:
 
 =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 while avoiding demeaning remarks and
 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 44a4571..3e5496e 100644 (file)
@@ -33,7 +33,8 @@ This I<does> make even Unix programmers C<binmode> your binary streams,
 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 to manually manage the translation:
     # 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 9de4dff..967b1dd 100644 (file)
@@ -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 6532ba8..96003a8 100644 (file)
@@ -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 573072a..606b337 100644 (file)
@@ -10455,9 +10455,7 @@ S_regpiece(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
                 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 c9d6e43..d43b4b2 100644 (file)
@@ -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 53c1065..ee6705a 100644 (file)
@@ -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 rx, char *stringarg, char *strend,
        ));
     }
 
-    /* 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 af393bd..06db7d9 100644 (file)
@@ -12698,7 +12698,7 @@ S_sv_dup_common(pTHX_ const SV *const sstr, CLONE_PARAMS *const param)
                    }
                    items = AvMAX((const AV *)sstr) - AvFILLp((const AV *)sstr);
                    while (items-- > 0) {
-                       *dst_ary++ = &PL_sv_undef;
+                       *dst_ary++ = NULL;
                    }
                }
                else {
index b129225..15163e4 100644 (file)
@@ -792,13 +792,18 @@ C<SvIV_set> instead of the lvalue assignment to C<SvIVX>.
 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 01ab208..3c612ec 100644 (file)
@@ -434,3 +434,6 @@ print "ok $test - y <comment> <newline> ...\n"; $test++;
 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 416696e..8e84ad0 100644 (file)
@@ -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 584a473..755b5c5 100644 (file)
@@ -502,6 +502,9 @@ like $@, "^No such class a1b at ", 'TYPE of my of for statement';
 # 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 429e68e..a40aba4 100644 (file)
@@ -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 92e94ad..c880f07 100644 (file)
@@ -1510,3 +1510,34 @@ Use of literal control characters in variable names is deprecated at (eval 2) li
 -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 27c878f..11006d8 100644 (file)
@@ -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 b33f0ef..cbb72ef 100755 (executable)
@@ -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 7df8f49..fe5353c 100644 (file)
@@ -6,7 +6,7 @@ BEGIN {
     require './test.pl';
 }
 
-plan( tests => 33 );
+plan( tests => 36 );
 
 sub empty_sub {}
 
@@ -222,3 +222,53 @@ ok !exists $INC{"re.pm"}, 're.pm not loaded yet';
     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 7170052..04b8d13 100644 (file)
@@ -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 6fb2410..e76c956 100755 (executable)
@@ -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;
@@ -399,4 +399,10 @@ 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
diff --git a/gnu/usr.bin/perl/t/perf/taint.t b/gnu/usr.bin/perl/t/perf/taint.t
new file mode 100644 (file)
index 0000000..386d97e
--- /dev/null
@@ -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 aa8bb70..530963b 100644 (file)
@@ -34,6 +34,6 @@ Text::ParseWords cpan/Text-ParseWords/t/ParseWords.t 9bae51c9b944cd5c0bbabe9d397
 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
diff --git a/gnu/usr.bin/perl/t/porting/re_context.t b/gnu/usr.bin/perl/t/porting/re_context.t
new file mode 100644 (file)
index 0000000..5467b93
--- /dev/null
@@ -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 4fd9f91..77a0f0e 100755 (executable)
@@ -2254,6 +2254,19 @@ EOP
                       "get [:lower:] swash in first eval; test under /i in second");
     }
 
+    {
+        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"
index d883add..11c4125 100644 (file)
@@ -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 55eda18..77f7aa1 100755 (executable)
@@ -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 d24d98b..d72faa1 100644 (file)
@@ -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 906d56c..50e2d59 100644 (file)
@@ -1301,7 +1301,7 @@ buffer has reached the end of the input text.
 */
 
 #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 flags)
        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 5e0f788..17882b2 100644 (file)
@@ -1877,7 +1877,10 @@ Perl_vwarner(pTHX_ U32  err, const char* pat, va_list* args)
 {
     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 15a0fe4..5da4a59 100644 (file)
@@ -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 309ffab..992d4ac 100644 (file)
@@ -319,7 +319,7 @@ x2p : [.x2p]$(DBG)a2p$(E) [.x2p]s2p.com [.x2p]find2perl.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 0385b07..d48adc7 100644 (file)
@@ -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\Makefile
        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 da310af..d64fd9f 100644 (file)
  *     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 757e087..4a74303 100644 (file)
@@ -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\Makefile
        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 1f9593a..67ebbf4 100644 (file)
@@ -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 5a112ef..dfc57ce 100644 (file)
@@ -1122,6 +1122,7 @@ chown(const char *path, uid_t owner, gid_t group)
  * 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 735c450..13db661 100644 (file)
@@ -326,8 +326,10 @@ 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
 #define  Stat          win32_stat