From fb8aa7497fded39583f40e800732f9c046411717 Mon Sep 17 00:00:00 2001 From: afresh1 Date: Sun, 3 Jul 2016 01:07:47 +0000 Subject: [PATCH] Update to perl 5.20.3 OK bluhm@ --- gnu/usr.bin/perl/AUTHORS | 3 + gnu/usr.bin/perl/Configure | 8 +- gnu/usr.bin/perl/Cross/config.sh-arm-linux | 36 +- .../perl/Cross/config.sh-arm-linux-n770 | 36 +- gnu/usr.bin/perl/INSTALL | 28 +- gnu/usr.bin/perl/MANIFEST | 3 + gnu/usr.bin/perl/META.json | 2 +- gnu/usr.bin/perl/META.yml | 2 +- gnu/usr.bin/perl/Makefile.SH | 8 +- gnu/usr.bin/perl/Makefile.bsd-wrapper | 2 +- gnu/usr.bin/perl/NetWare/Makefile | 4 +- gnu/usr.bin/perl/NetWare/config_H.wc | 10 +- gnu/usr.bin/perl/Porting/Maintainers.pl | 2 +- gnu/usr.bin/perl/Porting/checkAUTHORS.pl | 2 + gnu/usr.bin/perl/Porting/cmpVERSION.pl | 2 +- gnu/usr.bin/perl/Porting/config.sh | 38 +- gnu/usr.bin/perl/Porting/config_H | 18 +- gnu/usr.bin/perl/Porting/epigraphs.pod | 289 +++++++ .../perl/Porting/perldelta_template.pod | 2 +- .../perl/Porting/release_managers_guide.pod | 18 +- gnu/usr.bin/perl/Porting/todo.pod | 4 +- gnu/usr.bin/perl/README.haiku | 4 +- gnu/usr.bin/perl/README.macosx | 8 +- gnu/usr.bin/perl/README.os2 | 2 +- gnu/usr.bin/perl/README.vms | 4 +- gnu/usr.bin/perl/cop.h | 12 +- .../cpan/OpenBSD-MkTemp/t/OpenBSD-MkTemp.t | 1 + .../cpan/OpenBSD-Pledge/lib/OpenBSD/Pledge.pm | 4 +- .../cpan/OpenBSD-Pledge/t/OpenBSD-Pledge.t | 4 +- .../perl/cpan/Term-ReadKey/Configure.pm | 3 +- .../perl/cpan/Term-ReadKey/Makefile.PL | 2 +- gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs | 2 +- .../perl/cpan/Term-ReadKey/example/test.pl | 2 +- .../perl/cpan/Term-ReadKey/genchars.pl | 2 +- gnu/usr.bin/perl/dist/Module-CoreList/Changes | 25 +- .../Module-CoreList/lib/Module/CoreList.pm | 802 ++++++++++++++++-- .../Module-CoreList/lib/Module/CoreList.pod | 9 +- .../lib/Module/CoreList/TieHashDelta.pm | 2 +- .../lib/Module/CoreList/Utils.pm | 73 +- .../perl/dist/Module-CoreList/t/corelist.t | 11 +- .../perl/dist/Module-CoreList/t/is_core.t | 8 +- .../perl/dist/Module-CoreList/t/utils.t | 2 +- gnu/usr.bin/perl/embed.fnc | 1 + gnu/usr.bin/perl/embed.h | 1 + gnu/usr.bin/perl/ext/Errno/Errno_pm.PL | 23 +- gnu/usr.bin/perl/gv.c | 2 +- gnu/usr.bin/perl/hints/catamount.sh | 4 +- gnu/usr.bin/perl/hints/darwin.sh | 6 +- gnu/usr.bin/perl/hints/os390.sh | 4 +- gnu/usr.bin/perl/hv.c | 3 +- gnu/usr.bin/perl/hv_func.h | 16 +- gnu/usr.bin/perl/inline.h | 24 + gnu/usr.bin/perl/intrpvar.h | 2 +- gnu/usr.bin/perl/lib/h2ph.t | 2 +- gnu/usr.bin/perl/lib/perl5db.pl | 3 +- gnu/usr.bin/perl/locale.c | 26 +- gnu/usr.bin/perl/mg.c | 2 +- gnu/usr.bin/perl/mg.h | 2 +- gnu/usr.bin/perl/op.c | 2 +- gnu/usr.bin/perl/op.h | 4 +- gnu/usr.bin/perl/pad.c | 4 +- gnu/usr.bin/perl/patchlevel.h | 2 +- gnu/usr.bin/perl/perl.c | 4 + gnu/usr.bin/perl/plan9/config.plan9 | 10 +- gnu/usr.bin/perl/plan9/config_sh.sample | 34 +- gnu/usr.bin/perl/pod/perl.pod | 1 + gnu/usr.bin/perl/pod/perl5202delta.pod | 415 +++++++++ gnu/usr.bin/perl/pod/perlclib.pod | 2 +- gnu/usr.bin/perl/pod/perldelta.pod | 333 +++----- gnu/usr.bin/perl/pod/perlfunc.pod | 8 +- gnu/usr.bin/perl/pod/perlguts.pod | 38 +- gnu/usr.bin/perl/pod/perlhacktips.pod | 33 + gnu/usr.bin/perl/pod/perlhist.pod | 57 +- gnu/usr.bin/perl/pod/perlpod.pod | 10 +- gnu/usr.bin/perl/pod/perlpodspec.pod | 12 +- gnu/usr.bin/perl/pod/perlpolicy.pod | 16 +- gnu/usr.bin/perl/pod/perlunicook.pod | 7 +- gnu/usr.bin/perl/pp_sys.c | 2 +- gnu/usr.bin/perl/proto.h | 5 + gnu/usr.bin/perl/regcomp.c | 47 +- gnu/usr.bin/perl/regen/lib_cleanup.pl | 6 + gnu/usr.bin/perl/regexec.c | 124 +-- gnu/usr.bin/perl/sv.c | 2 +- gnu/usr.bin/perl/sv.h | 11 +- gnu/usr.bin/perl/t/base/lex.t | 3 + gnu/usr.bin/perl/t/base/rs.t | 12 +- gnu/usr.bin/perl/t/comp/parser.t | 3 + gnu/usr.bin/perl/t/lib/feature/bundle | 8 + gnu/usr.bin/perl/t/lib/warnings/toke | 31 + gnu/usr.bin/perl/t/op/crypt.t | 9 +- gnu/usr.bin/perl/t/op/lex.t | 28 +- gnu/usr.bin/perl/t/op/sub.t | 52 +- gnu/usr.bin/perl/t/op/taint.t | 3 +- gnu/usr.bin/perl/t/op/threads.t | 8 +- gnu/usr.bin/perl/t/perf/taint.t | 42 + gnu/usr.bin/perl/t/porting/customized.dat | 2 +- gnu/usr.bin/perl/t/porting/re_context.t | 43 + gnu/usr.bin/perl/t/re/pat_advanced.t | 13 + gnu/usr.bin/perl/t/re/re_tests | 2 + gnu/usr.bin/perl/t/re/reg_mesg.t | 1 - gnu/usr.bin/perl/t/run/switchd.t | 24 +- gnu/usr.bin/perl/toke.c | 25 +- gnu/usr.bin/perl/util.c | 5 +- gnu/usr.bin/perl/utils/h2ph.PL | 19 +- gnu/usr.bin/perl/vms/descrip_mms.template | 2 +- gnu/usr.bin/perl/win32/Makefile | 6 +- gnu/usr.bin/perl/win32/config_H.gc | 4 +- gnu/usr.bin/perl/win32/makefile.mk | 7 +- gnu/usr.bin/perl/win32/pod.mak | 4 + gnu/usr.bin/perl/win32/win32.c | 2 + gnu/usr.bin/perl/win32/win32.h | 2 + 111 files changed, 2523 insertions(+), 646 deletions(-) create mode 100644 gnu/usr.bin/perl/pod/perl5202delta.pod create mode 100644 gnu/usr.bin/perl/t/perf/taint.t create mode 100644 gnu/usr.bin/perl/t/porting/re_context.t diff --git a/gnu/usr.bin/perl/AUTHORS b/gnu/usr.bin/perl/AUTHORS index 691773e5e12..a71d0bf4fcd 100644 --- a/gnu/usr.bin/perl/AUTHORS +++ b/gnu/usr.bin/perl/AUTHORS @@ -517,6 +517,7 @@ James FitzGibbon James Jurach James E Keenan James Mastros +James McCoy Jamshid Afshar Jan D. Jan Dubois @@ -696,6 +697,7 @@ Krishna Sethuraman Kriton Kyrimis Kurt D. Starsinic Kyriakos Georgiou +Lajos Veres Larry Parmelee Larry Schuler Larry Schwimmer @@ -979,6 +981,7 @@ Randal L. Schwartz Randall Gellens Randolf Werner Randy J. Ray +Randy Stauner Randy W. Sims Raphael Manfredi Raul Dias diff --git a/gnu/usr.bin/perl/Configure b/gnu/usr.bin/perl/Configure index 056b46aaa9b..4f1a02b59db 100644 --- a/gnu/usr.bin/perl/Configure +++ b/gnu/usr.bin/perl/Configure @@ -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); diff --git a/gnu/usr.bin/perl/Cross/config.sh-arm-linux b/gnu/usr.bin/perl/Cross/config.sh-arm-linux index 320c08b086d..8a44a74e60c 100644 --- a/gnu/usr.bin/perl/Cross/config.sh-arm-linux +++ b/gnu/usr.bin/perl/Cross/config.sh-arm-linux @@ -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 diff --git a/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 b/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 index 8e7a509b05f..cbf158b4f51 100644 --- a/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 +++ b/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 @@ -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 diff --git a/gnu/usr.bin/perl/INSTALL b/gnu/usr.bin/perl/INSTALL index bc2374ad742..1fb40ad3500 100644 --- a/gnu/usr.bin/perl/INSTALL +++ b/gnu/usr.bin/perl/INSTALL @@ -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 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. diff --git a/gnu/usr.bin/perl/MANIFEST b/gnu/usr.bin/perl/MANIFEST index 72f466fcca5..c280bde4042 100644 --- a/gnu/usr.bin/perl/MANIFEST +++ b/gnu/usr.bin/perl/MANIFEST @@ -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. diff --git a/gnu/usr.bin/perl/META.json b/gnu/usr.bin/perl/META.json index 82f25dad7d1..fb3f6195528 100644 --- a/gnu/usr.bin/perl/META.json +++ b/gnu/usr.bin/perl/META.json @@ -128,5 +128,5 @@ "url" : "http://perl5.git.perl.org/" } }, - "version" : "5.020002" + "version" : "5.020003" } diff --git a/gnu/usr.bin/perl/META.yml b/gnu/usr.bin/perl/META.yml index 5dc17d547a3..2af0abd126c 100644 --- a/gnu/usr.bin/perl/META.yml +++ b/gnu/usr.bin/perl/META.yml @@ -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' diff --git a/gnu/usr.bin/perl/Makefile.SH b/gnu/usr.bin/perl/Makefile.SH index cdf16011d4b..94434639b49 100644 --- a/gnu/usr.bin/perl/Makefile.SH +++ b/gnu/usr.bin/perl/Makefile.SH @@ -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` diff --git a/gnu/usr.bin/perl/Makefile.bsd-wrapper b/gnu/usr.bin/perl/Makefile.bsd-wrapper index d070d06bbfa..313eeb844ea 100644 --- a/gnu/usr.bin/perl/Makefile.bsd-wrapper +++ b/gnu/usr.bin/perl/Makefile.bsd-wrapper @@ -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 # diff --git a/gnu/usr.bin/perl/NetWare/Makefile b/gnu/usr.bin/perl/NetWare/Makefile index 71ba0da1ed0..30200b0dae0 100644 --- a/gnu/usr.bin/perl/NetWare/Makefile +++ b/gnu/usr.bin/perl/NetWare/Makefile @@ -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 diff --git a/gnu/usr.bin/perl/NetWare/config_H.wc b/gnu/usr.bin/perl/NetWare/config_H.wc index 8541736b4b5..717f9a86bdd 100644 --- a/gnu/usr.bin/perl/NetWare/config_H.wc +++ b/gnu/usr.bin/perl/NetWare/config_H.wc @@ -1042,7 +1042,7 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define ARCHLIB "c:\\perl\\5.20.2\\lib\\NetWare-x86-multi-thread" /**/ +#define ARCHLIB "c:\\perl\\5.20.3\\lib\\NetWare-x86-multi-thread" /**/ /*#define ARCHLIB_EXP "" /**/ /* ARCHNAME: @@ -1073,8 +1073,8 @@ * This symbol is the filename expanded version of the BIN symbol, for * programs that do not want to deal with that at run-time. */ -#define BIN "c:\\perl\\5.20.2\\bin\\NetWare-x86-multi-thread" /**/ -#define BIN_EXP "c:\\perl\\5.20.2\\bin\\NetWare-x86-multi-thread" /**/ +#define BIN "c:\\perl\\5.20.3\\bin\\NetWare-x86-multi-thread" /**/ +#define BIN_EXP "c:\\perl\\5.20.3\\bin\\NetWare-x86-multi-thread" /**/ /* BYTEORDER: * This symbol holds the hexadecimal constant defined in byteorder, @@ -3051,7 +3051,7 @@ * This symbol contains the ~name expanded version of SITEARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define SITEARCH "c:\\perl\\site\\5.20.2\\lib\\NetWare-x86-multi-thread" /**/ +#define SITEARCH "c:\\perl\\site\\5.20.3\\lib\\NetWare-x86-multi-thread" /**/ /*#define SITEARCH_EXP "" /**/ /* SITELIB: @@ -3074,7 +3074,7 @@ * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "c:\\perl\\site\\5.20.2\\lib" /**/ +#define SITELIB "c:\\perl\\site\\5.20.3\\lib" /**/ /*#define SITELIB_EXP "" /**/ #define SITELIB_STEM "" /**/ diff --git a/gnu/usr.bin/perl/Porting/Maintainers.pl b/gnu/usr.bin/perl/Porting/Maintainers.pl index 96133c1bcd8..2b509485da4 100644 --- a/gnu/usr.bin/perl/Porting/Maintainers.pl +++ b/gnu/usr.bin/perl/Porting/Maintainers.pl @@ -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], }, diff --git a/gnu/usr.bin/perl/Porting/checkAUTHORS.pl b/gnu/usr.bin/perl/Porting/checkAUTHORS.pl index 431ddb98220..39eb0d56dcd 100755 --- a/gnu/usr.bin/perl/Porting/checkAUTHORS.pl +++ b/gnu/usr.bin/perl/Porting/checkAUTHORS.pl @@ -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 diff --git a/gnu/usr.bin/perl/Porting/cmpVERSION.pl b/gnu/usr.bin/perl/Porting/cmpVERSION.pl index f583191ad32..bcc5eeaca2d 100644 --- a/gnu/usr.bin/perl/Porting/cmpVERSION.pl +++ b/gnu/usr.bin/perl/Porting/cmpVERSION.pl @@ -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. diff --git a/gnu/usr.bin/perl/Porting/config.sh b/gnu/usr.bin/perl/Porting/config.sh index 7ff00ab0567..75a50804152 100644 --- a/gnu/usr.bin/perl/Porting/config.sh +++ b/gnu/usr.bin/perl/Porting/config.sh @@ -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 diff --git a/gnu/usr.bin/perl/Porting/config_H b/gnu/usr.bin/perl/Porting/config_H index e7eb91b806c..734ded391ab 100644 --- a/gnu/usr.bin/perl/Porting/config_H +++ b/gnu/usr.bin/perl/Porting/config_H @@ -960,8 +960,8 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define ARCHLIB "/pro/lib/perl5/5.20.2/i686-linux-64int-ld" /**/ -#define ARCHLIB_EXP "/pro/lib/perl5/5.20.2/i686-linux-64int-ld" /**/ +#define ARCHLIB "/pro/lib/perl5/5.20.3/i686-linux-64int-ld" /**/ +#define ARCHLIB_EXP "/pro/lib/perl5/5.20.3/i686-linux-64int-ld" /**/ /* ARCHNAME: * This symbol holds a string representing the architecture name. @@ -2068,8 +2068,8 @@ * This symbol contains the ~name expanded version of PRIVLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define PRIVLIB "/pro/lib/perl5/5.20.2" /**/ -#define PRIVLIB_EXP "/pro/lib/perl5/5.20.2" /**/ +#define PRIVLIB "/pro/lib/perl5/5.20.3" /**/ +#define PRIVLIB_EXP "/pro/lib/perl5/5.20.3" /**/ /* PTRSIZE: * This symbol contains the size of a pointer, so that the C preprocessor @@ -2119,8 +2119,8 @@ * This symbol contains the ~name expanded version of SITEARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define SITEARCH "/pro/lib/perl5/site_perl/5.20.2/i686-linux-64int-ld" /**/ -#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.20.2/i686-linux-64int-ld" /**/ +#define SITEARCH "/pro/lib/perl5/site_perl/5.20.3/i686-linux-64int-ld" /**/ +#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.20.3/i686-linux-64int-ld" /**/ /* SITELIB: * This symbol contains the name of the private library for this package. @@ -2142,8 +2142,8 @@ * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "/pro/lib/perl5/site_perl/5.20.2" /**/ -#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.20.2" /**/ +#define SITELIB "/pro/lib/perl5/site_perl/5.20.3" /**/ +#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.20.3" /**/ #define SITELIB_STEM "/pro/lib/perl5/site_perl" /**/ /* SSize_t: @@ -4332,7 +4332,7 @@ * script to make sure (one hopes) that it runs with perl and not * some shell. */ -#define STARTPERL "#!/pro/bin/perl5.20.2" /**/ +#define STARTPERL "#!/pro/bin/perl5.20.3" /**/ /* HAS_STDIO_STREAM_ARRAY: * This symbol, if defined, tells that there is an array diff --git a/gnu/usr.bin/perl/Porting/epigraphs.pod b/gnu/usr.bin/perl/Porting/epigraphs.pod index 0299225edd1..ecf2ade1ff8 100644 --- a/gnu/usr.bin/perl/Porting/epigraphs.pod +++ b/gnu/usr.bin/perl/Porting/epigraphs.pod @@ -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 + +'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 + +'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 + + 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 + + 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 + + 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 + +“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 + + 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 + +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 + + 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 + +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 + +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 + + 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 diff --git a/gnu/usr.bin/perl/Porting/perldelta_template.pod b/gnu/usr.bin/perl/Porting/perldelta_template.pod index 53d4f2d8936..23cadfce71b 100644 --- a/gnu/usr.bin/perl/Porting/perldelta_template.pod +++ b/gnu/usr.bin/perl/Porting/perldelta_template.pod @@ -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 diff --git a/gnu/usr.bin/perl/Porting/release_managers_guide.pod b/gnu/usr.bin/perl/Porting/release_managers_guide.pod index 52c9515e83c..a6bc0f9e1c5 100644 --- a/gnu/usr.bin/perl/Porting/release_managers_guide.pod +++ b/gnu/usr.bin/perl/Porting/release_managers_guide.pod @@ -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 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 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. =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 diff --git a/gnu/usr.bin/perl/Porting/todo.pod b/gnu/usr.bin/perl/Porting/todo.pod index 9b7cfdfb5c4..739f15e0b92 100644 --- a/gnu/usr.bin/perl/Porting/todo.pod +++ b/gnu/usr.bin/perl/Porting/todo.pod @@ -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 =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 diff --git a/gnu/usr.bin/perl/README.haiku b/gnu/usr.bin/perl/README.haiku index ebad8be98e4..3a9ba1b9efe 100644 --- a/gnu/usr.bin/perl/README.haiku +++ b/gnu/usr.bin/perl/README.haiku @@ -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 diff --git a/gnu/usr.bin/perl/README.macosx b/gnu/usr.bin/perl/README.macosx index 5797303db05..cd558a0bb4f 100644 --- a/gnu/usr.bin/perl/README.macosx +++ b/gnu/usr.bin/perl/README.macosx @@ -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', diff --git a/gnu/usr.bin/perl/README.os2 b/gnu/usr.bin/perl/README.os2 index 86324c19b44..da4d2e65bdf 100644 --- a/gnu/usr.bin/perl/README.os2 +++ b/gnu/usr.bin/perl/README.os2 @@ -619,7 +619,7 @@ C in F, 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), you diff --git a/gnu/usr.bin/perl/README.vms b/gnu/usr.bin/perl/README.vms index 365705fe716..9b5fba24329 100644 --- a/gnu/usr.bin/perl/README.vms +++ b/gnu/usr.bin/perl/README.vms @@ -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. diff --git a/gnu/usr.bin/perl/cop.h b/gnu/usr.bin/perl/cop.h index 37980f04bdd..cb2b42af216 100644 --- a/gnu/usr.bin/perl/cop.h +++ b/gnu/usr.bin/perl/cop.h @@ -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; \ diff --git a/gnu/usr.bin/perl/cpan/OpenBSD-MkTemp/t/OpenBSD-MkTemp.t b/gnu/usr.bin/perl/cpan/OpenBSD-MkTemp/t/OpenBSD-MkTemp.t index 143d80d2cec..70d78ce927d 100644 --- a/gnu/usr.bin/perl/cpan/OpenBSD-MkTemp/t/OpenBSD-MkTemp.t +++ b/gnu/usr.bin/perl/cpan/OpenBSD-MkTemp/t/OpenBSD-MkTemp.t @@ -10,6 +10,7 @@ use warnings; use Test::More; use Errno; +use FileHandle; use Scalar::Util qw( openhandle ); BEGIN { use_ok('OpenBSD::MkTemp') }; diff --git a/gnu/usr.bin/perl/cpan/OpenBSD-Pledge/lib/OpenBSD/Pledge.pm b/gnu/usr.bin/perl/cpan/OpenBSD-Pledge/lib/OpenBSD/Pledge.pm index 129a77d2a0c..0882e13c689 100644 --- a/gnu/usr.bin/perl/cpan/OpenBSD-Pledge/lib/OpenBSD/Pledge.pm +++ b/gnu/usr.bin/perl/cpan/OpenBSD-Pledge/lib/OpenBSD/Pledge.pm @@ -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. L -L +L =head1 AUTHOR diff --git a/gnu/usr.bin/perl/cpan/OpenBSD-Pledge/t/OpenBSD-Pledge.t b/gnu/usr.bin/perl/cpan/OpenBSD-Pledge/t/OpenBSD-Pledge.t index 1a3791a7998..6068f774dc9 100644 --- a/gnu/usr.bin/perl/cpan/OpenBSD-Pledge/t/OpenBSD-Pledge.t +++ b/gnu/usr.bin/perl/cpan/OpenBSD-Pledge/t/OpenBSD-Pledge.t @@ -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 ) { diff --git a/gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm b/gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm index 9c502d359dc..8ae97e2285c 100644 --- a/gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm +++ b/gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm @@ -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, diff --git a/gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL b/gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL index 32989136f92..4c97e22a897 100644 --- a/gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL +++ b/gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL @@ -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#; $_; } diff --git a/gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs b/gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs index 29c83b9ad4b..e4c70ca203a 100644 --- a/gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs +++ b/gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs @@ -18,7 +18,7 @@ Maintained by Jonathan Stowe - $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 diff --git a/gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl b/gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl index 359e75bad08..efbc866a14b 100644 --- a/gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl +++ b/gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl @@ -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; diff --git a/gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl b/gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl index 696c55b929c..0ea0fc37358 100644 --- a/gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl +++ b/gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl @@ -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"; diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/Changes b/gnu/usr.bin/perl/dist/Module-CoreList/Changes index 323b4c86445..70a96e649bd 100644 --- a/gnu/usr.bin/perl/dist/Module-CoreList/Changes +++ b/gnu/usr.bin/perl/dist/Module-CoreList/Changes @@ -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 diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm index 54725c87fc4..d50e7c5ab4b 100644 --- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm +++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm @@ -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, diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod index edc00ec9feb..d8807bf8b44 100644 --- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod +++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod @@ -73,8 +73,11 @@ you may provide a list of perl versions to limit the regex search. =item C -Takes a perl version as an argument. Returns that perl version if it exists or C -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 'File::Path') shipped with that version of perl and a value +which is the version number (I '2.09') of that module which shipped +with that version of perl . Returns C otherwise. =item C @@ -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 +Returns the first perl version where the MODULE was marked as deprecated. Returns C if the MODULE has not been marked as deprecated. =item C diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm index eb769f3070a..b715bfde367 100644 --- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm +++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm @@ -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) = @_; diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm index b9fde3e27a2..350c917e125 100644 --- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm +++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm @@ -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) { diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t b/gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t index c129584a07f..db09f48f4ed 100755 --- a/gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t +++ b/gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t @@ -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"); diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t b/gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t index 869aa37fb67..cc06a218318 100644 --- a/gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t +++ b/gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t @@ -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"); diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t b/gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t index 48224958c0d..d42a15878ce 100644 --- a/gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t +++ b/gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t @@ -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' ); diff --git a/gnu/usr.bin/perl/embed.fnc b/gnu/usr.bin/perl/embed.fnc index 88f03c21200..1eec6b11153 100644 --- a/gnu/usr.bin/perl/embed.fnc +++ b/gnu/usr.bin/perl/embed.fnc @@ -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 diff --git a/gnu/usr.bin/perl/embed.h b/gnu/usr.bin/perl/embed.h index a6e3b9d1820..6f773f62687 100644 --- a/gnu/usr.bin/perl/embed.h +++ b/gnu/usr.bin/perl/embed.h @@ -877,6 +877,7 @@ #define regprop(a,b,c,d) Perl_regprop(aTHX_ a,b,c,d) #define report_uninit(a) Perl_report_uninit(aTHX_ a) #define sv_magicext_mglob(a) Perl_sv_magicext_mglob(aTHX_ a) +#define sv_only_taint_gmagic S_sv_only_taint_gmagic #define validate_proto(a,b,c) Perl_validate_proto(aTHX_ a,b,c) #define vivify_defelem(a) Perl_vivify_defelem(aTHX_ a) #define yylex() Perl_yylex(aTHX) diff --git a/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL b/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL index cfab893b495..f82c091bef1 100644 --- a/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL +++ b/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL @@ -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"; } diff --git a/gnu/usr.bin/perl/gv.c b/gnu/usr.bin/perl/gv.c index ce6847842c7..6b17ae2bb48 100644 --- a/gnu/usr.bin/perl/gv.c +++ b/gnu/usr.bin/perl/gv.c @@ -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; diff --git a/gnu/usr.bin/perl/hints/catamount.sh b/gnu/usr.bin/perl/hints/catamount.sh index 572a6a79bbf..6c09353c710 100644 --- a/gnu/usr.bin/perl/hints/catamount.sh +++ b/gnu/usr.bin/perl/hints/catamount.sh @@ -31,11 +31,11 @@ # mkdir -p /opt/perl-catamount # mkdir -p /opt/perl-catamount/include # mkdir -p /opt/perl-catamount/lib -# mkdir -p /opt/perl-catamount/lib/perl5/5.20.2 +# mkdir -p /opt/perl-catamount/lib/perl5/5.20.3 # mkdir -p /opt/perl-catamount/bin # cp *.h /opt/perl-catamount/include # cp libperl.a /opt/perl-catamount/lib -# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.20.2 +# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.20.3 # cp miniperl perl run.sh cc.sh /opt/perl-catamount/lib # # With the headers and the libperl.a you can embed Perl to your Catamount diff --git a/gnu/usr.bin/perl/hints/darwin.sh b/gnu/usr.bin/perl/hints/darwin.sh index 276695ad602..e1f20af37ab 100644 --- a/gnu/usr.bin/perl/hints/darwin.sh +++ b/gnu/usr.bin/perl/hints/darwin.sh @@ -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 diff --git a/gnu/usr.bin/perl/hints/os390.sh b/gnu/usr.bin/perl/hints/os390.sh index 5aafb4e78aa..892d36d3918 100644 --- a/gnu/usr.bin/perl/hints/os390.sh +++ b/gnu/usr.bin/perl/hints/os390.sh @@ -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 diff --git a/gnu/usr.bin/perl/hv.c b/gnu/usr.bin/perl/hv.c index ef686ab704c..fe4947b8cdd 100644 --- a/gnu/usr.bin/perl/hv.c +++ b/gnu/usr.bin/perl/hv.c @@ -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; } diff --git a/gnu/usr.bin/perl/hv_func.h b/gnu/usr.bin/perl/hv_func.h index 191912a6cc7..d2747626e9b 100644 --- a/gnu/usr.bin/perl/hv_func.h +++ b/gnu/usr.bin/perl/hv_func.h @@ -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); diff --git a/gnu/usr.bin/perl/inline.h b/gnu/usr.bin/perl/inline.h index 0fe8a0eee1a..916f5571ca8 100644 --- a/gnu/usr.bin/perl/inline.h +++ b/gnu/usr.bin/perl/inline.h @@ -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 diff --git a/gnu/usr.bin/perl/intrpvar.h b/gnu/usr.bin/perl/intrpvar.h index 08c4a382224..9e1fdb60a66 100644 --- a/gnu/usr.bin/perl/intrpvar.h +++ b/gnu/usr.bin/perl/intrpvar.h @@ -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. */ diff --git a/gnu/usr.bin/perl/lib/h2ph.t b/gnu/usr.bin/perl/lib/h2ph.t index 2b58f6adae9..64d9dc080f4 100644 --- a/gnu/usr.bin/perl/lib/h2ph.t +++ b/gnu/usr.bin/perl/lib/h2ph.t @@ -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); diff --git a/gnu/usr.bin/perl/lib/perl5db.pl b/gnu/usr.bin/perl/lib/perl5db.pl index 707d04d6396..847461108f6 100644 --- a/gnu/usr.bin/perl/lib/perl5db.pl +++ b/gnu/usr.bin/perl/lib/perl5db.pl @@ -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(\[$@%]) {}; } } diff --git a/gnu/usr.bin/perl/locale.c b/gnu/usr.bin/perl/locale.c index 27225f3d1a7..29cdbbeddf5 100644 --- a/gnu/usr.bin/perl/locale.c +++ b/gnu/usr.bin/perl/locale.c @@ -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; } diff --git a/gnu/usr.bin/perl/mg.c b/gnu/usr.bin/perl/mg.c index 4158f1a25ac..01b3cdc632c 100644 --- a/gnu/usr.bin/perl/mg.c +++ b/gnu/usr.bin/perl/mg.c @@ -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); diff --git a/gnu/usr.bin/perl/mg.h b/gnu/usr.bin/perl/mg.h index 81ed296f8a2..cd5c647bbf6 100644 --- a/gnu/usr.bin/perl/mg.h +++ b/gnu/usr.bin/perl/mg.h @@ -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)) \ diff --git a/gnu/usr.bin/perl/op.c b/gnu/usr.bin/perl/op.c index 7337f23c8eb..7038526215b 100644 --- a/gnu/usr.bin/perl/op.c +++ b/gnu/usr.bin/perl/op.c @@ -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; diff --git a/gnu/usr.bin/perl/op.h b/gnu/usr.bin/perl/op.h index 9d9dd58d8fa..ff45354ae25 100644 --- a/gnu/usr.bin/perl/op.h +++ b/gnu/usr.bin/perl/op.h @@ -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 *o, Optype type +=for apidoc Am|bool|OP_TYPE_IS|OP *o|Optype type Returns true if the given OP is not a NULL pointer and if it is of the given type. @@ -1013,7 +1013,7 @@ The negation of this macro, C is also available as well as C and C which elide the NULL pointer check. -=for apidoc Am|bool|OP_TYPE_IS_OR_WAS|OP *o, Optype type +=for apidoc Am|bool|OP_TYPE_IS_OR_WAS|OP *o|Optype type Returns true if the given OP is not a NULL pointer and if it is of the given type or used to be before being replaced by an OP of type OP_NULL. diff --git a/gnu/usr.bin/perl/pad.c b/gnu/usr.bin/perl/pad.c index fed28922ed1..f22c3c526ae 100644 --- a/gnu/usr.bin/perl/pad.c +++ b/gnu/usr.bin/perl/pad.c @@ -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, diff --git a/gnu/usr.bin/perl/patchlevel.h b/gnu/usr.bin/perl/patchlevel.h index dee7024726a..7f8cc307cba 100644 --- a/gnu/usr.bin/perl/patchlevel.h +++ b/gnu/usr.bin/perl/patchlevel.h @@ -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 diff --git a/gnu/usr.bin/perl/perl.c b/gnu/usr.bin/perl/perl.c index 1c2588bf6c9..432cc3d46c0 100644 --- a/gnu/usr.bin/perl/perl.c +++ b/gnu/usr.bin/perl/perl.c @@ -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') { diff --git a/gnu/usr.bin/perl/plan9/config.plan9 b/gnu/usr.bin/perl/plan9/config.plan9 index 7f860f9a885..0d540a07f68 100644 --- a/gnu/usr.bin/perl/plan9/config.plan9 +++ b/gnu/usr.bin/perl/plan9/config.plan9 @@ -3373,8 +3373,8 @@ * This symbol contains the ~name expanded version of PRIVLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define PRIVLIB "/sys/lib/perl/5.20.2" /**/ -#define PRIVLIB_EXP "/sys/lib/perl/5.20.2" /**/ +#define PRIVLIB "/sys/lib/perl/5.20.3" /**/ +#define PRIVLIB_EXP "/sys/lib/perl/5.20.3" /**/ /* PTRSIZE: * This symbol contains the size of a pointer, so that the C preprocessor @@ -3501,9 +3501,9 @@ * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "/sys/lib/perl/5.20.2/site_perl" /**/ -#define SITELIB_EXP "/sys/lib/perl/5.20.2/site_perl" /**/ -#define SITELIB_STEM "/sys/lib/perl/5.20.2/site_perl" /**/ +#define SITELIB "/sys/lib/perl/5.20.3/site_perl" /**/ +#define SITELIB_EXP "/sys/lib/perl/5.20.3/site_perl" /**/ +#define SITELIB_STEM "/sys/lib/perl/5.20.3/site_perl" /**/ /* Size_t_size: * This symbol holds the size of a Size_t in bytes. diff --git a/gnu/usr.bin/perl/plan9/config_sh.sample b/gnu/usr.bin/perl/plan9/config_sh.sample index ea1d853f464..26897c41cc3 100644 --- a/gnu/usr.bin/perl/plan9/config_sh.sample +++ b/gnu/usr.bin/perl/plan9/config_sh.sample @@ -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 diff --git a/gnu/usr.bin/perl/pod/perl.pod b/gnu/usr.bin/perl/pod/perl.pod index f8f768146d8..e0f121b832b 100644 --- a/gnu/usr.bin/perl/pod/perl.pod +++ b/gnu/usr.bin/perl/pod/perl.pod @@ -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 index 00000000000..98707fde03d --- /dev/null +++ b/gnu/usr.bin/perl/pod/perl5202delta.pod @@ -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, 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 +below. + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +L has been upgraded from version 0.22 to 0.23. + +The usage of C in the XS has been corrected. +L<[perl #122701]|https://rt.perl.org/Ticket/Display.html?id=122701> + +=item * + +L 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 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 has been upgraded from version 1.36 to 1.36_01. + +The C 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 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 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 compiler is now avoided when building the XS. + +=item * + +L 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 on a C handle now properly returns true when the file +position is past the 2GB mark on 32-bit systems. + +=item * + +L has been upgraded from version 2.49 to 2.49_01. + +Minor grammatical change to the documentation only. + +=item * + +L has been upgraded from version 1.05 to 1.05_01. + +Minor formatting change to the documentation only. + +=item * + +L 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 + +This document, by Tom Christiansen, provides examples of handling Unicode in +Perl. + +=head2 Changes to Existing Documentation + +=head3 L + +=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 + +=over 4 + +=item * + +The process whereby features may graduate from experimental status has now been +formally documented. + +=back + +=head3 L + +=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. + +=head2 Changes to Existing Diagnostics + +=over 4 + +=item * + +L is now documented. +This error is not new, but was not previously documented here. + +=item * + +L is now +documented. This error is not new, but was not previously documented here. + +=back + +=head1 Testing + +=over 4 + +=item * + +The test script F has been added to verify that +L remains +fixed. + +=back + +=head1 Platform Support + +=head2 Regained Platforms + +IRIX and Tru64 platforms are working again. (Some C 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 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 Ced +in a parent pseudo-process before the C 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 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 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>), 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 no longer dies with "Bizarre copy of ARRAY". +L<[perl #123344]|https://rt.perl.org/Ticket/Display.html?id=123344> + +=item * + +C 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 case in +pp_formline() didn't set the pointer used to mark the chop position, which led +to the C 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 +argument to C. 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 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 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, +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 file for an explanation of how to view exhaustive details on +what changed. + +The F file for how to build Perl. + +The F file for general stuff. + +The F and F files for copyright information. + +=cut diff --git a/gnu/usr.bin/perl/pod/perlclib.pod b/gnu/usr.bin/perl/pod/perlclib.pod index 0cdee249119..2e2078439dc 100644 --- a/gnu/usr.bin/perl/pod/perlclib.pod +++ b/gnu/usr.bin/perl/pod/perlclib.pod @@ -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 diff --git a/gnu/usr.bin/perl/pod/perldelta.pod b/gnu/usr.bin/perl/pod/perldelta.pod index a339f3d3bd1..3aa81ec2db9 100644 --- a/gnu/usr.bin/perl/pod/perldelta.pod +++ b/gnu/usr.bin/perl/pod/perldelta.pod @@ -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, 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, 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 below. @@ -26,346 +26,243 @@ below. =item * -L has been upgraded from version 0.22 to 0.23. +L has been upgraded from version 1.20_05 to 1.20_06. -The usage of C 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 has been upgraded from version 2.151 to 2.151_01. +L 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 has been upgraded from version 1.20_03 to 1.20_05. +L 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 has been upgraded from version 1.36 to 1.36_01. - -The C 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 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 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 compiler is now avoided when building the XS. - -=item * - -L 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 on a C handle now properly returns true when the file -position is past the 2GB mark on 32-bit systems. - -=item * - -L has been upgraded from version 2.49 to 2.49_01. - -Minor grammatical change to the documentation only. - -=item * - -L has been upgraded from version 1.05 to 1.05_01. - -Minor formatting change to the documentation only. - -=item * - -L 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 - -This document, by Tom Christiansen, provides examples of handling Unicode in -Perl. - =head2 Changes to Existing Documentation -=head3 L +=head3 L =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|perlfunc/study> is currently a no-op. =back -=head3 L +=head3 L =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 +=head3 L =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. - -=head2 Changes to Existing Diagnostics +=head3 L =over 4 =item * -L is now documented. -This error is not new, but was not previously documented here. - -=item * - -L 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 =over 4 =item * -The test script F has been added to verify that -L remains -fixed. +B 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 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 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 has been added to test that L 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 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. 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 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 Ced -in a parent pseudo-process before the C 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 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 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>|perlvar/$E> 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>), 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 would crash. This has +been fixed. +L<[perl #123652]|https://rt.perl.org/Ticket/Display.html?id=123652> =item * -C 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 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. +L<[perl #124109]|https://rt.perl.org/Ticket/Display.html?id=124109> =item * -C<< formline("@...", "a"); >> would crash. The C case in -pp_formline() didn't set the pointer used to mark the chop position, which led -to the C 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 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 (with one argument) was accidentally changed in Perl 5.16 +to mean C. This has been fixed. =item * -It is a known bug that lexical subroutines cannot be used as the C -argument to C. 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. +CIC<{>I,IC<}+>C is supposed to behave identically to +C>IC<{>I,IC<})/>. Since Perl 5.20, this didn't work +if I and I 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 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 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 program included with your release. Be sure to trim your bug down to a tiny but diff --git a/gnu/usr.bin/perl/pod/perlfunc.pod b/gnu/usr.bin/perl/pod/perlfunc.pod index 802b9908068..272a6cd0a6d 100644 --- a/gnu/usr.bin/perl/pod/perlfunc.pod +++ b/gnu/usr.bin/perl/pod/perlfunc.pod @@ -7671,14 +7671,18 @@ X =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 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, diff --git a/gnu/usr.bin/perl/pod/perlguts.pod b/gnu/usr.bin/perl/pod/perlguts.pod index d845010e7b2..61468bc5170 100644 --- a/gnu/usr.bin/perl/pod/perlguts.pod +++ b/gnu/usr.bin/perl/pod/perlguts.pod @@ -323,22 +323,40 @@ Hence, at this point, the start of the buffer that we allocated lives at C 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 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 and C 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 diff --git a/gnu/usr.bin/perl/pod/perlhacktips.pod b/gnu/usr.bin/perl/pod/perlhacktips.pod index f2f2e6c32da..5544b5d2d27 100644 --- a/gnu/usr.bin/perl/pod/perlhacktips.pod +++ b/gnu/usr.bin/perl/pod/perlhacktips.pod @@ -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 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 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 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-terminated; otherwise +you have to pass its length to C. + =back =head2 Problematic System Interfaces diff --git a/gnu/usr.bin/perl/pod/perlhist.pod b/gnu/usr.bin/perl/pod/perlhist.pod index 7afc2fc4d3e..58b006b4b37 100644 --- a/gnu/usr.bin/perl/pod/perlhist.pod +++ b/gnu/usr.bin/perl/pod/perlhist.pod @@ -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 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 diff --git a/gnu/usr.bin/perl/pod/perlpod.pod b/gnu/usr.bin/perl/pod/perlpod.pod index 2f531f9c161..12b156b72d8 100644 --- a/gnu/usr.bin/perl/pod/perlpod.pod +++ b/gnu/usr.bin/perl/pod/perlpod.pod @@ -282,11 +282,15 @@ be for formatting as a footnote). X<=encoding> X 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> 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> command very early in the document so that pod formatters will know how to decode the document. For I, use a name recognized by the L -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 diff --git a/gnu/usr.bin/perl/pod/perlpodspec.pod b/gnu/usr.bin/perl/pod/perlpodspec.pod index 67f74b629b9..f2af63e2c67 100644 --- a/gnu/usr.bin/perl/pod/perlpodspec.pod +++ b/gnu/usr.bin/perl/pod/perlpodspec.pod @@ -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 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 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 diff --git a/gnu/usr.bin/perl/pod/perlpolicy.pod b/gnu/usr.bin/perl/pod/perlpolicy.pod index c6e0bbd755f..779ccffab6f 100644 --- a/gnu/usr.bin/perl/pod/perlpolicy.pod +++ b/gnu/usr.bin/perl/pod/perlpolicy.pod @@ -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 diff --git a/gnu/usr.bin/perl/pod/perlunicook.pod b/gnu/usr.bin/perl/pod/perlunicook.pod index 44a45712879..3e5496ec0cb 100644 --- a/gnu/usr.bin/perl/pod/perlunicook.pod +++ b/gnu/usr.bin/perl/pod/perlunicook.pod @@ -33,7 +33,8 @@ This I make even Unix programmers C your binary streams, or open them with C<:raw>, but that's the only way to get at them portably anyway. -B: C and C do not get along with each other. +B: C (pre 2.26) and C 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 diff --git a/gnu/usr.bin/perl/pp_sys.c b/gnu/usr.bin/perl/pp_sys.c index 9de4dfff79c..967b1dd0696 100644 --- a/gnu/usr.bin/perl/pp_sys.c +++ b/gnu/usr.bin/perl/pp_sys.c @@ -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); diff --git a/gnu/usr.bin/perl/proto.h b/gnu/usr.bin/perl/proto.h index 6532ba8afa2..96003a8b08a 100644 --- a/gnu/usr.bin/perl/proto.h +++ b/gnu/usr.bin/perl/proto.h @@ -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); diff --git a/gnu/usr.bin/perl/regcomp.c b/gnu/usr.bin/perl/regcomp.c index 573072aa28d..606b3373b30 100644 --- a/gnu/usr.bin/perl/regcomp.c +++ b/gnu/usr.bin/perl/regcomp.c @@ -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 diff --git a/gnu/usr.bin/perl/regen/lib_cleanup.pl b/gnu/usr.bin/perl/regen/lib_cleanup.pl index c9d6e434bd4..d43b4b222f8 100644 --- a/gnu/usr.bin/perl/regen/lib_cleanup.pl +++ b/gnu/usr.bin/perl/regen/lib_cleanup.pl @@ -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: $!"; diff --git a/gnu/usr.bin/perl/regexec.c b/gnu/usr.bin/perl/regexec.c index 53c1065ce16..ee6705aebc5 100644 --- a/gnu/usr.bin/perl/regexec.c +++ b/gnu/usr.bin/perl/regexec.c @@ -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); diff --git a/gnu/usr.bin/perl/sv.c b/gnu/usr.bin/perl/sv.c index af393bdeabe..06db7d9b2c5 100644 --- a/gnu/usr.bin/perl/sv.c +++ b/gnu/usr.bin/perl/sv.c @@ -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 { diff --git a/gnu/usr.bin/perl/sv.h b/gnu/usr.bin/perl/sv.h index b129225bd3c..15163e439c0 100644 --- a/gnu/usr.bin/perl/sv.h +++ b/gnu/usr.bin/perl/sv.h @@ -792,13 +792,18 @@ C instead of the lvalue assignment to C. Set the value of the NV pointer in sv to val. See C. =for apidoc Am|void|SvPV_set|SV* sv|char* val -Set the value of the PV pointer in C to the C-terminated string -C. See also C. +This is probably not what you want to use, you probably wanted +L or L or L. +Set the value of the PV pointer in C to the Perl allocated +C-terminated string C. See also C. + +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 and use C or C (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 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. diff --git a/gnu/usr.bin/perl/t/base/lex.t b/gnu/usr.bin/perl/t/base/lex.t index 01ab2088b04..3c612ec9e52 100644 --- a/gnu/usr.bin/perl/t/base/lex.t +++ b/gnu/usr.bin/perl/t/base/lex.t @@ -434,3 +434,6 @@ print "ok $test - y ...\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}; diff --git a/gnu/usr.bin/perl/t/base/rs.t b/gnu/usr.bin/perl/t/base/rs.t index 416696e9f59..8e84ad04171 100644 --- a/gnu/usr.bin/perl/t/base/rs.t +++ b/gnu/usr.bin/perl/t/base/rs.t @@ -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') { diff --git a/gnu/usr.bin/perl/t/comp/parser.t b/gnu/usr.bin/perl/t/comp/parser.t index 584a473f62b..755b5c52790 100644 --- a/gnu/usr.bin/perl/t/comp/parser.t +++ b/gnu/usr.bin/perl/t/comp/parser.t @@ -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} diff --git a/gnu/usr.bin/perl/t/lib/feature/bundle b/gnu/usr.bin/perl/t/lib/feature/bundle index 429e68ebd02..a40aba4a13b 100644 --- a/gnu/usr.bin/perl/t/lib/feature/bundle +++ b/gnu/usr.bin/perl/t/lib/feature/bundle @@ -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" diff --git a/gnu/usr.bin/perl/t/lib/warnings/toke b/gnu/usr.bin/perl/t/lib/warnings/toke index 92e94adf83a..c880f079922 100644 --- a/gnu/usr.bin/perl/t/lib/warnings/toke +++ b/gnu/usr.bin/perl/t/lib/warnings/toke @@ -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 = < 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[/< 1 }, + '/$a[/< 1 }, + '/$a[m||/< 1 }, + '"@{" [perl #123712]' +); diff --git a/gnu/usr.bin/perl/t/op/sub.t b/gnu/usr.bin/perl/t/op/sub.t index 7df8f49aaba..fe5353c5ac9 100644 --- a/gnu/usr.bin/perl/t/op/sub.t +++ b/gnu/usr.bin/perl/t/op/sub.t @@ -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"); +} diff --git a/gnu/usr.bin/perl/t/op/taint.t b/gnu/usr.bin/perl/t/op/taint.t index 717005277e8..04b8d13c991 100644 --- a/gnu/usr.bin/perl/t/op/taint.t +++ b/gnu/usr.bin/perl/t/op/taint.t @@ -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); diff --git a/gnu/usr.bin/perl/t/op/threads.t b/gnu/usr.bin/perl/t/op/threads.t index 6fb2410888c..e76c9568c76 100755 --- a/gnu/usr.bin/perl/t/op/threads.t +++ b/gnu/usr.bin/perl/t/op/threads.t @@ -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 index 00000000000..386d97e58b9 --- /dev/null +++ b/gnu/usr.bin/perl/t/perf/taint.t @@ -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; diff --git a/gnu/usr.bin/perl/t/porting/customized.dat b/gnu/usr.bin/perl/t/porting/customized.dat index aa8bb700d2b..530963becd9 100644 --- a/gnu/usr.bin/perl/t/porting/customized.dat +++ b/gnu/usr.bin/perl/t/porting/customized.dat @@ -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 index 00000000000..5467b93ba67 --- /dev/null +++ b/gnu/usr.bin/perl/t/porting/re_context.t @@ -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; diff --git a/gnu/usr.bin/perl/t/re/pat_advanced.t b/gnu/usr.bin/perl/t/re/pat_advanced.t index 4fd9f911365..77a0f0e6fcd 100755 --- a/gnu/usr.bin/perl/t/re/pat_advanced.t +++ b/gnu/usr.bin/perl/t/re/pat_advanced.t @@ -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" diff --git a/gnu/usr.bin/perl/t/re/re_tests b/gnu/usr.bin/perl/t/re/re_tests index d883add8f0f..11c4125070d 100644 --- a/gnu/usr.bin/perl/t/re/re_tests +++ b/gnu/usr.bin/perl/t/re/re_tests @@ -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 diff --git a/gnu/usr.bin/perl/t/re/reg_mesg.t b/gnu/usr.bin/perl/t/re/reg_mesg.t index 55eda189da9..77f7aa10d4c 100755 --- a/gnu/usr.bin/perl/t/re/reg_mesg.t +++ b/gnu/usr.bin/perl/t/re/reg_mesg.t @@ -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( diff --git a/gnu/usr.bin/perl/t/run/switchd.t b/gnu/usr.bin/perl/t/run/switchd.t index d24d98b54b8..d72faa1e0a4 100644 --- a/gnu/usr.bin/perl/t/run/switchd.t +++ b/gnu/usr.bin/perl/t/run/switchd.t @@ -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', +); +} diff --git a/gnu/usr.bin/perl/toke.c b/gnu/usr.bin/perl/toke.c index 906d56c100a..50e2d59197a 100644 --- a/gnu/usr.bin/perl/toke.c +++ b/gnu/usr.bin/perl/toke.c @@ -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"); diff --git a/gnu/usr.bin/perl/util.c b/gnu/usr.bin/perl/util.c index 5e0f788a349..17882b2e0e3 100644 --- a/gnu/usr.bin/perl/util.c +++ b/gnu/usr.bin/perl/util.c @@ -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); diff --git a/gnu/usr.bin/perl/utils/h2ph.PL b/gnu/usr.bin/perl/utils/h2ph.PL index 15a0fe429e4..5da4a59a18c 100644 --- a/gnu/usr.bin/perl/utils/h2ph.PL +++ b/gnu/usr.bin/perl/utils/h2ph.PL @@ -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}) { diff --git a/gnu/usr.bin/perl/vms/descrip_mms.template b/gnu/usr.bin/perl/vms/descrip_mms.template index 309ffab4736..992d4ac9fdd 100644 --- a/gnu/usr.bin/perl/vms/descrip_mms.template +++ b/gnu/usr.bin/perl/vms/descrip_mms.template @@ -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) diff --git a/gnu/usr.bin/perl/win32/Makefile b/gnu/usr.bin/perl/win32/Makefile index 0385b07c71a..d48adc7910a 100644 --- a/gnu/usr.bin/perl/win32/Makefile +++ b/gnu/usr.bin/perl/win32/Makefile @@ -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 \ diff --git a/gnu/usr.bin/perl/win32/config_H.gc b/gnu/usr.bin/perl/win32/config_H.gc index da310afd6f2..d64fd9f65cd 100644 --- a/gnu/usr.bin/perl/win32/config_H.gc +++ b/gnu/usr.bin/perl/win32/config_H.gc @@ -1973,7 +1973,9 @@ * available to exclusively create and open a uniquely named * temporary file. */ -/*#define HAS_MKSTEMP / **/ +#if __MINGW64_VERSION_MAJOR >= 4 +#define HAS_MKSTEMP +#endif /* HAS_MMAP: * This symbol, if defined, indicates that the mmap system call is diff --git a/gnu/usr.bin/perl/win32/makefile.mk b/gnu/usr.bin/perl/win32/makefile.mk index 757e087394d..4a74303ada1 100644 --- a/gnu/usr.bin/perl/win32/makefile.mk +++ b/gnu/usr.bin/perl/win32/makefile.mk @@ -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 \ diff --git a/gnu/usr.bin/perl/win32/pod.mak b/gnu/usr.bin/perl/win32/pod.mak index 1f9593a529c..67ebbf40d28 100644 --- a/gnu/usr.bin/perl/win32/pod.mak +++ b/gnu/usr.bin/perl/win32/pod.mak @@ -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 \ diff --git a/gnu/usr.bin/perl/win32/win32.c b/gnu/usr.bin/perl/win32/win32.c index 5a112ef6b14..dfc57cefc04 100644 --- a/gnu/usr.bin/perl/win32/win32.c +++ b/gnu/usr.bin/perl/win32/win32.c @@ -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) diff --git a/gnu/usr.bin/perl/win32/win32.h b/gnu/usr.bin/perl/win32/win32.h index 735c4503e27..13db6615cd7 100644 --- a/gnu/usr.bin/perl/win32/win32.h +++ b/gnu/usr.bin/perl/win32/win32.h @@ -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 -- 2.20.1