Imported Upstream version 5.25.12 53/136053/1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Wed, 28 Jun 2017 01:52:11 +0000 (10:52 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Wed, 28 Jun 2017 01:52:16 +0000 (10:52 +0900)
Change-Id: Ib7dd566043733a478c87169b91198b48ef9af3b9
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
152 files changed:
Cross/config.sh-arm-linux
Cross/config.sh-arm-linux-n770
INSTALL
MANIFEST
META.json
META.yml
Makefile.SH
NetWare/Makefile
NetWare/config_H.wc
Porting/Maintainers.pl
Porting/bench.pl
Porting/config.sh
Porting/config_H
Porting/epigraphs.pod
Porting/harness-timer-report.pl
Porting/how_to_write_a_perldelta.pod
Porting/manisort
Porting/pumpkin.pod
Porting/release_managers_guide.pod
Porting/release_schedule.pod
Porting/todo.pod
README.aix
README.freebsd
README.haiku
README.hurd
README.jp
README.macosx
README.os2
README.os390
README.vms
TestInit.pm
cpan/CPAN/lib/CPAN.pm
cpan/CPAN/lib/CPAN/Bundle.pm
cpan/CPAN/lib/CPAN/Distribution.pm
dist/ExtUtils-ParseXS/t/001-basic.t
dist/ExtUtils-ParseXS/t/002-more.t
dist/ExtUtils-ParseXS/t/003-usage.t
dist/Module-CoreList/Changes
dist/Module-CoreList/lib/Module/CoreList.pm
dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
dist/Module-CoreList/lib/Module/CoreList/Utils.pm
dist/Module-CoreList/t/is_core.t
dist/Net-Ping/t/510_ping_udp.t
dist/Safe/Safe.pm
dist/Safe/t/safe3.t
dist/Time-HiRes/Makefile.PL
dist/Time-HiRes/t/alarm.t
dist/Time-HiRes/t/clock.t
dist/Time-HiRes/t/gettimeofday.t
dist/Time-HiRes/t/itimer.t
dist/Time-HiRes/t/nanosleep.t
dist/Time-HiRes/t/sleep.t
dist/Time-HiRes/t/stat.t
dist/Time-HiRes/t/time.t
dist/Time-HiRes/t/ualarm.t
dist/Time-HiRes/t/usleep.t
dist/Time-HiRes/t/utime.t
dist/Unicode-Normalize/Makefile.PL
dist/XSLoader/XSLoader_pm.PL
dist/base/lib/base.pm
dist/base/t/base-open-chunk.t
dist/base/t/base-open-line.t
dist/base/t/incdot.t [deleted file]
dist/threads-shared/lib/threads/shared.pm
dist/threads-shared/shared.xs
dist/threads-shared/t/object2.t
doop.c
ext/DynaLoader/DynaLoader_pm.PL
ext/Pod-Html/t/crossref.t
ext/Pod-Html/t/crossref2.t
ext/Pod-Html/t/crossref3.t
ext/Pod-Html/t/feature.t
ext/Pod-Html/t/feature2.t
ext/Pod-Html/t/htmldir1.t
ext/Pod-Html/t/htmldir2.t
ext/Pod-Html/t/htmldir3.t
ext/Pod-Html/t/htmldir4.t
ext/Pod-Html/t/htmldir5.t
ext/Pod-Html/t/htmlescp.t
ext/Pod-Html/t/htmllink.t
ext/Pod-Html/t/htmlview.t
ext/Pod-Html/t/poderr.t
ext/Pod-Html/t/podnoerr.t
ext/XS-APItest/APItest_BS [new file with mode: 0644]
ext/XS-APItest/t/blockhooks.t
ext/XS-APItest/t/bootstrap.t [new file with mode: 0644]
ext/XS-APItest/t/labelconst.t
ext/arybase/t/scope.t
hints/catamount.sh
lib/B/Deparse.t
lib/B/Op_private.pm
mg.c
patchlevel.h
plan9/config.plan9
plan9/config_sh.sample
pod/.gitignore
pod/perl.pod
pod/perl52511delta.pod [new file with mode: 0644]
pod/perldelta.pod
pod/perldiag.pod
pod/perlembed.pod
pod/perlfilter.pod
pod/perlfunc.pod
pod/perlgit.pod
pod/perlhack.pod
pod/perlhacktips.pod
pod/perlhist.pod
pod/perlintro.pod
pod/perlmodinstall.pod
pod/perlmodstyle.pod
pod/perlnewmod.pod
pod/perlop.pod
pod/perlperf.pod
pod/perlpodstyle.pod
pod/perlre.pod
pod/perlreftut.pod
pod/perlreref.pod
pod/perlrun.pod
pod/perlthrtut.pod
pod/perlunicode.pod
pp.c
pp_ctl.c
regcharclass.h
regcomp.c
regen/regcharclass.pl
sv.c
sv.h
t/TEST
t/lib/warnings/pp_ctl
t/loc_tools.pl
t/op/range.t
t/op/require_errors.t
t/op/vec.t
t/porting/bench.t
t/porting/copyright.t
t/porting/customized.dat
t/porting/known_pod_issues.dat
t/re/reg_mesg.t
t/run/dtrace.t
t/run/runenv.t
t/thread_it.pl
t/uni/lower.t
t/uni/title.t
t/uni/upper.t
util.h
utils/libnetcfg.PL
vms/descrip_mms.template
win32/GNUmakefile
win32/Makefile
win32/ce-helpers/makedist.pl
win32/makefile.mk
win32/pod.mak

index 2d7c73a..04a61aa 100644 (file)
@@ -32,12 +32,12 @@ alignbytes='4'
 ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
-api_subversion='11'
+api_subversion='12'
 api_version='25'
-api_versionstring='5.25.11'
+api_versionstring='5.25.12'
 ar='ar'
-archlib='/usr/lib/perl5/5.25.11/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.25.11/armv4l-linux'
+archlib='/usr/lib/perl5/5.25.12/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.25.12/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.25.11/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.12/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'
@@ -826,7 +826,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.25.11/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.25.12/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -834,13 +834,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.25.11'
+installprivlib='./install_me_here/usr/lib/perl5/5.25.12'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.25.11/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.25.12/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.25.11'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.25.12'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -974,8 +974,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.25.11'
-privlibexp='/usr/lib/perl5/5.25.11'
+privlib='/usr/lib/perl5/5.25.12'
+privlibexp='/usr/lib/perl5/5.25.12'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -1040,17 +1040,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.25.11/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.25.11/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.25.12/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.25.12/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.25.11'
+sitelib='/usr/lib/perl5/site_perl/5.25.12'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.25.11'
+sitelibexp='/usr/lib/perl5/site_perl/5.25.12'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -1089,7 +1089,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='11'
+subversion='12'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1181,8 +1181,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.25.11'
-version_patchlevel_string='version 25 subversion 11'
+version='5.25.12'
+version_patchlevel_string='version 25 subversion 12'
 versiononly='undef'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1196,9 +1196,9 @@ config_args=''
 config_argc=0
 PERL_REVISION=5
 PERL_VERSION=25
-PERL_SUBVERSION=11
+PERL_SUBVERSION=12
 PERL_API_REVISION=5
 PERL_API_VERSION=25
-PERL_API_SUBVERSION=11
+PERL_API_SUBVERSION=12
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
index cf69fee..d3429fd 100644 (file)
@@ -32,12 +32,12 @@ alignbytes='4'
 ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
-api_subversion='11'
+api_subversion='12'
 api_version='25'
-api_versionstring='5.25.11'
+api_versionstring='5.25.12'
 ar='ar'
-archlib='/usr/lib/perl5/5.25.11/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.25.11/armv4l-linux'
+archlib='/usr/lib/perl5/5.25.12/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.25.12/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.25.11/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.12/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.25.11/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.25.12/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.25.11'
+installprivlib='./install_me_here/usr/lib/perl5/5.25.12'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.25.11/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.25.12/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.25.11'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.25.12'
 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.25.11'
-privlibexp='/usr/lib/perl5/5.25.11'
+privlib='/usr/lib/perl5/5.25.12'
+privlibexp='/usr/lib/perl5/5.25.12'
 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.25.11/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.25.11/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.25.12/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.25.12/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.25.11'
+sitelib='/usr/lib/perl5/site_perl/5.25.12'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.25.11'
+sitelibexp='/usr/lib/perl5/site_perl/5.25.12'
 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='11'
+subversion='12'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1035,8 +1035,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.25.11'
-version_patchlevel_string='version 25 subversion 11'
+version='5.25.12'
+version_patchlevel_string='version 25 subversion 12'
 versiononly='undef'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1050,9 +1050,9 @@ config_args=''
 config_argc=0
 PERL_REVISION=5
 PERL_VERSION=25
-PERL_SUBVERSION=11
+PERL_SUBVERSION=12
 PERL_API_REVISION=5
 PERL_API_VERSION=25
-PERL_API_SUBVERSION=11
+PERL_API_SUBVERSION=12
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
diff --git a/INSTALL b/INSTALL
index 1a01dd9..fc4a4bb 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -361,7 +361,7 @@ disabling them via environment variables.
 You can override various aspects of this feature by defining various
 symbols during configure. An example might be:
 
-    Configure -Accflags=-DPERL_HASH_FUNC_SIPHASH
+    sh Configure -Accflags=-DPERL_HASH_FUNC_SIPHASH
 
 B<Unless stated otherwise these options are considered experimental or
 insecure and are not recommended for production use.>
@@ -588,7 +588,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.25.11.
+By default, Configure will use the following directories for 5.25.12.
 $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
@@ -721,7 +721,7 @@ version-specific subdirectories) for add-on modules and extensions.
 For example, if you have a bundle of perl libraries from a previous
 installation, perhaps in a strange place:
 
-       Configure -Dotherlibdirs=/usr/lib/perl5/site_perl/5.8.1
+       sh Configure -Dotherlibdirs=/usr/lib/perl5/site_perl/5.8.1
 
 =item APPLLIB_EXP
 
@@ -740,6 +740,16 @@ present, at run time.  Of course, you can still search other @INC
 directories ahead of those in APPLLIB_EXP by using any of the standard
 run-time methods: $PERLLIB, $PERL5LIB, -I, use lib, etc.
 
+=item default_inc_excludes_dot
+
+Since version 5.25.12, default perl builds no longer includes C<'.'> as the
+last element of @INC. The old behaviour can restored using 
+
+       sh Configure -Udefault_inc_excludes_dot
+
+Note that this is likely to make programs run under such a perl
+interpreter less secure.
+
 =item usesitecustomize
 
 Run-time customization of @INC can be enabled with:
@@ -1684,7 +1694,7 @@ error, as the header file is broken. There are two ways to deal with this
 
  1. Disable the use of ODBM_FILE
 
-    Configure ... -Dnoextensions=ODBM_File
+    sh Configure ... -Dnoextensions=ODBM_File
 
  2. Fix the header file, somewhat like this:
 
@@ -2441,7 +2451,7 @@ http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
 
 =head1 Coexistence with earlier versions of perl 5
 
-Perl 5.25.11 is not binary compatible with earlier versions of Perl.
+Perl 5.25.12 is not binary compatible with earlier versions of Perl.
 In other words, you will have to recompile your XS modules.
 
 In general, you can usually safely upgrade from one version of Perl
@@ -2516,9 +2526,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.25.11
+       sh Configure -Dprefix=/opt/perl5.25.12
 
-and adding /opt/perl5.25.11/bin to the shell PATH variable.  Such users
+and adding /opt/perl5.25.12/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.
 
@@ -2533,11 +2543,11 @@ yet.
 
 =head2 Upgrading from 5.25.9 or earlier
 
-B<Perl 5.25.11 may not be binary compatible with Perl 5.25.9 or
+B<Perl 5.25.12 may not be binary compatible with Perl 5.25.9 or
 earlier Perl releases.>  Perl modules having binary parts
 (meaning that a C compiler is used) will have to be recompiled to be
-used with 5.25.11.  If you find you do need to rebuild an extension with
-5.25.11, you may safely do so without disturbing the older
+used with 5.25.12.  If you find you do need to rebuild an extension with
+5.25.12, you may safely do so without disturbing the older
 installations.  (See L<"Coexistence with earlier versions of perl 5">
 above.)
 
@@ -2570,15 +2580,15 @@ Firstly, the bare minimum to run this script
      print("$f\n");
   }
 
-in Linux with perl-5.25.11 is as follows (under $Config{prefix}):
+in Linux with perl-5.25.12 is as follows (under $Config{prefix}):
 
   ./bin/perl
-  ./lib/perl5/5.25.11/strict.pm
-  ./lib/perl5/5.25.11/warnings.pm
-  ./lib/perl5/5.25.11/i686-linux/File/Glob.pm
-  ./lib/perl5/5.25.11/feature.pm
-  ./lib/perl5/5.25.11/XSLoader.pm
-  ./lib/perl5/5.25.11/i686-linux/auto/File/Glob/Glob.so
+  ./lib/perl5/5.25.12/strict.pm
+  ./lib/perl5/5.25.12/warnings.pm
+  ./lib/perl5/5.25.12/i686-linux/File/Glob.pm
+  ./lib/perl5/5.25.12/feature.pm
+  ./lib/perl5/5.25.12/XSLoader.pm
+  ./lib/perl5/5.25.12/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
index d23f985..ebad534 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -3234,7 +3234,6 @@ dist/base/t/fields.t              See if fields work
 dist/base/t/fields-5_6_0.t     See if fields work
 dist/base/t/fields-5_8_0.t     See if fields work
 dist/base/t/fields-base.t      See if fields work
-dist/base/t/incdot.t           Test how base.pm handles '.' in @INC
 dist/base/t/isa.t              See if base's behaviour doesn't change
 dist/base/t/lib/Broken.pm      Test module for base.pm
 dist/base/t/lib/Dummy.pm       Test module for base.pm
@@ -4190,6 +4189,7 @@ ext/Win32CORE/Win32CORE.c Win32CORE extension
 ext/Win32CORE/Win32CORE.pm     Win32CORE extension (stubs for Win32 CORE subs)
 ext/XS-APItest/APItest.pm      XS::APItest extension
 ext/XS-APItest/APItest.xs      XS::APItest extension
+ext/XS-APItest/APItest_BS      autogenerate APItest.bs
 ext/XS-APItest/core.c          Test API functions when PERL_CORE is defined
 ext/XS-APItest/core_or_not.inc Code common to core.c and notcore.c
 ext/XS-APItest/exception.c     XS::APItest extension
@@ -4204,6 +4204,7 @@ ext/XS-APItest/t/Block.pm Helper for ./blockhooks.t
 ext/XS-APItest/t/blockasexpr.t test recursive descent block parsing
 ext/XS-APItest/t/blockhooks.t  XS::APItest: tests for PL_blockhooks
 ext/XS-APItest/t/blockhooks-csc.t      XS::APItest: more tests for PL_blockhooks
+ext/XS-APItest/t/bootstrap.t   XS::APItest: test APItest.bs
 ext/XS-APItest/t/call.t                Test calling perl from C
 ext/XS-APItest/t/call_checker.t        test call checker plugin API
 ext/XS-APItest/t/caller.t      XS::APItest: tests for caller_cx
@@ -4932,6 +4933,7 @@ pod/perl5240delta.pod             Perl changes in version 5.24.0
 pod/perl5241delta.pod          Perl changes in version 5.24.1
 pod/perl5250delta.pod          Perl changes in version 5.25.0
 pod/perl52510delta.pod         Perl changes in version 5.25.10
+pod/perl52511delta.pod         Perl changes in version 5.25.11
 pod/perl5251delta.pod          Perl changes in version 5.25.1
 pod/perl5252delta.pod          Perl changes in version 5.25.2
 pod/perl5253delta.pod          Perl changes in version 5.25.3
index d889ae6..258f01d 100644 (file)
--- a/META.json
+++ b/META.json
          "url" : "http://perl5.git.perl.org/"
       }
    },
-   "version" : "5.025011",
+   "version" : "5.025012",
    "x_serialization_backend" : "JSON::PP version 2.27400_02"
 }
index ed9ff1f..de7ff5b 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -113,5 +113,5 @@ resources:
   homepage: http://www.perl.org/
   license: http://dev.perl.org/licenses/
   repository: http://perl5.git.perl.org/
-version: '5.025011'
+version: '5.025012'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
index ca86afd..b6df92d 100755 (executable)
@@ -570,7 +570,7 @@ esac
 
 $spitshell >>$Makefile <<'!NO!SUBS!'
 
-perltoc_pod_prereqs = extra.pods pod/perl52511delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
+perltoc_pod_prereqs = extra.pods pod/perl52512delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
 generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
 generated_headers = uudmap.h bitcount.h mg_data.h
 
@@ -1120,9 +1120,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/perl52511delta.pod: pod/perldelta.pod
-       $(RMS) pod/perl52511delta.pod
-       $(LNS) perldelta.pod pod/perl52511delta.pod
+pod/perl52512delta.pod: pod/perldelta.pod
+       $(RMS) pod/perl52512delta.pod
+       $(LNS) perldelta.pod pod/perl52512delta.pod
 
 extra.pods: $(MINIPERL_EXE)
        -@test ! -f extra.pods || rm -f `cat extra.pods`
index ea06fcb..6dbd7d9 100644 (file)
@@ -86,7 +86,7 @@ NLM_VERSION    = 3,20,0
 
 
 # Here comes the CW tools - TO BE FILLED TO BUILD WITH CW -
-MODULE_DESC     = "Perl 5.25.11 for NetWare"
+MODULE_DESC     = "Perl 5.25.12 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.25.11
+INST_VER       = \5.25.12
 
 #
 # Comment this out if you DON'T want your perl installation to have
index 0521d7b..cdf7fce 100644 (file)
  *     This symbol contains the ~name expanded version of ARCHLIB, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define ARCHLIB "c:\\perl\\5.25.11\\lib\\NetWare-x86-multi-thread"             /**/
+#define ARCHLIB "c:\\perl\\5.25.12\\lib\\NetWare-x86-multi-thread"             /**/
 /*#define ARCHLIB_EXP ""       /**/
 
 /* ARCHNAME:
  *     This symbol is the filename expanded version of the BIN symbol, for
  *     programs that do not want to deal with that at run-time.
  */
-#define BIN "c:\\perl\\5.25.11\\bin\\NetWare-x86-multi-thread" /**/
-#define BIN_EXP "c:\\perl\\5.25.11\\bin\\NetWare-x86-multi-thread"     /**/
+#define BIN "c:\\perl\\5.25.12\\bin\\NetWare-x86-multi-thread" /**/
+#define BIN_EXP "c:\\perl\\5.25.12\\bin\\NetWare-x86-multi-thread"     /**/
 
 /* BYTEORDER:
  *     This symbol holds the hexadecimal constant defined in byteorder,
  *     This symbol contains the ~name expanded version of SITEARCH, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define SITEARCH "c:\\perl\\site\\5.25.11\\lib\\NetWare-x86-multi-thread"              /**/
+#define SITEARCH "c:\\perl\\site\\5.25.12\\lib\\NetWare-x86-multi-thread"              /**/
 /*#define SITEARCH_EXP ""      /**/
 
 /* SITELIB:
  *     removed.  The elements in inc_version_list (inc_version_list.U) can
  *     be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "c:\\perl\\site\\5.25.11\\lib"         /**/
+#define SITELIB "c:\\perl\\site\\5.25.12\\lib"         /**/
 /*#define SITELIB_EXP ""       /**/
 #define SITELIB_STEM ""                /**/
 
index 97ba798..33df630 100755 (executable)
@@ -181,10 +181,6 @@ use File::Glob qw(:case);
     'base' => {
         'DISTRIBUTION' => 'RJBS/base-2.23.tar.gz',
         'FILES'        => q[dist/base],
-        'CUSTOMIZED'   => [
-            # https://rt.perl.org/Ticket/Display.html?id=127834
-            qw( lib/base.pm )
-        ],
     },
 
     'bignum' => {
@@ -251,7 +247,7 @@ use File::Glob qw(:case);
     },
 
     'CPAN' => {
-        'DISTRIBUTION' => 'ANDK/CPAN-2.17-TRIAL2.tar.gz',
+        'DISTRIBUTION' => 'ANDK/CPAN-2.18-TRIAL.tar.gz',
         'FILES'        => q[cpan/CPAN],
         'EXCLUDED'     => [
             qr{^distroprefs/},
@@ -806,7 +802,7 @@ use File::Glob qw(:case);
     },
 
     'Module::CoreList' => {
-        'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20170220.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20170320.tar.gz',
         'FILES'        => q[dist/Module-CoreList],
     },
 
index 62c6aaf..efff214 100755 (executable)
@@ -504,7 +504,11 @@ sub filter_tests {
 sub read_tests_file {
     my ($file) = @_;
 
-    my $ta = do $file;
+    my $ta;
+    {
+        local @INC = ('.');
+        $ta = do $file;
+    }
     unless ($ta) {
         die "Error: can't parse '$file': $@\n" if $@;
         die "Error: can't read '$file': $!\n";
@@ -1421,8 +1425,10 @@ EOF
         },
     );
 
-    for ('t', '.') {
-        last if require "$_/test.pl";
+    for ('./t', '.') {
+        my $t = "$_/test.pl";
+        next unless  -f $t;
+        require $t;
     }
     plan(@tests / 3 * keys %VALID_FIELDS);
 
index bdce843..5791612 100644 (file)
@@ -39,12 +39,12 @@ alignbytes='8'
 ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
-api_subversion='11'
+api_subversion='12'
 api_version='25'
-api_versionstring='5.25.11'
+api_versionstring='5.25.12'
 ar='ar'
-archlib='/tmp/mblead/lib/perl5/5.25.11/darwin-2level'
-archlibexp='/tmp/mblead/lib/perl5/5.25.11/darwin-2level'
+archlib='/tmp/mblead/lib/perl5/5.25.12/darwin-2level'
+archlibexp='/tmp/mblead/lib/perl5/5.25.12/darwin-2level'
 archname64=''
 archname='darwin-2level'
 archobjs=''
@@ -846,7 +846,7 @@ incpath=''
 incpth='/usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include'
 inews=''
 initialinstalllocation='/tmp/mblead/bin'
-installarchlib='/tmp/mblead/lib/perl5/5.25.11/darwin-2level'
+installarchlib='/tmp/mblead/lib/perl5/5.25.12/darwin-2level'
 installbin='/tmp/mblead/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -854,13 +854,13 @@ installman1dir='/tmp/mblead/man/man1'
 installman3dir='/tmp/mblead/man/man3'
 installprefix='/tmp/mblead'
 installprefixexp='/tmp/mblead'
-installprivlib='/tmp/mblead/lib/perl5/5.25.11'
+installprivlib='/tmp/mblead/lib/perl5/5.25.12'
 installscript='/tmp/mblead/bin'
-installsitearch='/tmp/mblead/lib/perl5/site_perl/5.25.11/darwin-2level'
+installsitearch='/tmp/mblead/lib/perl5/site_perl/5.25.12/darwin-2level'
 installsitebin='/tmp/mblead/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='/tmp/mblead/lib/perl5/site_perl/5.25.11'
+installsitelib='/tmp/mblead/lib/perl5/site_perl/5.25.12'
 installsiteman1dir='/tmp/mblead/man/man1'
 installsiteman3dir='/tmp/mblead/man/man3'
 installsitescript='/tmp/mblead/bin'
@@ -985,7 +985,7 @@ perl_patchlevel=''
 perl_static_inline='static __inline__'
 perladmin='aaron@daybreak.nonet'
 perllibs='-lpthread -ldl -lm -lutil -lc'
-perlpath='/tmp/mblead/bin/perl5.25.11'
+perlpath='/tmp/mblead/bin/perl5.25.12'
 pg='pg'
 phostname='hostname'
 pidtype='pid_t'
@@ -994,8 +994,8 @@ pmake=''
 pr=''
 prefix='/tmp/mblead'
 prefixexp='/tmp/mblead'
-privlib='/tmp/mblead/lib/perl5/5.25.11'
-privlibexp='/tmp/mblead/lib/perl5/5.25.11'
+privlib='/tmp/mblead/lib/perl5/5.25.12'
+privlibexp='/tmp/mblead/lib/perl5/5.25.12'
 procselfexe=''
 prototype='define'
 ptrsize='8'
@@ -1061,17 +1061,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, 6, 0'
 sig_size='33'
 signal_t='void'
-sitearch='/tmp/mblead/lib/perl5/site_perl/5.25.11/darwin-2level'
-sitearchexp='/tmp/mblead/lib/perl5/site_perl/5.25.11/darwin-2level'
+sitearch='/tmp/mblead/lib/perl5/site_perl/5.25.12/darwin-2level'
+sitearchexp='/tmp/mblead/lib/perl5/site_perl/5.25.12/darwin-2level'
 sitebin='/tmp/mblead/bin'
 sitebinexp='/tmp/mblead/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/tmp/mblead/lib/perl5/site_perl/5.25.11'
+sitelib='/tmp/mblead/lib/perl5/site_perl/5.25.12'
 sitelib_stem='/tmp/mblead/lib/perl5/site_perl'
-sitelibexp='/tmp/mblead/lib/perl5/site_perl/5.25.11'
+sitelibexp='/tmp/mblead/lib/perl5/site_perl/5.25.12'
 siteman1dir='/tmp/mblead/man/man1'
 siteman1direxp='/tmp/mblead/man/man1'
 siteman3dir='/tmp/mblead/man/man3'
@@ -1097,7 +1097,7 @@ src='.'
 ssizetype='ssize_t'
 st_ino_sign='1'
 st_ino_size='8'
-startperl='#!/tmp/mblead/bin/perl5.25.11'
+startperl='#!/tmp/mblead/bin/perl5.25.12'
 startsh='#!/bin/sh'
 static_ext=' '
 stdchar='char'
@@ -1110,7 +1110,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='11'
+subversion='12'
 sysman='/usr/share/man/man1'
 sysroot=''
 tail=''
@@ -1209,8 +1209,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.25.11'
-version_patchlevel_string='version 25 subversion 11'
+version='5.25.12'
+version_patchlevel_string='version 25 subversion 12'
 versiononly='define'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1220,9 +1220,9 @@ zcat=''
 zip='zip'
 PERL_REVISION=5
 PERL_VERSION=25
-PERL_SUBVERSION=11
+PERL_SUBVERSION=12
 PERL_API_REVISION=5
 PERL_API_VERSION=25
-PERL_API_SUBVERSION=11
+PERL_API_SUBVERSION=12
 PERL_PATCHLEVEL=''
 PERL_CONFIG_SH=true
index 2197b2b..8615586 100644 (file)
  *     This symbol contains the ~name expanded version of ARCHLIB, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define ARCHLIB "/pro/lib/perl5/5.25.11/i686-linux-64int-ld"           /**/
-#define ARCHLIB_EXP "/pro/lib/perl5/5.25.11/i686-linux-64int-ld"               /**/
+#define ARCHLIB "/pro/lib/perl5/5.25.12/i686-linux-64int-ld"           /**/
+#define ARCHLIB_EXP "/pro/lib/perl5/5.25.12/i686-linux-64int-ld"               /**/
 
 /* ARCHNAME:
  *     This symbol holds a string representing the architecture name.
  *     This symbol contains the ~name expanded version of PRIVLIB, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define PRIVLIB "/pro/lib/perl5/5.25.11"               /**/
-#define PRIVLIB_EXP "/pro/lib/perl5/5.25.11"           /**/
+#define PRIVLIB "/pro/lib/perl5/5.25.12"               /**/
+#define PRIVLIB_EXP "/pro/lib/perl5/5.25.12"           /**/
 
 /* PTRSIZE:
  *     This symbol contains the size of a pointer, so that the C preprocessor
  *     This symbol contains the ~name expanded version of SITEARCH, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define SITEARCH "/pro/lib/perl5/site_perl/5.25.11/i686-linux-64int-ld"                /**/
-#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.25.11/i686-linux-64int-ld"            /**/
+#define SITEARCH "/pro/lib/perl5/site_perl/5.25.12/i686-linux-64int-ld"                /**/
+#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.25.12/i686-linux-64int-ld"            /**/
 
 /* SITELIB:
  *     This symbol contains the name of the private library for this package.
  *     removed.  The elements in inc_version_list (inc_version_list.U) can
  *     be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "/pro/lib/perl5/site_perl/5.25.11"             /**/
-#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.25.11"         /**/
+#define SITELIB "/pro/lib/perl5/site_perl/5.25.12"             /**/
+#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.25.12"         /**/
 #define SITELIB_STEM "/pro/lib/perl5/site_perl"                /**/
 
 /* SSize_t:
  *     script to make sure (one hopes) that it runs with perl and not
  *     some shell.
  */
-#define STARTPERL "#!/pro/bin/perl5.25.11"             /**/
+#define STARTPERL "#!/pro/bin/perl5.25.12"             /**/
 
 /* HAS_STDIO_STREAM_ARRAY:
  *     This symbol, if defined, tells that there is an array
index b5b67f0..591d4d9 100644 (file)
@@ -17,6 +17,18 @@ Consult your favorite dictionary for details.
 
 =head1 EPIGRAPHS
 
+=head2 v5.25.11 - Daniel Kahneman, Thinking, Fast and Slow
+
+L<Announced on 2017-03-20 by Sawyer X|http://www.nntp.perl.org/group/perl.perl5.porters/2017/03/msg243624.html>
+
+  Subjective confidence in a judgment is not a reasoned evaluation of
+  the probability that this judgment is correct. Confidence is a
+  feeling, which reflects the coherence of the information and the
+  cognitive ease of processing it. It is wise to take admissions of
+  uncertainty seriously, but declarations of high confidence mainly
+  tell you that an individual has constructed a coherent story in his
+  mind, not necessarily that the story is true.
+
 =head2 v5.25.10 - Erich Fried, 1968
 
 L<Announced on 2017-02-20 by Renee Bäcker|https://www.nntp.perl.org/group/perl.perl5.porters/2017/02/msg243173.html>
index 0fe2fe7..13526e3 100755 (executable)
@@ -2,7 +2,9 @@
 #
 # harness-timer-report.pl
 #
-# - read in the HARNESS_TIMER=1 output of "make test"
+# - read in the time-annotated outputs of
+#   "env HARNESS_TIMER=1 make test" or
+#   "make test_harness"
 # - convert the milliseconds to seconds
 # - compute a couple of derived values
 #   - cpu: the sum of 'self' and 'kids'
index effd166..cc3bbe1 100644 (file)
@@ -51,7 +51,7 @@ C<[rt.cpan.org #43010]>.  This mirrors how rt.cpan.org subject lines appear.
 
 =item ActiveState
 
-C<http://bugs.activestate.com/show_bug.cgi?id=72443>
+C<L<http://bugs.activestate.com/show_bug.cgi?id=72443>>
 
 =item Debian
 
index 3d698e2..167aada 100644 (file)
@@ -14,7 +14,7 @@ $| = 1;
 
 # Get command line options
 use Getopt::Long;
-require "Porting/manifest_lib.pl";
+require "./Porting/manifest_lib.pl";
 my $outfile;
 my $check_only = 0;
 my $quiet = 0;
index 69da88b..a1fe675 100644 (file)
@@ -24,7 +24,7 @@ and all the various auxiliary files that are part of the distribution.
 
 The Comprehensive Perl Archive Network (or CPAN) is the place to go.
 There are many mirrors, but the easiest thing to use is probably
-http://www.cpan.org/README.html , which automatically points you to a
+L<http://www.cpan.org/README.html> , which automatically points you to a
 mirror site "close" to you.
 
 =head2 Perl5-porters mailing list
@@ -1124,7 +1124,7 @@ and the full tar file, e.g. F<perl5.004_08.tar.gz>.
 
 If you want your patch to appear in the F<src/5.0/unsupported>
 directory on CPAN, send e-mail to the CPAN master librarian.  (Check
-out http://www.cpan.org/CPAN.html ).
+out L<http://www.cpan.org/CPAN.html> ).
 
 =head1 Help Save the World
 
index 86f5e41..5c9bf49 100644 (file)
@@ -173,7 +173,7 @@ which has a F<public_html> directory to share files with.
 If you use Dropbox, you can append "raw=1" as a parameter to their usual
 sharing link to allow direct download (albeit with redirects).
 
-=head3 git clone of https://github.com/perlorg/perlweb
+=head3 git clone of L<https://github.com/perlorg/perlweb>
 
 For updating the L<http://dev.perl.org> web pages, either a Github account or
 sweet-talking somebody with a Github account into obedience is needed. This
@@ -373,14 +373,14 @@ fix.
 =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.
+at L<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.
 
 That page accepts a query parameter, C<pair> that takes a pair of
 colon-delimited versions to use for comparison.  For example:
 
-http://analysis.cpantesters.org/beforemaintrelease?pair=5.20.2:5.22.0%20RC1
+L<http://analysis.cpantesters.org/beforemaintrelease?pair=5.20.2:5.22.0%20RC1>
 
 =head3 update perldelta
 
@@ -644,7 +644,7 @@ modules on CPAN. It can use a full, local CPAN mirror and/or fall back
 on HTTP::Tiny to fetch package metadata remotely.
 
 (If you'd prefer to have a full CPAN mirror, see
-http://www.cpan.org/misc/cpan-faq.html#How_mirror_CPAN)
+L<http://www.cpan.org/misc/cpan-faq.html#How_mirror_CPAN>)
 
 Then change to your perl checkout, and if necessary,
 
@@ -739,7 +739,7 @@ formatting, e.g.
     $ ./perl -Ilib ext/Pod-Html/bin/pod2html pod/perldelta.pod > \
         /tmp/perldelta.html
 
-Another good HTML preview option is http://search.cpan.org/pod2html
+Another good HTML preview option is L<http://search.cpan.org/pod2html>
 
 If you make changes, be sure to commit them.
 
@@ -985,10 +985,10 @@ your own tarball testing, below.
 
 Check that basic configuration and tests work on each test machine:
 
-    $ ./Configure -des && make all test
+    $ ./Configure -des && make all minitest test
 
     # Or for a development release:
-    $ ./Configure -Dusedevel -des && make all test
+    $ ./Configure -Dusedevel -des && make all minitest test
 
 =head4 Run the test harness and install
 
@@ -1545,7 +1545,7 @@ will make life easier for the next release manager.
 =head1 SOURCE
 
 Based on
-http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2009-05/msg00608.html,
+L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2009-05/msg00608.html>,
 plus a whole bunch of other sources, including private correspondence.
 
 =cut
index 1cadc5e..4f25875 100644 (file)
@@ -20,7 +20,8 @@ Code freezes (which happen in the 5.25.X series)
                               functioning programs freeze
   2017-02-20  5.25.10         Full code freeze
   2017-03-20  5.25.11         Full code freeze
-  2017-04-20  5.26.0          Stable release!
+  2017-04-20  5.25.12         Full code freeze
+  2017-05-20  5.26.0          Stable release!
 
 =head2 Perl 5.24
 
@@ -63,7 +64,8 @@ you should reset the version numbers to the next blead series.
   2016-12-20  5.25.8 ✓        Sawyer X
   2017-01-20  5.25.9 ✓        Abigail
   2017-02-20  5.25.10 ✓       Renée Bäcker
-  2017-03-20  5.25.11         Sawyer X
+  2017-03-20  5.25.11 ✓       Sawyer X
+  2017-04-20  5.25.12         Sawyer X
 
 (RC0 for 5.26.0 will be released once we think that all the blockers have been
 addressed.  This typically means some time in April or May.)
index 7c64626..e6e4db4 100644 (file)
@@ -485,7 +485,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.25.11.
+options would be nice for perl 5.25.12.
 
 =head2 Profile Perl - am I hot or not?
 
@@ -1205,7 +1205,7 @@ L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00339.html>
 =head1 Big projects
 
 Tasks that will get your name mentioned in the description of the "Highlights
-of 5.25.11"
+of 5.25.12"
 
 =head2 make ithreads more robust
 
index be28327..7e185a9 100644 (file)
@@ -428,7 +428,7 @@ fill in its choices
 Follow the messages ... and you're done.
 
 If you like a more web-like approach, a good start point can be
-http://www14.software.ibm.com/webapp/download/downloadaz.jsp and click
+L<http://www14.software.ibm.com/webapp/download/downloadaz.jsp> and click
 "C for AIX", and follow the instructions.
 
 =head2 The usenm option
index 1b290ce..8e62903 100644 (file)
@@ -17,7 +17,7 @@ When perl is configured to use ithreads, it will use re-entrant library calls
 in preference to non-re-entrant versions.  There is a bug in FreeBSD's
 C<readdir_r> function in versions 4.5 and earlier that can cause a SEGV when
 reading large directories. A patch for FreeBSD libc is available
-(see http://www.freebsd.org/cgi/query-pr.cgi?pr=misc/30631 )
+(see L<http://www.freebsd.org/cgi/query-pr.cgi?pr=misc/30631> )
 which has been integrated into FreeBSD 4.6.
 
 =head2 C<$^X> doesn't always contain a full path in FreeBSD
index 9882115..9ff573a 100644 (file)
@@ -22,9 +22,9 @@ The build procedure is completely standard:
 Make perl executable and create a symlink for libperl:
 
   chmod a+x /boot/common/bin/perl
-  cd /boot/common/lib; ln -s perl5/5.25.11/BePC-haiku/CORE/libperl.so .
+  cd /boot/common/lib; ln -s perl5/5.25.12/BePC-haiku/CORE/libperl.so .
 
-Replace C<5.25.11> with your respective version of Perl.
+Replace C<5.25.12> with your respective version of Perl.
 
 =head1 KNOWN PROBLEMS
 
index 26fd0ee..8cb0563 100644 (file)
@@ -9,7 +9,7 @@ perlhurd - Perl version 5 on Hurd
 =head1 DESCRIPTION
 
 If you want to use Perl on the Hurd, I recommend using the Debian
-GNU/Hurd distribution ( see http://www.debian.org/ ), even if an
+GNU/Hurd distribution ( see L<http://www.debian.org/> ), even if an
 official, stable release has not yet been made.  The old "gnu-0.2"
 binary distribution will most certainly have additional problems.
 
index 2a1fa57..ac79078 100644 (file)
--- a/README.jp
+++ b/README.jp
@@ -57,9 +57,9 @@ Perl 自身は Unicode で動作します。Perl スクリプト内の文字列
 
 =head2 About (jcode.pl|Jcode.pm|JPerl)
 
-5.8以前の、スクリプトがEUC-JPであればリテラルだけは扱うことができました。また、入出力を扱うモジュールとしてはJcode.pmが( http://openlab.ring.gr.jp/Jcode/ )、perl4用のユーティリティとしてはjcode.plがそれぞれ存在し、日本語の扱えるCGIでよく利用されていることを御存じの方も少なくないかと思われます。ただし、日本語による正規表現をうまく扱うことは不可能でした。
+5.8以前の、スクリプトがEUC-JPであればリテラルだけは扱うことができました。また、入出力を扱うモジュールとしてはJcode.pmが( L<http://openlab.ring.gr.jp/Jcode/> )、perl4用のユーティリティとしてはjcode.plがそれぞれ存在し、日本語の扱えるCGIでよく利用されていることを御存じの方も少なくないかと思われます。ただし、日本語による正規表現をうまく扱うことは不可能でした。
 
-5.005以前のPerlには、日本語に特化したローカライズ版、Jperlが存在しました( http://homepage2.nifty.com/kipp/perl/jperl/index.html )。また、Mac OS 9.x/Classic用のPerl、MacPerlの日本語版もMacJPerlとして存在してました。( http://habilis.net/macjperl/ ).これらでは文字コードとしてEUC-JPに加えShift_JISもそのまま扱うことができ、また日本語による正規表現を扱うことも可能でした。
+5.005以前のPerlには、日本語に特化したローカライズ版、Jperlが存在しました( L<http://homepage2.nifty.com/kipp/perl/jperl/index.html> )。また、Mac OS 9.x/Classic用のPerl、MacPerlの日本語版もMacJPerlとして存在してました。( L<http://habilis.net/macjperl/> ).これらでは文字コードとしてEUC-JPに加えShift_JISもそのまま扱うことができ、また日本語による正規表現を扱うことも可能でした。
 
 Perl5.8では、これらの機能がすべてPerl本体だけで実現できる上に、日本語のみならず上記114の文字コードをすべて、しかも同時に扱うことができます。さらに、CPANなどから新しい文字コード用のモジュールを入手することも簡単にできるようになっています。
 
index c24f300..6fce53c 100644 (file)
@@ -10,9 +10,9 @@ perlmacosx - Perl under Mac OS X
 
 This document briefly describes Perl under Mac OS X.
 
-  curl -O http://www.cpan.org/src/perl-5.25.11.tar.gz
-  tar -xzf perl-5.25.11.tar.gz
-  cd perl-5.25.11
+  curl -O http://www.cpan.org/src/perl-5.25.12.tar.gz
+  tar -xzf perl-5.25.12.tar.gz
+  cd perl-5.25.12
   ./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.25.11 as of this writing) builds without changes
+The latest Perl release (5.25.12 as of this writing) builds without changes
 under all versions of Mac OS X from 10.3 "Panther" onwards. 
 
 In order to build your own version of Perl you will need 'make',
index 06d3264..8113779 100644 (file)
@@ -619,7 +619,7 @@ C<set PERLLIB_PREFIX> in F<Config.sys>, see L</"C<PERLLIB_PREFIX>">.
 
 =item Additional Perl modules
 
-  unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.25.11/
+  unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.25.12/
 
 Same remark as above applies.  Additionally, if this directory is not
 one of directories on @INC (and @INC is influenced by C<PERLLIB_PREFIX>), you
index 0386209..8062628 100644 (file)
@@ -29,7 +29,7 @@ running the Configure script for Perl.
 
 The z/OS Unix Tools and Toys list may prove helpful and contains links
 to ports of much of the software helpful for building Perl.
-http://www.ibm.com/servers/eserver/zseries/zos/unix/bpxa1toy.html
+L<http://www.ibm.com/servers/eserver/zseries/zos/unix/bpxa1toy.html>
 
 
 =head2 Unpacking Perl distribution on OS/390
index d5fc801..b202090 100644 (file)
@@ -142,11 +142,11 @@ You may need to set up a foreign symbol for the unpacking utility of
 choice.  Once you have done so, use a command like the following to
 unpack the archive:
 
-    vmstar -xvf perl-5^.25^.11.tar
+    vmstar -xvf perl-5^.25^.12.tar
 
 Then set default to the top-level source directory like so:
 
-    set default [.perl-5^.25^.11]
+    set default [.perl-5^.25^.12]
 
 and proceed with configuration as described in the next section.
 
index f9a5e91..bded831 100644 (file)
@@ -1,6 +1,5 @@
 # This is a replacement for the old BEGIN preamble which heads (or
-# should head) up every core test program to prepare it for running.
-# Now instead of:
+# should head) up every core test program to prepare it for running:
 #
 # BEGIN {
 #   chdir 't' if -d 't';
@@ -10,8 +9,28 @@
 # Its primary purpose is to clear @INC so core tests don't pick up
 # modules from an installed Perl.
 #
-# t/TEST will use -MTestInit.  You may "use TestInit" in the test
-# programs but it is not required.
+# t/TEST and t/harness will invoke each test script with
+#      perl -MTestInit[=arg,arg,..] some/test.t
+# You may "use TestInit" in the test # programs but it is not required.
+#
+# TestInit will completely empty the current @INC and replace it with
+# new entries based on the args:
+#
+#    U2T: adds ../../lib and ../../t;
+#    U1:  adds ../lib;
+#    T:   adds lib  and chdir's to the top-level directory.
+#
+# In the absence of any of the above options, it chdir's to
+#  t/ or cpan/Foo-Bar/ etc as appropriate and correspondingly
+#  sets @INC to (../lib) or ( ../../lib, ../../t)
+#
+# In addition,
+#
+#   A:   converts any added @INC entries to absolute paths;
+#   NC:  unsets $ENV{PERL_CORE};
+#   DOT: unconditionally appends '.' to @INC.
+#
+# Any trailing '.' in @INC present on entry will be preserved.
 #
 # P.S. This documentation is not in POD format in order to avoid
 # problems when there are fundamental bugs in perl.
@@ -29,6 +48,8 @@ $ENV{PERL_CORE} = $^X;
 
 $0 =~ s/\.dp$//; # for the test.deparse make target
 
+my $add_dot = (@INC && $INC[-1] eq '.'); # preserve existing,
+
 sub import {
     my $self = shift;
     my @up_2_t = ('../../lib', '../../t');
@@ -47,8 +68,10 @@ sub import {
        } elsif ($_ eq 'T') {
            $chdir = '..'
                unless -f 't/TEST' && -f 'MANIFEST' && -d 'lib' && -d 'ext';
-           @INC = qw/ lib . /;
+           @INC = 'lib';
            $setopt = 1;
+       } elsif ($_ eq 'DOT') {
+            $add_dot = 1;
        } else {
            die "Unknown option '$_'";
        }
@@ -118,7 +141,7 @@ sub import {
        }
     }
 
-    push @INC, '.' unless ${^TAINT};
+    push @INC, '.' if $add_dot;
 }
 
 1;
index 185ade9..4f02850 100644 (file)
@@ -2,7 +2,7 @@
 # vim: ts=4 sts=4 sw=4:
 use strict;
 package CPAN;
-$CPAN::VERSION = '2.17';
+$CPAN::VERSION = '2.18';
 $CPAN::VERSION =~ s/_//;
 
 # we need to run chdir all over and we would get at wrong libraries
index 3f17b54..3b4e93d 100644 (file)
@@ -8,7 +8,7 @@ use CPAN::Module;
 use vars qw(
             $VERSION
 );
-$VERSION = "5.5002";
+$VERSION = "5.5003";
 
 sub look {
     my $self = shift;
@@ -21,6 +21,11 @@ sub undelay {
     delete $self->{later};
     for my $c ( $self->contains ) {
         my $obj = CPAN::Shell->expandany($c) or next;
+        if ($obj->id eq $self->id){
+            my $id = $obj->id;
+            $CPAN::Frontend->mywarn("$id seems to contain itself, skipping\n");
+            next;
+        }
         $obj->undelay;
     }
 }
index fc7ce10..64976eb 100644 (file)
@@ -8,7 +8,7 @@ use CPAN::InfoObj;
 use File::Path ();
 @CPAN::Distribution::ISA = qw(CPAN::InfoObj);
 use vars qw($VERSION);
-$VERSION = "2.17";
+$VERSION = "2.18";
 
 # no prepare, because prepare is not a command on the shell command line
 # TODO: clear instance cache on reload
@@ -3960,7 +3960,7 @@ sub install {
                            : ($ENV{PERLLIB} || "");
 
     local $ENV{PERL5OPT} = defined $ENV{PERL5OPT} ? $ENV{PERL5OPT} : "";
-    local $ENV{PERL_USE_UNSAFE_INC} = exists $ENV{PERL_USE_UNSAFE_INC} ? $ENV{PERL_USE_UNSAFE_INC} : 1; # install
+    local $ENV{PERL_USE_UNSAFE_INC} = exists $ENV{PERL_USE_UNSAFE_INC} ? $ENV{PERL_USE_UNSAFE_INC} : 1; # install
     $CPAN::META->set_perl5lib;
     local $ENV{PERL_MM_USE_DEFAULT} = 1 if $CPAN::Config->{use_prompt_default};
     local $ENV{NONINTERACTIVE_TESTING} = 1 if $CPAN::Config->{use_prompt_default};
index 9b2d204..04ba981 100644 (file)
@@ -11,6 +11,7 @@ my ($source_file, $obj_file, $lib_file);
 require_ok( 'ExtUtils::ParseXS' );
 
 chdir('t') if -d 't';
+push @INC, '.';
 
 use Carp; $SIG{__WARN__} = \&Carp::cluck;
 
index e4a68f2..4aaa3ab 100644 (file)
@@ -17,6 +17,7 @@ require_ok( 'ExtUtils::ParseXS' );
 ExtUtils::ParseXS->import('process_file');
 
 chdir 't' if -d 't';
+push @INC, '.';
 
 use Carp; $SIG{__WARN__} = \&Carp::cluck;
 
index bfe10ac..00dfe0b 100644 (file)
@@ -18,6 +18,7 @@ my ($source_file, $obj_file, $lib_file, $module);
 require_ok( 'ExtUtils::ParseXS' );
 
 chdir('t') if -d 't';
+push @INC, '.';
 
 use Carp; $SIG{__WARN__} = \&Carp::cluck;
 
index 8264867..3757b63 100644 (file)
@@ -1,3 +1,6 @@
+5.20170420
+  - Updated for v5.25.12
+
 5.20170320
   - Updated for v5.25.11
 
index 72fae63..ce7a565 100644 (file)
@@ -3,7 +3,7 @@ use strict;
 use vars qw/$VERSION %released %version %families %upstream
            %bug_tracker %deprecated %delta/;
 use version;
-$VERSION = '5.20170320';
+$VERSION = '5.20170420';
 
 sub _undelta {
     my ($delta) = @_;
@@ -319,6 +319,7 @@ sub changes_between {
     5.025009 => '2017-01-20',
     5.025010 => '2017-02-20',
     5.025011 => '2017-03-20',
+    5.025012 => '2017-04-20',
   );
 
 for my $version ( sort { $a <=> $b } keys %released ) {
@@ -14074,6 +14075,26 @@ for my $version ( sort { $a <=> $b } keys %released ) {
         removed => {
         }
     },
+    5.025012 => {
+        delta_from => 5.025011,
+        changed => {
+            'B::Op_private'         => '5.025012',
+            'CPAN'                  => '2.18',
+            'CPAN::Bundle'          => '5.5003',
+            'CPAN::Distribution'    => '2.18',
+            'Config'                => '5.025012',
+            'DynaLoader'            => '1.42',
+            'Module::CoreList'      => '5.20170420',
+            'Module::CoreList::TieHashDelta'=> '5.20170420',
+            'Module::CoreList::Utils'=> '5.20170420',
+            'Safe'                  => '2.40',
+            'XSLoader'              => '0.27',
+            'base'                  => '2.25',
+            'threads::shared'       => '1.56',
+        },
+        removed => {
+        }
+    },
 );
 
 sub is_core
@@ -14819,6 +14840,13 @@ sub is_core
         removed => {
         }
     },
+    5.025012 => {
+        delta_from => 5.025011,
+        changed => {
+        },
+        removed => {
+        }
+    },
 );
 
 %deprecated = _undelta(\%deprecated);
index 24867e2..1a96e55 100644 (file)
@@ -3,7 +3,7 @@ package Module::CoreList::TieHashDelta;
 use strict;
 use vars qw($VERSION);
 
-$VERSION = '5.20170230';
+$VERSION = '5.20170420';
 
 sub TIEHASH {
     my ($class, $changed, $removed, $parent) = @_;
index be3c26c..a791bfc 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 use vars qw[$VERSION %utilities];
 use Module::CoreList;
 
-$VERSION = '5.20170320';
+$VERSION = '5.20170420';
 
 sub utilities {
     my $perl = shift;
@@ -1249,6 +1249,13 @@ my %delta = (
         removed => {
         }
     },
+    5.025012 => {
+        delta_from => 5.025011,
+        changed => {
+        },
+        removed => {
+        }
+    },
 );
 
 %utilities = Module::CoreList::_undelta(\%delta);
index 1ddc260..3903703 100644 (file)
@@ -81,4 +81,4 @@ 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");
+ok(  Module::CoreList::is_core("Config", undef, "5.020"), "Config v(undef) is in core in 5.020");
index a154fec..025e980 100644 (file)
@@ -21,7 +21,7 @@ SKIP: {
     skip "No udp echo port", 1 unless getservbyname('echo', 'udp');
     skip "udp ping blocked by Window's default settings", 1 if isWindowsVista();
     skip "No getprotobyname", 1 unless $Config{d_getpbyname};
-    skip "Not allowed on HP-UX", 1 if $^O eq "hpux";
+    skip "Not allowed on $^O", 1 if $^O =~ /^(hpux|irix|aix)$/;
     my $p = new Net::Ping "udp";
     is($p->ping("127.0.0.1"), 1);
 }
index d78fcc5..e9f0967 100644 (file)
@@ -3,7 +3,7 @@ package Safe;
 use 5.003_11;
 use Scalar::Util qw(reftype refaddr);
 
-$Safe::VERSION = "2.39";
+$Safe::VERSION = "2.40";
 
 # *** Don't declare any lexicals above this point ***
 #
@@ -717,6 +717,9 @@ called from a compartment but not compiled within it.
 =head2 rdo (FILENAME)
 
 This evaluates the contents of file FILENAME inside the compartment.
+It uses the same rules as perl's built-in C<do> to locate the file,
+poossibly using C<@INC>.
+
 See above documentation on the B<reval> method for further details.
 
 =head2 root (NAMESPACE)
index 1f99f49..c1b59c0 100644 (file)
@@ -38,7 +38,7 @@ print $fh <<EOF;
 \$_[1] = "\0" x $masksize;
 EOF
 close $fh;
-$safe2->rdo('nasty.pl');
+$safe2->rdo('./nasty.pl');
 $safe2->reval( q{$x + $y} );
 # Written this way to keep the Test::More that comes with perl 5.6.2 happy
 ok( $@ =~ /^'?addition \(\+\)'? trapped by operation mask/,
index ccad6a3..ca4d4dc 100644 (file)
@@ -417,7 +417,7 @@ sub DEFINE {
 }
 
 sub init {
-    my $hints = File::Spec->catfile("hints", "$^O.pl");
+    my $hints = File::Spec->catfile(".", "hints", "$^O.pl");
     if (-f $hints) {
        print "Using hints $hints...\n";
        local $self;
index 4935410..7bdc6da 100644 (file)
@@ -1,6 +1,7 @@
 use strict;
 
 use Test::More tests => 10;
+BEGIN { push @INC, '.' }
 use t::Watchdog;
 
 BEGIN { require_ok "Time::HiRes"; }
index 346ca57..7686500 100644 (file)
@@ -1,6 +1,7 @@
 use strict;
 
 use Test::More tests => 5;
+BEGIN { push @INC, '.' }
 use t::Watchdog;
 
 BEGIN { require_ok "Time::HiRes"; }
index 69defe8..9f2fd7e 100644 (file)
@@ -9,6 +9,7 @@ BEGIN {
 }
 
 use Test::More tests => 6;
+BEGIN { push @INC, '.' }
 use t::Watchdog;
 
 my @one = Time::HiRes::gettimeofday();
index 31cdd67..e196b16 100644 (file)
@@ -26,6 +26,7 @@ BEGIN {
 }
 
 use Test::More tests => 2;
+BEGIN { push @INC, '.' }
 use t::Watchdog;
 
 my $limit = 0.25; # 25% is acceptable slosh for testing timers
index c17a7e4..5ea8ff7 100644 (file)
@@ -9,6 +9,7 @@ BEGIN {
 }
 
 use Test::More tests => 3;
+BEGIN { push @INC, '.' }
 use t::Watchdog;
 
 eval { Time::HiRes::nanosleep(-5) };
index b84b4c6..0ab6340 100644 (file)
@@ -1,6 +1,7 @@
 use strict;
 
 use Test::More tests => 4;
+BEGIN { push @INC, '.' }
 use t::Watchdog;
 
 BEGIN { require_ok "Time::HiRes"; }
index a59a342..d5e22ac 100644 (file)
@@ -14,6 +14,7 @@ BEGIN {
 }
 
 use Test::More tests => 43;
+BEGIN { push @INC, '.' }
 use t::Watchdog;
 
 my @atime;
index 6f219f9..5db016f 100644 (file)
@@ -1,6 +1,7 @@
 use strict;
 
 use Test::More tests => 2;
+BEGIN { push @INC, '.' }
 use t::Watchdog;
 
 BEGIN { require_ok "Time::HiRes"; }
index b50a175..0f9a829 100644 (file)
@@ -9,6 +9,7 @@ BEGIN {
 }
 
 use Test::More tests => 12;
+BEGIN { push @INC, '.' }
 use t::Watchdog;
 
 use Config;
index bdf372b..9322458 100644 (file)
@@ -9,6 +9,7 @@ BEGIN {
 }
 
 use Test::More tests => 6;
+BEGIN { push @INC, '.' }
 use t::Watchdog;
 
 eval { Time::HiRes::usleep(-2) };
index f84bccf..22fd48e 100644 (file)
@@ -48,6 +48,7 @@ BEGIN {
 }
 
 use Test::More tests => 18;
+BEGIN { push @INC, '.' }
 use t::Watchdog;
 use File::Temp qw( tempfile );
 
index 44a4b8d..18bc2e2 100644 (file)
@@ -8,7 +8,7 @@ my $mm_ver = ExtUtils::MakeMaker->VERSION;
 if (-f "Normalize.xs") {
     print STDERR "Making header files for XS...\n";
 
-    do 'mkheader' or die $@ || "mkheader: $!";
+    do './mkheader' or die $@ || "mkheader: $!";
 
     $clean = { FILES => 'unfcan.h unfcmb.h unfcmp.h unfcpt.h unfexc.h' };
 }
index ddf68f8..8012e35 100644 (file)
@@ -11,7 +11,7 @@ print OUT <<'EOT';
 
 package XSLoader;
 
-$VERSION = "0.26";
+$VERSION = "0.27";
 
 #use strict;
 
@@ -145,7 +145,7 @@ print OUT <<'EOT';
 
     if (-s $bs) { # only read file if it's not empty
 #       print STDERR "BS: $bs ($^O, $dlsrc)\n" if $dl_debug;
-        eval { do $bs; };
+        eval { local @INC = ('.'); do $bs; };
         warn "$bs: $@\n" if $@;
        goto \&XSLoader::bootstrap_inherit;
     }
index 38c91c7..8bc332e 100644 (file)
@@ -3,7 +3,7 @@ package base;
 
 use strict 'vars';
 use vars qw($VERSION);
-$VERSION = '2.24';
+$VERSION = '2.25';
 $VERSION =~ tr/_//d;
 
 # constant.pm is slow
@@ -97,11 +97,7 @@ sub import {
             {
                 local $SIG{__DIE__};
                 my $fn = _module_to_filename($base);
-                local @INC = @INC;
-                pop @INC if my $dotty = $INC[-1] eq '.';
-                eval {
-                    require $fn
-                };
+                eval { require $fn };
                 # Only ignore "Can't locate" errors from our eval require.
                 # Other fatal errors (syntax etc) must be reported.
                 #
@@ -115,24 +111,11 @@ sub import {
                 unless (%{"$base\::"}) {
                     require Carp;
                     local $" = " ";
-                    my $e = <<ERROR;
+                    Carp::croak(<<ERROR);
 Base class package "$base" is empty.
     (Perhaps you need to 'use' the module which defines that package first,
     or make that module available in \@INC (\@INC contains: @INC).
 ERROR
-                    if ($dotty && -e $fn) {
-                        $e .= <<ERROS;
-    The file $fn does exist in the current directory.  But note
-    that base.pm, when loading a module, now ignores the current working
-    directory if it is the last entry in \@INC.  If your software worked on
-    previous versions of Perl, the best solution is to use FindBin to
-    detect the path properly and to add that path to \@INC.  As a last
-    resort, you can re-enable looking in the current working directory by
-    adding "use lib '.'" to your code.
-ERROS
-                    }
-                    $e =~ s/\n\z/)\n/;
-                    Carp::croak($e);
                 }
                 $sigdie = $SIG{__DIE__} || undef;
             }
index ef6c25d..9bc707b 100644 (file)
@@ -7,7 +7,7 @@ $/ = \1;
 <$fh>;
 (my $test_file = $file) =~ s/-open-chunk//;
 
-unless (my $return = do $test_file) {
+unless (my $return = do "./$test_file") {
     warn "couldn't parse $test_file: $@" if $@;
     warn "couldn't do $test_file: $!"    unless defined $return;
     warn "couldn't run $test_file"       unless $return;
index ce6cf15..fa49ee7 100644 (file)
@@ -5,7 +5,7 @@ open my $fh, '<', $file or die "Can't open $file: $!";
 <$fh>;
 (my $test_file = $file) =~ s/-open-line//;
 
-unless (my $return = do $test_file) {
+unless (my $return = do "./$test_file") {
     warn "couldn't parse $test_file: $@" if $@;
     warn "couldn't do $test_file: $!"    unless defined $return;
     warn "couldn't run $test_file"       unless $return;
diff --git a/dist/base/t/incdot.t b/dist/base/t/incdot.t
deleted file mode 100644 (file)
index 1619492..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-
-use base ();
-
-use Test::More tests => 2;
-
-if ($INC[-1] ne '.') { push @INC, '.' }
-
-my $inc = quotemeta "@INC[0..$#INC-1]";
-
-eval { 'base'->import("foo") };
-like $@, qr/\@INC contains: $inc\).\)/,
-    'Error does not list final dot in @INC (or mention use lib)';
-eval { 'base'->import('t::lib::Dummy') };
-like $@, qr<\@INC contains: $inc\).\n(?x:
-           )    The file t/lib/Dummy\.pm does exist in the current direct>,
-    'special cur dir message for existing files in . that are ignored';
index 5a203b0..73c4dd9 100644 (file)
@@ -7,7 +7,7 @@ use warnings;
 
 use Scalar::Util qw(reftype refaddr blessed);
 
-our $VERSION = '1.55'; # Please update the pod, too.
+our $VERSION = '1.56'; # Please update the pod, too.
 my $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
@@ -195,7 +195,7 @@ threads::shared - Perl extension for sharing data structures between threads
 
 =head1 VERSION
 
-This document describes threads::shared version 1.55
+This document describes threads::shared version 1.56
 
 =head1 SYNOPSIS
 
index dab5e36..3c1b5e6 100644 (file)
@@ -1104,8 +1104,9 @@ sharedsv_array_mg_CLEAR(pTHX_ SV *sv, MAGIC *mg)
                 if (!sv) continue;
                 if ( (SvOBJECT(sv) || (SvROK(sv) && (sv = SvRV(sv))))
                   && SvREFCNT(sv) == 1 ) {
-                    SV *tmp = Perl_sv_newmortal(caller_perl);
+                    SV *tmp;
                     PERL_SET_CONTEXT((aTHX = caller_perl));
+                    tmp = sv_newmortal();
                     sv_upgrade(tmp, SVt_RV);
                     get_RV(tmp, sv);
                     PERL_SET_CONTEXT((aTHX = PL_sharedsv_space));
@@ -1384,8 +1385,9 @@ STORESIZE(SV *obj,IV count)
                 if (   (SvOBJECT(sv) || (SvROK(sv) && (sv = SvRV(sv))))
                     && SvREFCNT(sv) == 1 )
                 {
-                    SV *tmp = Perl_sv_newmortal(caller_perl);
+                    SV *tmp;
                     PERL_SET_CONTEXT((aTHX = caller_perl));
+                    tmp = sv_newmortal();
                     sv_upgrade(tmp, SVt_RV);
                     get_RV(tmp, sv);
                     PERL_SET_CONTEXT((aTHX = PL_sharedsv_space));
index 3d795b9..31c3797 100644 (file)
@@ -17,7 +17,7 @@ use ExtUtils::testlib;
 
 BEGIN {
     $| = 1;
-    print("1..131\n");   ### Number of tests that will be run ###
+    print("1..133\n");   ### Number of tests that will be run ###
 };
 
 use threads;
@@ -445,6 +445,28 @@ ok($destroyed[$ID], 'Scalar object removed from shared scalar');
     ::ok($count == $n, "remove array object by undef");
 }
 
+# RT #131124
+# Emptying a shared array creates new temp SVs. If there are no spare
+# SVs, a new arena is allocated. shared.xs was mallocing a new arena
+# with the wrong perl context set, meaning that when the arena was later
+# freed, it would "panic: realloc from wrong pool"
+#
+
+{
+    threads->new(sub {
+        my @a :shared;
+        push @a, bless &threads::shared::share({}) for 1..1000;
+        undef @a; # this creates lots of temp SVs
+    })->join;
+    ok(1, "#131124 undef array doesnt panic");
+
+    threads->new(sub {
+        my @a :shared;
+        push @a, bless &threads::shared::share({}) for 1..1000;
+        @a = (); # this creates lots of temp SVs
+    })->join;
+    ok(1, "#131124 clear array doesnt panic");
+}
 
 
 # EOF
diff --git a/doop.c b/doop.c
index 7674af5..18bc067 100644 (file)
--- a/doop.c
+++ b/doop.c
@@ -913,9 +913,19 @@ Perl_do_vecset(pTHX_ SV *sv)
     STRLEN targlen;
     STRLEN len;
     SV * const targ = LvTARG(sv);
+    char errflags = LvFLAGS(sv);
 
     PERL_ARGS_ASSERT_DO_VECSET;
 
+    /* some out-of-range errors have been deferred if/until the LV is
+     * actually written to: f(vec($s,-1,8)) is not always fatal */
+    if (errflags) {
+        assert(!(errflags & ~(1|4)));
+        if (errflags & 1)
+            Perl_croak_nocontext("Negative offset to vec in lvalue context");
+        Perl_croak_nocontext("Out of memory!");
+    }
+
     if (!targ)
        return;
     s = (unsigned char*)SvPV_force_flags(targ, targlen,
index 24c8bea..bd95625 100644 (file)
@@ -85,7 +85,7 @@ package DynaLoader;
 # Tim.Bunce@ig.co.uk, August 1994
 
 BEGIN {
-    $VERSION = '1.41';
+    $VERSION = '1.42';
 }
 
 EOT
@@ -373,7 +373,7 @@ sub bootstrap {
     $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; # look for .bs 'beside' the library
     if (-s $bs) { # only read file if it's not empty
         print STDERR "BS: $bs ($^O, $dlsrc)\n" if $dl_debug;
-        eval { do $bs; };
+        eval { local @INC = ('.'); do $bs; };
         warn "$bs: $@\n" if $@;
     }
 
index bc033c4..49309d9 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 END {
index 70eae7e..06dfcc2 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 END {
index cfa0abc..eb6c834 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 END {
index 94354c7..3139281 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 use strict;
index 0cc0072..dfafbe9 100644 (file)
@@ -2,7 +2,7 @@
 
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 use strict;
index 6a0857b..88d02a5 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 END {
index d9aab5e..bf2d02c 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 use strict;
index 8006bf0..843620b 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 END {
index 31e7bde..01b4f57 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 use strict;
index 820590f..bf03e5e 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 END {
index bb85e83..655b521 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 use strict;
index b13bf0c..e9aade5 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 use strict;
index 06914d1..a95a0ab 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 use strict;
index f83057e..ae1a751 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 use strict;
index b49a3ac..3679a7b 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w                                         # -*- perl -*-
 
 BEGIN {
-    require "t/pod2html-lib.pl";
+    require "./t/pod2html-lib.pl";
 }
 
 use strict;
diff --git a/ext/XS-APItest/APItest_BS b/ext/XS-APItest/APItest_BS
new file mode 100644 (file)
index 0000000..270dc9c
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# test that non-empty .bs files get executed
+
+$bscode = <<'EOF';
+$::bs_file_got_executed = 1;
+EOF
+
index 37590bc..a2a5486 100644 (file)
@@ -5,6 +5,9 @@ use strict;
 use Test::More tests => 17;
 
 use XS::APItest;
+
+BEGIN { push @INC, '.' } # t/BHK.pm is in ext/XS-APItest/ directory
+
 use t::BHK ();      # make sure it gets compiled early
 
 BEGIN { package XS::APItest; *main::bhkav = \@XS::APItest::bhkav }
diff --git a/ext/XS-APItest/t/bootstrap.t b/ext/XS-APItest/t/bootstrap.t
new file mode 100644 (file)
index 0000000..6992b10
--- /dev/null
@@ -0,0 +1,17 @@
+#!perl -w
+#
+# check that .bs files are loaded and executed.
+# During build of  XS::APItest, the presence of APItest_BS should
+# cause a non-empty APItest.bs file to auto-generated. When loading
+# APItest.so, the .bs should be automatically executed, which should
+# set $::bs_file_got_executed.
+
+use strict;
+
+use Test::More;
+use XS::APItest;
+
+is $::bs_file_got_executed, 1, "BS file was executed";
+
+done_testing();
+
index f3a7d9c..aed3afb 100644 (file)
@@ -89,7 +89,7 @@ isnt $@, "";
 is $t, "";
 
 $t = "";
-$t = do("t/labelconst.aux");
+$t = do("./t/labelconst.aux");
 is $@, "";
 is $t, "FOOBARBAZQUUX";
 
@@ -163,7 +163,7 @@ is $t, "FOOBARBAZQUUX";
 {
     use utf8;
     $t = "";
-    $t = do("t/labelconst_utf8.aux");
+    $t = do("./t/labelconst_utf8.aux");
     is $@, "";
     is $t, "FǑǑBÀRᛒÀZQÙÙX";
 }
index 07b4176..5fca196 100644 (file)
@@ -30,6 +30,7 @@ is $t[3], "a";
        is $t[3], "e";
 }
 is $t[3], "a";
+BEGIN { push @INC, '.' }
 use t::scope_0;
 is scope0_test(), "d";
 
index af93cf8..eb0b7c0 100644 (file)
 # mkdir -p /opt/perl-catamount
 # mkdir -p /opt/perl-catamount/include
 # mkdir -p /opt/perl-catamount/lib
-# mkdir -p /opt/perl-catamount/lib/perl5/5.25.11
+# mkdir -p /opt/perl-catamount/lib/perl5/5.25.12
 # 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.25.11
+# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.25.12
 # cp miniperl perl run.sh cc.sh /opt/perl-catamount/lib
 #
 # With the headers and the libperl.a you can embed Perl to your Catamount
index c378fec..7eeb4f8 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
         print "1..0 # Skip -- Perl configured without B module\n";
         exit 0;
     }
-    require 'test.pl';
+    require './test.pl';
 }
 
 use warnings;
index 9c44cc1..8dac5a7 100644 (file)
@@ -118,7 +118,7 @@ package B::Op_private;
 our %bits;
 
 
-our $VERSION = "5.025011";
+our $VERSION = "5.025012";
 
 $bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv);
 $bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv);
diff --git a/mg.c b/mg.c
index b11f66a..969d183 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -2305,11 +2305,14 @@ int
 Perl_magic_getvec(pTHX_ SV *sv, MAGIC *mg)
 {
     SV * const lsv = LvTARG(sv);
+    char errflags = LvFLAGS(sv);
 
     PERL_ARGS_ASSERT_MAGIC_GETVEC;
     PERL_UNUSED_ARG(mg);
 
-    sv_setuv(sv, do_vecget(lsv, LvTARGOFF(sv), LvTARGLEN(sv)));
+    /* non-zero errflags implies deferred out-of-range condition */
+    assert(!(errflags & ~(1|4)));
+    sv_setuv(sv, errflags ? 0 : do_vecget(lsv, LvTARGOFF(sv), LvTARGLEN(sv)));
 
     return 0;
 }
index 988d83a..f40e160 100644 (file)
@@ -15,7 +15,7 @@
 
 #define PERL_REVISION  5               /* age */
 #define PERL_VERSION   25              /* epoch */
-#define PERL_SUBVERSION        11              /* generation */
+#define PERL_SUBVERSION        12              /* generation */
 
 /* The following numbers describe the earliest compatible version of
    Perl ("compatibility" here being defined as sufficient binary/API
@@ -36,7 +36,7 @@
 */
 #define PERL_API_REVISION      5
 #define PERL_API_VERSION       25
-#define PERL_API_SUBVERSION    11
+#define PERL_API_SUBVERSION    12
 /*
    XXX Note:  The selection of non-default Configure options, such
    as -Duselonglong may invalidate these settings.  Currently, Configure
index 7fb0251..62a2c2a 100644 (file)
  *     This symbol contains the ~name expanded version of PRIVLIB, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define PRIVLIB "/sys/lib/perl/5.25.11"                /**/
-#define PRIVLIB_EXP "/sys/lib/perl/5.25.11"            /**/
+#define PRIVLIB "/sys/lib/perl/5.25.12"                /**/
+#define PRIVLIB_EXP "/sys/lib/perl/5.25.12"            /**/
 
 /* PTRSIZE:
  *     This symbol contains the size of a pointer, so that the C preprocessor
  *     removed.  The elements in inc_version_list (inc_version_list.U) can
  *     be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "/sys/lib/perl/5.25.11/site_perl"              /**/
-#define SITELIB_EXP "/sys/lib/perl/5.25.11/site_perl"          /**/
-#define SITELIB_STEM "/sys/lib/perl/5.25.11/site_perl"         /**/
+#define SITELIB "/sys/lib/perl/5.25.12/site_perl"              /**/
+#define SITELIB_EXP "/sys/lib/perl/5.25.12/site_perl"          /**/
+#define SITELIB_STEM "/sys/lib/perl/5.25.12/site_perl"         /**/
 
 /* Size_t_size:
  *     This symbol holds the size of a Size_t in bytes.
index b4809b6..e5e79eb 100644 (file)
@@ -32,12 +32,12 @@ alignbytes='4'
 ansi2knr=''
 aphostname='/bin/uname -n'
 api_revision='5'
-api_subversion='11'
+api_subversion='12'
 api_version='25'
-api_versionstring='5.25.11'
+api_versionstring='5.25.12'
 ar='ar'
-archlib='/sys/lib/perl5/5.25.11/386'
-archlibexp='/sys/lib/perl5/5.25.11/386'
+archlib='/sys/lib/perl5/5.25.12/386'
+archlibexp='/sys/lib/perl5/5.25.12/386'
 archname64=''
 archname='386'
 archobjs=''
@@ -820,17 +820,17 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='/sys/lib/perl/5.25.11/386'
+installarchlib='/sys/lib/perl/5.25.12/386'
 installbin='/usr/bin'
 installman1dir='/sys/man/1pub'
 installman3dir='/sys/man/2pub'
 installprefix='/usr'
 installprefixexp='/usr'
-installprivlib='/sys/lib/perl/5.25.11'
+installprivlib='/sys/lib/perl/5.25.12'
 installscript='/usr/bin'
-installsitearch='/sys/lib/perl/5.25.11/site_perl/386'
+installsitearch='/sys/lib/perl/5.25.12/site_perl/386'
 installsitebin='/usr/bin'
-installsitelib='/sys/lib/perl/5.25.11/site_perl'
+installsitelib='/sys/lib/perl/5.25.12/site_perl'
 installstyle='lib/perl5'
 installusrbinperl='undef'
 installvendorarch=''
@@ -955,8 +955,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/sys/lib/perl/5.25.11'
-privlibexp='/sys/lib/perl/5.25.11'
+privlib='/sys/lib/perl/5.25.12'
+privlibexp='/sys/lib/perl/5.25.12'
 procselfexe=''
 prototype='define'
 ptrsize='4'
@@ -1021,13 +1021,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.25.11/site_perl/386'
+sitearch='/sys/lib/perl/5.25.12/site_perl/386'
 sitearchexp='/sys/lib/perl/site_perl/386'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
-sitelib='/sys/lib/perl/5.25.11/site_perl'
-sitelib_stem='/sys/lib/perl/5.25.11/site_perl'
-sitelibexp='/sys/lib/perl/5.25.11/site_perl'
+sitelib='/sys/lib/perl/5.25.12/site_perl'
+sitelib_stem='/sys/lib/perl/5.25.12/site_perl'
+sitelibexp='/sys/lib/perl/5.25.12/site_perl'
 siteprefix='/usr'
 siteprefixexp='/usr'
 sizesize='4'
@@ -1060,7 +1060,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/sys/include/ape/string.h'
 submit=''
-subversion='11'
+subversion='12'
 sysman='/sys/man/1pub'
 tail=''
 tar=''
@@ -1142,8 +1142,8 @@ vendorlib_stem=''
 vendorlibexp=''
 vendorprefix=''
 vendorprefixexp=''
-version='5.25.11'
-version_patchlevel_string='version 25 subversion 11'
+version='5.25.12'
+version_patchlevel_string='version 25 subversion 12'
 versiononly='undef'
 vi=''
 xlibpth=''
@@ -1157,9 +1157,9 @@ config_args=''
 config_argc=0
 PERL_REVISION=5
 PERL_VERSION=25
-PERL_SUBVERSION=11
+PERL_SUBVERSION=12
 PERL_API_REVISION=5
 PERL_API_VERSION=25
-PERL_API_SUBVERSION=11
+PERL_API_SUBVERSION=12
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
index 153a578..c172130 100644 (file)
@@ -50,7 +50,7 @@
 /roffitall
 
 # generated
-/perl52511delta.pod
+/perl52512delta.pod
 /perlapi.pod
 /perlintern.pod
 /perlmodlib.pod
index fd0ba4f..152b082 100644 (file)
@@ -181,6 +181,7 @@ aux h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp
 
     perlhist           Perl history records
     perldelta          Perl changes since previous version
+    perl52511delta     Perl changes in version 5.25.11
     perl52510delta     Perl changes in version 5.25.10
     perl5259delta      Perl changes in version 5.25.9
     perl5258delta      Perl changes in version 5.25.8
diff --git a/pod/perl52511delta.pod b/pod/perl52511delta.pod
new file mode 100644 (file)
index 0000000..5deac54
--- /dev/null
@@ -0,0 +1,201 @@
+=encoding utf8
+
+=head1 NAME
+
+perl52511delta - what is new for perl v5.25.11
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.25.10 release and the 5.25.11
+release.
+
+If you are upgrading from an earlier release such as 5.25.9, first read
+L<perl52510delta>, which describes differences between 5.25.9 and 5.25.10.
+
+=head1 Notice
+
+This release includes two important updates:
+
+=over 4
+
+=item * Turning on the removal of C<.> in C<@INC>
+
+=item * Providing a warning when C<do> is used on a file in C<.>
+
+=back
+
+=head1 Security
+
+=head2 Remove current dir (C<.>) from C<@INC>
+
+For security reasons, C<@INC> no longer contains the default directory
+(C<.>).
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<Compress::Raw::Bzip2> has been upgraded from version 2.070 to 2.074.
+
+=item *
+
+L<Compress::Raw::Zlib> has been upgraded from version 2.070 to 2.074.
+
+=item *
+
+L<Config::Perl::V> has been upgraded from version 0.27 to 0.28.
+
+=item *
+
+L<ExtUtils::ParseXS> has been upgraded from version 3.33 to 3.34.
+
+=item *
+
+L<ExtUtils::Typemaps> has been upgraded from version 3.33 to 3.34.
+
+=item *
+
+L<File::Spec> has been upgraded from version 3.66 to 3.67.
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 5.20170220 to 5.20170320.
+
+=item *
+
+L<Pod::Perldoc> has been upgraded from version 3.27 to 3.28.
+
+=item *
+
+L<Test::Harness> has been upgraded from version 3.36_01 to 3.38.
+
+=item *
+
+L<threads> has been upgraded from version 2.13 to 2.15.
+
+=item *
+
+L<threads::shared> has been upgraded from version 1.54 to 1.55.
+
+=item *
+
+L<VMS::Stdio> has been upgraded from version 2.42 to 2.41.
+
+=back
+
+=head1 Diagnostics
+
+=head2 New Diagnostics
+
+=head3 New Warnings
+
+=over 4
+
+=item *
+
+Since C<.> is removed from C<@INC>, C<do> will now trigger a warning
+recommending on fixing the C<do> statement.
+
+L<do "%s" failed, '.' is no longer in @INC|perldiag/"do "%s" failed, '.' is no longer in @INC">
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+C<DEFAULT_INC_EXCLUDES_DOT> has been turned on as default.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+C< $-{$name} > would leak an C<AV> on each access if the regular
+expression had no named captures.  The same applies to access to any
+hash tied with L<Tie::Hash::NamedCapture> and C<< all =E<gt> 1 >>. [perl
+#130822]
+
+=back
+
+=head1 Obituary
+
+It is with great sadness we note that Kip Hampton passed away. Probably
+best known as the author of the Perl & XML column on XML.com, he was a
+core contributor to AxKit, ab XML server platform that became an Apache
+Foundation project. He was a frequent speaker in the early days at
+OSCON, and most recently at YAPC::NA in Madison. He was frequently on
+irc.perl.org as `ubu`, generally in the #axkit-dahut community, the
+group responsible for YAPC::NA Asheville in 2011.
+
+Kip and his constant contributions to the community will be greatly missed.
+
+=head1 Acknowledgements
+
+
+Perl 5.25.11 represents approximately 4 weeks of development since Perl 5.25.10
+and contains approximately 4,900 lines of changes across 240 files from 21
+authors.
+
+Excluding auto-generated files, documentation and release tools, there were
+approximately 2,200 lines of changes to 170 .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.25.11:
+
+Aaron Crane, Andy Lester, Chris 'BinGOs' Williams, Craig A. Berry, Dave Cross,
+David Golden, David Mitchell, Dominic Hargreaves, H.Merijn Brand, Hugo van der
+Sanden, James E Keenan, Jarkko Hietaniemi, Jerry D. Hedden, Karl Williamson,
+Leon Timmermans, Matthew Horsfall, Renee Baecker, Sawyer X, Shlomi Fish, Steve
+Hay, Tony Cook.
+
+The list above is almost certainly incomplete as it is automatically generated
+from version control history. In particular, it does not include the names of
+the (very much appreciated) contributors who reported issues to the Perl bug
+tracker.
+
+Many of the changes included in this version originated in the CPAN modules
+included in Perl's core. We're grateful to the entire CPAN community for
+helping Perl to flourish.
+
+For a more complete list of all of Perl's historical contributors, please see
+the F<AUTHORS> file in the Perl source distribution.
+
+=head1 Reporting Bugs
+
+If you find what you think is a bug, you might check the perl bug database
+at L<https://rt.perl.org/> .  There may also be information at
+L<http://www.perl.org/> , the Perl Home Page.
+
+If you believe you have an unreported bug, please run the L<perlbug> program
+included with your release.  Be sure to trim your bug down to a tiny but
+sufficient test case.  Your bug report, along with the output of C<perl -V>,
+will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
+
+If the bug you are reporting has security implications which make it
+inappropriate to send to a publicly archived mailing list, then see
+L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
+for details of how to report the issue.
+
+=head1 SEE ALSO
+
+The F<Changes> file for an explanation of how to view exhaustive details on
+what changed.
+
+The F<INSTALL> file for how to build Perl.
+
+The F<README> file for general stuff.
+
+The F<Artistic> and F<Copying> files for copyright information.
+
+=cut
index 5018089..e289890 100644 (file)
@@ -2,34 +2,15 @@
 
 =head1 NAME
 
-perldelta - what is new for perl v5.25.11
+perldelta - what is new for perl v5.25.12
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.25.10 release and the 5.25.11
+This document describes differences between the 5.25.11 release and the 5.25.12
 release.
 
-If you are upgrading from an earlier release such as 5.25.9, first read
-L<perl52510delta>, which describes differences between 5.25.9 and 5.25.10.
-
-=head1 Notice
-
-This release includes two important updates:
-
-=over 4
-
-=item * Turning on the removal of C<.> in C<@INC>
-
-=item * Providing a warning when C<do> is used on a file in C<.>
-
-=back
-
-=head1 Security
-
-=head2 Remove current dir (C<.>) from C<@INC>
-
-For security reasons, C<@INC> no longer contains the default directory
-(C<.>).
+If you are upgrading from an earlier release such as 5.25.10, first read
+L<perl52511delta>, which describes differences between 5.25.10 and 5.25.11.
 
 =head1 Modules and Pragmata
 
@@ -39,51 +20,32 @@ For security reasons, C<@INC> no longer contains the default directory
 
 =item *
 
-L<Compress::Raw::Bzip2> has been upgraded from version 2.070 to 2.074.
-
-=item *
-
-L<Compress::Raw::Zlib> has been upgraded from version 2.070 to 2.074.
+L<base> has been upgraded from version 2.24 to 2.25.
 
 =item *
 
-L<Config::Perl::V> has been upgraded from version 0.27 to 0.28.
+L<CPAN> has been upgraded from version 2.17 to 2.18.
 
 =item *
 
-L<ExtUtils::ParseXS> has been upgraded from version 3.33 to 3.34.
+L<DynaLoader> has been upgraded from version 1.41 to 1.42.
 
 =item *
 
-L<ExtUtils::Typemaps> has been upgraded from version 3.33 to 3.34.
+L<Module::CoreList> has been upgraded from version 5.20170320 to
+5.20170420.
 
 =item *
 
-L<File::Spec> has been upgraded from version 3.66 to 3.67.
+L<Safe> has been upgraded from version 2.39 to 2.40.
 
 =item *
 
-L<Module::CoreList> has been upgraded from version 5.20170220 to 5.20170320.
+L<threads::shared> has been upgraded from version 1.55 to 1.56.
 
 =item *
 
-L<Pod::Perldoc> has been upgraded from version 3.27 to 3.28.
-
-=item *
-
-L<Test::Harness> has been upgraded from version 3.36_01 to 3.38.
-
-=item *
-
-L<threads> has been upgraded from version 2.13 to 2.15.
-
-=item *
-
-L<threads::shared> has been upgraded from version 1.54 to 1.55.
-
-=item *
-
-L<VMS::Stdio> has been upgraded from version 2.42 to 2.41.
+L<XSLoader> has been upgraded from version 0.26 to 0.27.
 
 =back
 
@@ -91,73 +53,50 @@ L<VMS::Stdio> has been upgraded from version 2.42 to 2.41.
 
 =head2 New Diagnostics
 
-=head3 New Warnings
+=head3 New Errors
 
 =over 4
 
 =item *
 
-Since C<.> is removed from C<@INC>, C<do> will now trigger a warning
-recommending on fixing the C<do> statement.
+Since C<.> is now removed from C<@INC> by default, C<do> will now trigger
+a warning recommending to fix the C<do> statement:
 
-L<do "%s" failed, '.' is no longer in @INC|perldiag/"do "%s" failed, '.' is no longer in @INC">
+L<do "%s" failed, '.' is no longer in @INC|perldiag/do "%s" failed, '.' is no longer in @INC; did you mean do ".E<sol>%s"?>
 
 =back
 
-=head1 Configuration and Compilation
+=head2 Changes to Existing Diagnostics
 
 =over 4
 
 =item *
 
-C<DEFAULT_INC_EXCLUDES_DOT> has been turned on as default.
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
+When a C<require> fails, we now do not provide C<@INC> when the C<require>
+is for a file instead of a module.
 
 =item *
 
-C< $-{$name} > would leak an C<AV> on each access if the regular
-expression had no named captures.  The same applies to access to any
-hash tied with L<Tie::Hash::NamedCapture> and C<< all =E<gt> 1 >>. [perl
-#130822]
+When C<@INC> is not scanned for a C<require> call, we no longer display
+C<@INC> to avoid confusion.
 
 =back
 
-=head1 Obituary
-
-It is with great sadness we note that Kip Hampton passed away. Probably
-best known as the author of the Perl & XML column on XML.com, he was a
-core contributor to AxKit, ab XML server platform that became an Apache
-Foundation project. He was a frequent speaker in the early days at
-OSCON, and most recently at YAPC::NA in Madison. He was frequently on
-irc.perl.org as `ubu`, generally in the #axkit-dahut community, the
-group responsible for YAPC::NA Asheville in 2011.
-
-Kip and his constant contributions to the community will be greatly missed.
-
 =head1 Acknowledgements
 
-
-Perl 5.25.11 represents approximately 4 weeks of development since Perl 5.25.10
-and contains approximately 4,900 lines of changes across 240 files from 21
+Perl 5.25.12 represents approximately 4 weeks of development since Perl 5.25.11
+and contains approximately 1,700 lines of changes across 150 files from 8
 authors.
 
 Excluding auto-generated files, documentation and release tools, there were
-approximately 2,200 lines of changes to 170 .pm, .t, .c and .h files.
+approximately 700 lines of changes to 73 .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.25.11:
+improvements that became Perl 5.25.12:
 
-Aaron Crane, Andy Lester, Chris 'BinGOs' Williams, Craig A. Berry, Dave Cross,
-David Golden, David Mitchell, Dominic Hargreaves, H.Merijn Brand, Hugo van der
-Sanden, James E Keenan, Jarkko Hietaniemi, Jerry D. Hedden, Karl Williamson,
-Leon Timmermans, Matthew Horsfall, Renee Baecker, Sawyer X, Shlomi Fish, Steve
-Hay, Tony Cook.
+Chris 'BinGOs' Williams, Dagfinn Ilmari Mannsåker, David Mitchell, James E
+Keenan, Jarkko Hietaniemi, Karl Williamson, Pali, Sawyer X.
 
 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
index 9a4cdf6..730010a 100644 (file)
@@ -2061,13 +2061,13 @@ define a C<$VERSION>.
 (F) You cannot put a repeat count of any kind right after the '/' code.
 See L<perlfunc/pack>.
 
-=item do "%s" failed, '.' is no longer in @INC
+=item do "%s" failed, '.' is no longer in @INC; did you mean do "./%s"?
 
-(W deprecated) Previously C< do "somefile"; > would search the current
-directory for the specified file.  Since F<.> has been removed from
-C<@INC> by default this is no longer true.  To search the current
-directory (and only the current directory) you can write C< do
-"./somefile"; >.
+(D deprecated) Previously C< do "somefile"; > would search the current
+directory for the specified file.  Since perl v5.26.0, F<.> has been
+removed from C<@INC> by default, so this is no longer true.  To search the
+current directory (and only the current directory) you can write
+C< do "./somefile"; >.
 
 =item Don't know how to get file name
 
@@ -2098,7 +2098,7 @@ subroutine or package before the current location.  You can use an empty
 (D deprecated, misc) You used the obsolescent C<dump()> built-in function,
 without fully qualifying it as C<CORE::dump()>. Maybe it's a typo.
 
-Use of a unqualified C<dump()> was deprecated in Perl 5.30, and this
+Use of a unqualified C<dump()> was deprecated in Perl 5.8.0, and this
 will not be available in Perl 5.30.
 
 See L<perlfunc/dump>.
index 1c971c3..70f8e0d 100644 (file)
@@ -161,7 +161,7 @@ you:
 
 If the B<ExtUtils::Embed> module isn't part of your Perl distribution,
 you can retrieve it from
-http://www.perl.com/perl/CPAN/modules/by-module/ExtUtils/
+L<http://www.perl.com/perl/CPAN/modules/by-module/ExtUtils/>
 (If this documentation came from your Perl distribution, then you're
 running 5.004 or better and you already have it.)
 
@@ -1137,7 +1137,7 @@ Christiansen, Guy Decoux, Hallvard Furuseth, Dov Grobgeld, and Ilya
 Zakharevich.
 
 Doug MacEachern has an article on embedding in Volume 1, Issue 4 of
-The Perl Journal ( http://www.tpj.com/ ).  Doug is also the developer of the
+The Perl Journal ( L<http://www.tpj.com/> ).  Doug is also the developer of the
 most widely-used Perl embedding: the mod_perl system
 (perl.apache.org), which embeds Perl in the Apache web server.
 Oracle, Binary Evolution, ActiveState, and Ben Sugars's nsapi_perl
index b61b6f9..f81ee8a 100644 (file)
@@ -564,9 +564,7 @@ and thus is does not work inside a string eval, the presence of
 regexes with embedded newlines that are specified with raw C</.../>
 delimiters and don't have a modifier C</x> are indistinguishable from
 code chunks beginning with the division operator C</>. As a workaround
-you must use C<m/.../> or C<m?...?> for such patterns. Also, the presence of
-regexes specified with raw C<?...?> delimiters may cause mysterious
-errors. The workaround is to use C<m?...?> instead.  See
+you must use C<m/.../> or C<m?...?> for such patterns.  See
 L<http://search.cpan.org/perldoc?Switch#LIMITATIONS>
 
 Currently the content of the C<__DATA__> block is not filtered.
index ae97bce..38747a6 100644 (file)
@@ -1805,11 +1805,18 @@ See L<perlsyn> for alternative strategies.
 X<do>
 
 Uses the value of EXPR as a filename and executes the contents of the
-file as a Perl script.
+file as a Perl script:
 
+    # load the exact specified file (./ and ../ special-cased)
+    do '/foo/stat.pl';
     do './stat.pl';
+    do '../foo/stat.pl';
 
-is largely like
+    # search for the named file within @INC
+    do 'stat.pl';
+    do 'foo/stat.pl';
+
+C<do './stat.pl'> is largely like
 
     eval `cat stat.pl`;
 
@@ -1820,17 +1827,20 @@ scope; C<eval STRING> does.  It's the same, however, in that it does
 reparse the file every time you call it, so you probably don't want
 to do this inside a loop.
 
-Using C<do> with no path, like
+Using C<do> with a relative path (except for F<./> and F<../>), like
 
-    do 'stat.pl';
+    do 'foo/stat.pl';
 
 will search the L<C<@INC>|perlvar/@INC> directories, and update
 L<C<%INC>|perlvar/%INC> if the file is found.  See L<perlvar/@INC>
 and L<perlvar/%INC> for these variables. In particular, note that
 whilst historically L<C<@INC>|perlvar/@INC> contained '.' (the
 current directory) making these two cases equivalent, that is no
-longer necessarily the case, as there is now a compile-time option
-to disable this behaviour.
+longer necessarily the case, as '.' is not included in C<@INC> by default
+in perl versions 5.26.0 onwards. Instead, perl will now warn:
+
+    do "stat.pl" failed, '.' is no longer in @INC;
+    did you mean do "./stat.pl"?
 
 If L<C<do>|/do EXPR> can read the file but cannot compile it, it
 returns L<C<undef>|/undef EXPR> and sets an error message in
@@ -1848,7 +1858,8 @@ if there's a problem.
 You might like to use L<C<do>|/do EXPR> to read in a program
 configuration file.  Manual error checking can be done this way:
 
-    # read in config files: system first, then user
+    # Read in config files: system first, then user.
+    # Beware of using relative pathnames here.
     for $file ("/share/prog/defaults.rc",
                "$ENV{HOME}/.someprogrc")
     {
index 9d3edcc..d05a29d 100644 (file)
@@ -918,11 +918,11 @@ general testing and development. Dromedary syncs the git tree from
 camel every few minutes, you should not push there. Both machines also
 have a full CPAN mirror in F</srv/CPAN>, please use this. To share files
 with the general public, dromedary serves your F<~/public_html/> as
-C<http://users.perl5.git.perl.org/~yourlogin/>
+C<L<http://users.perl5.git.perl.org/~yourlogin/>>
 
 These hosts have fairly strict firewalls to the outside. Outgoing, only
 rsync, ssh and git are allowed. For http and ftp, you can use
-http://webproxy:3128 as proxy. Incoming, the firewall tries to detect
+L<http://webproxy:3128> as proxy. Incoming, the firewall tries to detect
 attacks and blocks IP addresses with suspicious activity. This
 sometimes (but very rarely) has false positives and you might get
 blocked. The quickest way to get unblocked is to notify the admins.
index c8c6b86..4c645a6 100644 (file)
@@ -1107,11 +1107,11 @@ wanting to go about Perl development.
 
 =head1 CPAN TESTERS AND PERL SMOKERS
 
-The CPAN testers ( http://testers.cpan.org/ ) are a group of volunteers
+The CPAN testers ( L<http://testers.cpan.org/> ) are a group of volunteers
 who test CPAN modules on a variety of platforms.
 
-Perl Smokers ( http://www.nntp.perl.org/group/perl.daily-build/ and
-http://www.nntp.perl.org/group/perl.daily-build.reports/ )
+Perl Smokers ( L<http://www.nntp.perl.org/group/perl.daily-build/> and
+L<http://www.nntp.perl.org/group/perl.daily-build.reports/> )
 automatically test Perl source releases on platforms with various
 configurations.
 
index 45d42f6..d80c69e 100644 (file)
@@ -1049,7 +1049,7 @@ diddle with the flags (see above).
 
 =head2 Coverity
 
-Coverity (http://www.coverity.com/) is a product similar to lint and as
+Coverity (L<http://www.coverity.com/>) is a product similar to lint and as
 a testbed for their product they periodically check several open source
 projects, and they give out accounts to open source developers to the
 defect databases.
@@ -1072,8 +1072,8 @@ cut-and-pasted code changes, all the other spots should probably be
 changed, too.  Therefore such code should probably be turned into a
 subroutine or a macro.
 
-cpd (http://pmd.sourceforge.net/cpd.html) is part of the pmd project
-(http://pmd.sourceforge.net/).  pmd was originally written for static
+cpd (L<http://pmd.sourceforge.net/cpd.html>) is part of the pmd project
+(L<http://pmd.sourceforge.net/>).  pmd was originally written for static
 analysis of Java code, but later the cpd part of it was extended to
 parse also C and C++.
 
index 7473bdc..cd91e6c 100644 (file)
@@ -610,6 +610,7 @@ the strings?).
  Abigail   5.25.9       2017-Jan-20
  Renee     5.25.10      2017-Feb-20
  Sawyer X  5.25.11      2017-Feb-20
+ Sawyer X  5.25.12      2017-Mar-20
 
 =head2 SELECTED RELEASE SIZES
 
index 9559cb1..5c168c1 100644 (file)
@@ -675,7 +675,7 @@ in using third-party modules, which are documented below.
 =head2 Using Perl modules
 
 Perl modules provide a range of features to help you avoid reinventing
-the wheel, and can be downloaded from CPAN ( http://www.cpan.org/ ).  A
+the wheel, and can be downloaded from CPAN ( L<http://www.cpan.org/> ).  A
 number of popular modules are included with the Perl distribution
 itself.
 
index 71f6b6c..39c410d 100644 (file)
@@ -7,10 +7,10 @@ perlmodinstall - Installing CPAN Modules
 You can think of a module as the fundamental unit of reusable Perl
 code; see L<perlmod> for details.  Whenever anyone creates a chunk of
 Perl code that they think will be useful to the world, they register
-as a Perl developer at http://www.cpan.org/modules/04pause.html
+as a Perl developer at L<http://www.cpan.org/modules/04pause.html>
 so that they can then upload their code to the CPAN.  The CPAN is the
 Comprehensive Perl Archive Network and can be accessed at
-http://www.cpan.org/ , and searched at http://search.cpan.org/ .
+L<http://www.cpan.org/> , and searched at L<http://search.cpan.org/> .
 
 This documentation is for people who want to download CPAN modules
 and install them on their own computer.
@@ -68,14 +68,14 @@ directory) and use this approach.
 B<If you're on a Unix or Unix-like system,>
 
 You can use Andreas Koenig's CPAN module
-( http://www.cpan.org/modules/by-module/CPAN )
+( L<http://www.cpan.org/modules/by-module/CPAN> )
 to automate the following steps, from DECOMPRESS through INSTALL.
 
 A. DECOMPRESS
 
 Decompress the file with C<gzip -d yourmodule.tar.gz>
 
-You can get gzip from ftp://prep.ai.mit.edu/pub/gnu/
+You can get gzip from L<ftp://prep.ai.mit.edu/pub/gnu/>
 
 Or, you can combine this step with the next to save disk space:
 
@@ -128,7 +128,7 @@ steps below.
 
    A. DECOMPRESS
 
-You can use the shareware Winzip ( http://www.winzip.com ) to
+You can use the shareware Winzip ( L<http://www.winzip.com> ) to
 decompress and unpack modules.
 
    B. UNPACK
@@ -138,9 +138,9 @@ If you used WinZip, this was already done for you.
    C. BUILD
 
 You'll need the C<nmake> utility, available at
-http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/nmake15.exe
+L<http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/nmake15.exe>
 or dmake, available on CPAN.
-http://search.cpan.org/dist/dmake/
+L<http://search.cpan.org/dist/dmake/>
 
 Does the module require compilation (i.e. does it have files that end
 in .xs, .c, .h, .y, .cc, .cxx, or .C)?  If it does, life is now
@@ -148,7 +148,7 @@ officially tough for you, because you have to compile the module
 yourself (no easy feat on Windows).  You'll need a compiler such as
 Visual C++.  Alternatively, you can download a pre-built PPM package
 from ActiveState.
-http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/
+L<http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/>
 
 Go into the newly-created directory and type:
 
@@ -170,7 +170,7 @@ B<If you're using a Macintosh with "Classic" MacOS and MacPerl,>
 A. DECOMPRESS
 
 First, make sure you have the latest B<cpan-mac> distribution (
-http://www.cpan.org/authors/id/CNANDOR/ ), which has utilities for
+L<http://www.cpan.org/authors/id/CNANDOR/> ), which has utilities for
 doing all of the steps.  Read the cpan-mac directions carefully and
 install it.  If you choose not to use cpan-mac for some reason, there
 are alternatives listed here.
@@ -179,15 +179,15 @@ After installing cpan-mac, drop the module archive on the
 B<untarzipme> droplet, which will decompress and unpack for you.
 
 B<Or>, you can either use the shareware B<StuffIt Expander> program
-( http://my.smithmicro.com/mac/stuffit/ )
+( L<http://my.smithmicro.com/mac/stuffit/> )
 or the freeware B<MacGzip> program (
-http://persephone.cps.unizar.es/general/gente/spd/gzip/gzip.html ).
+L<http://persephone.cps.unizar.es/general/gente/spd/gzip/gzip.html> ).
 
 B. UNPACK
 
 If you're using untarzipme or StuffIt, the archive should be extracted
 now.  B<Or>, you can use the freeware B<suntar> or I<Tar> (
-http://hyperarchive.lcs.mit.edu/HyperArchive/Archive/cmp/ ).
+L<http://hyperarchive.lcs.mit.edu/HyperArchive/Archive/cmp/> ).
 
 C. BUILD
 
@@ -241,7 +241,7 @@ B<If you're on the DJGPP port of DOS,>
 
    A. DECOMPRESS
 
-djtarx ( ftp://ftp.delorie.com/pub/djgpp/current/v2/ )
+djtarx ( L<ftp://ftp.delorie.com/pub/djgpp/current/v2/> )
 will both uncompress and unpack.
 
    B. UNPACK
@@ -271,7 +271,7 @@ You will need the packages mentioned in F<README.dos> in the Perl distribution.
 B<If you're on OS/2,>
 
 Get the EMX development suite and gzip/tar, from either Hobbes (
-http://hobbes.nmsu.edu ) or Leo ( http://www.leo.org ), and then follow
+L<http://hobbes.nmsu.edu> ) or Leo ( L<http://www.leo.org> ), and then follow
 the instructions for Unix.
 
 =item *
@@ -319,7 +319,7 @@ Or, if you're fond of VMS command syntax:
 C. BUILD
 
 Make sure you have MMS (from Digital) or the freeware MMK ( available
-from MadGoat at http://www.madgoat.com ).  Then type this to create
+from MadGoat at L<http://www.madgoat.com> ).  Then type this to create
 the DESCRIP.MMS for the module:
 
     perl Makefile.PL
@@ -350,7 +350,7 @@ A. DECOMPRESS
 Decompress the file with C<gzip -d yourmodule.tar.gz>
 
 You can get gzip from
-http://www.s390.ibm.com/products/oe/bpxqp1.html
+L<http://www.s390.ibm.com/products/oe/bpxqp1.html>
 
 B. UNPACK
 
@@ -360,7 +360,7 @@ Unpack the result with
 
 The BUILD and INSTALL steps are identical to those for Unix.  Some
 modules generate Makefiles that work better with GNU make, which is
-available from http://www.mks.com/s390/gnu/
+available from L<http://www.mks.com/s390/gnu/>
 
 =back
 
index 62390a4..73e09b3 100644 (file)
@@ -798,7 +798,7 @@ L<ExtUtils::MakeMaker>, L<Module::Build>
 
 L<Test::Simple>, L<Test::Inline>, L<Carp::Assert>, L<Test::More>, L<Test::MockObject>
 
-=item http://pause.perl.org/
+=item L<http://pause.perl.org/>
 
 Perl Authors Upload Server.  Contains links to information for module
 authors.
index f3e7c69..61cc7bf 100644 (file)
@@ -234,7 +234,7 @@ file.
 =item Get a CPAN user ID
 
 Every developer publishing modules on CPAN needs a CPAN ID.  Visit
-C<http://pause.perl.org/>, select "Request PAUSE Account", and wait for
+C<L<http://pause.perl.org/>>, select "Request PAUSE Account", and wait for
 your request to be approved by the PAUSE administrators.
 
 =item C<perl Makefile.PL; make test; make distcheck; make dist>
@@ -276,5 +276,5 @@ Updated by Kirrily "Skud" Robert, C<skud@cpan.org>
 L<perlmod>, L<perlmodlib>, L<perlmodinstall>, L<h2xs>, L<strict>,
 L<Carp>, L<Exporter>, L<perlpod>, L<Test::Simple>, L<Test::More>
 L<ExtUtils::MakeMaker>, L<Module::Build>, L<Module::Starter>
-L<http://www.cpan.org/>, Ken Williams's tutorial on building your own
+L<http://www.cpan.org/>, Ken Williams' tutorial on building your own
 module at L<http://mathforum.org/~ken/perl_modules.html>
index be809e6..26196c8 100644 (file)
@@ -217,8 +217,8 @@ are platform-dependent.
 =head2 Symbolic Unary Operators
 X<unary operator> X<operator, unary>
 
-Unary C<"!"> performs logical negation, that is, "not".  See also C<not> for a lower
-precedence version of this.
+Unary C<"!"> performs logical negation, that is, "not".  See also
+L<C<not>|/Logical Not> for a lower precedence version of this.
 X<!>
 
 Unary C<"-"> performs arithmetic negation if the operand is numeric,
@@ -2036,8 +2036,6 @@ Here is the output (split into several lines):
 =item C<m?I<PATTERN>?msixpodualngc>
 X<?> X<operator, match-once>
 
-=item C<?I<PATTERN>?msixpodualngc>
-
 This is just like the C<m/I<PATTERN>/> search, except that it matches
 only once between calls to the C<reset()> operator.  This is a useful
 optimization when you want to see only the first occurrence of
@@ -2914,7 +2912,7 @@ I<sed> hackers who haven't picked up the saner idiom yet.  A warning
 is emitted if the S<C<use warnings>> pragma or the B<-w> command-line flag
 (that is, the C<$^W> variable) was set.
 
-=item C<RE> in C<?RE?>, C</RE/>, C<m/RE/>, C<s/RE/foo/>,
+=item C<RE> in C<m?RE?>, C</RE/>, C<m/RE/>, C<s/RE/foo/>,
 
 Processing of C<\Q>, C<\U>, C<\u>, C<\L>, C<\l>, C<\F>, C<\E>,
 and interpolation happens (almost) as with C<qq//> constructs.
@@ -2957,7 +2955,7 @@ finish the regular expression, C<\/> will be stripped to C</> on
 the previous step, and C<\\/> will be left as is.  Because C</> is
 equivalent to C<\/> inside a regular expression, this does not
 matter unless the delimiter happens to be character special to the
-RE engine, such as in C<s*foo*bar*>, C<m[foo]>, or C<?foo?>; or an
+RE engine, such as in C<s*foo*bar*>, C<m[foo]>, or C<m?foo?>; or an
 alphanumeric char, as in:
 
   m m ^ a \s* b mmx;
index 87d632f..260acab 100644 (file)
@@ -406,7 +406,7 @@ C<wordmatch> program.  The wallclock, user and system, times are at the top of
 the analysis, and after this are the main columns defining which define the
 report.  Check the C<dprofpp> docs for details of the many options it supports.
 
-See also C<Apache::DProf> which hooks C<Devel::DProf> into C<mod_perl>.
+See also C<L<Apache::DProf>> which hooks C<Devel::DProf> into C<mod_perl>.
 
 =head2 Devel::Profiler
 
@@ -470,7 +470,8 @@ As the author of C<Devel::Proviler> writes:
 
 YMMV.
 
-See also C<Devel::Apache::Profiler> which hooks C<Devel::Profiler> into C<mod_perl>.
+See also C<L<Devel::Apache::Profiler>> which hooks C<Devel::Profiler>
+into C<mod_perl>.
 
 =head2 Devel::SmallProf
 
@@ -530,7 +531,8 @@ time.  That regex line is looking a bit suspicious, for example.  Remember that
 these tools are supposed to be used together, there is no single best way to
 profile your code, you need to use the best tools for the job.
 
-See also C<Apache::SmallProf> which hooks C<Devel::SmallProf> into C<mod_perl>.
+See also C<L<Apache::SmallProf>> which hooks C<Devel::SmallProf> into
+C<mod_perl>.
 
 =head2 Devel::FastProf
 
@@ -749,7 +751,8 @@ sort of output you can expect from this cool tool.
 
 Oodles of very useful information in there - this seems to be the way forward.
 
-See also C<Devel::NYTProf::Apache> which hooks C<Devel::NYTProf> into C<mod_perl>.
+See also C<L<Devel::NYTProf::Apache>> which hooks C<Devel::NYTProf> into
+C<mod_perl>.
 
 =head1  SORTING
 
index 22524a9..a2aecba 100644 (file)
@@ -276,7 +276,7 @@ section numbering conventions.
 
 This documentation is maintained as part of the podlators distribution.
 The current version is always available from its web site at
-<http://www.eyrie.org/~eagle/software/podlators/>.
+L<http://www.eyrie.org/~eagle/software/podlators/>.
 
 =head1 AUTHOR
 
index 7b48355..57a98e4 100644 (file)
@@ -2495,7 +2495,8 @@ at each matching starting point like so:
 
 Any number of C<(*PRUNE)> assertions may be used in a pattern.
 
-See also C<< (?>pattern) >> and possessive quantifiers for other ways to
+See also C<<< L<< /(?>pattern) >> >>> and possessive quantifiers for
+other ways to
 control backtracking. In some cases, the use of C<(*PRUNE)> can be
 replaced with a C<< (?>pattern) >> with no functional difference; however,
 C<(*PRUNE)> can be used to handle cases that cannot be expressed using a
index cd17c8b..bd5d38e 100644 (file)
@@ -502,7 +502,7 @@ to do with references.
 Author: Mark Jason Dominus, Plover Systems (C<mjd-perl-ref+@plover.com>)
 
 This article originally appeared in I<The Perl Journal>
-( http://www.tpj.com/ ) volume 3, #2.  Reprinted with permission.
+( L<http://www.tpj.com/> ) volume 3, #2.  Reprinted with permission.
 
 The original title was I<Understand References Today>.
 
index db7c173..c9deafa 100644 (file)
@@ -60,7 +60,7 @@ with two additions:
 'e' may be specified multiple times. 'replacement' is interpreted
 as a double quoted string unless a single-quote (C<'>) is the delimiter.
 
-C<?pattern?> is like C<m/pattern/> but matches only once. No alternate
+C<m?pattern?> is like C<m/pattern/> but matches only once. No alternate
 delimiters can be used.  Must be reset with reset().
 
 =head2 SYNTAX
@@ -308,7 +308,7 @@ Captured groups are numbered according to their I<opening> paren.
 
    pos         Return or set current match position
    quotemeta   Quote metacharacters
-   reset       Reset ?pattern? status
+   reset       Reset m?pattern? status
    study       Analyze string for optimizing matching
 
    split       Use a regex to split a string into parts
@@ -393,7 +393,7 @@ for details on regexes and internationalisation.
 =item *
 
 I<Mastering Regular Expressions> by Jeffrey Friedl
-(F<http://oreilly.com/catalog/9780596528126/>) for a thorough grounding and
+(L<http://oreilly.com/catalog/9780596528126/>) for a thorough grounding and
 reference on the topic.
 
 =back
index 357b8b4..dff9f71 100644 (file)
@@ -1379,6 +1379,15 @@ a boolean variable. Setting this to C<"1"> is not the right way to
 your shell before starting Perl).  See the description of the B<-C>
 switch for more information.
 
+=item PERL_USE_UNSAFE_INC
+X<PERL_USE_UNSAFE_INC>
+
+If perl has been configured to not have the current directory in
+L<C<@INC>|perlvar/@INC> by default, this variable can be set to C<"1">
+to reinstate it.  It's primarily intended for use while building and
+testing modules that have not been updated to deal with "." not being in
+C<@INC> and should not be set in the environment for day-to-day use.
+
 =item SYS$LOGIN (specific to the VMS port)
 X<SYS$LOGIN>
 
index f5e35a3..956214f 100644 (file)
@@ -1104,7 +1104,7 @@ Here's a short bibliography courtesy of Jürgen Christoffel:
 Birrell, Andrew D. An Introduction to Programming with
 Threads. Digital Equipment Corporation, 1989, DEC-SRC Research Report
 #35 online as
-ftp://ftp.dec.com/pub/DEC/SRC/research-reports/SRC-035.pdf
+L<ftp://ftp.dec.com/pub/DEC/SRC/research-reports/SRC-035.pdf>
 (highly recommended)
 
 Robbins, Kay. A., and Steven Robbins. Practical Unix Programming: A
index 23818a1..9c13c35 100644 (file)
@@ -36,8 +36,8 @@ Unicode support is an extensive requirement. While Perl does not
 implement the Unicode standard or the accompanying technical reports
 from cover to cover, Perl does support many Unicode features.
 
-Also, the use of Unicode may present security issues that aren't obvious.
-Read L<Unicode Security Considerations|http://www.unicode.org/reports/tr36>.
+Also, the use of Unicode may present security issues that aren't
+obvious, see L</Security Implications of Unicode>.
 
 =over 4
 
@@ -73,14 +73,16 @@ recognition of that (in string or regular expression literals, or in
 identifier names).  B<This is the only time when an explicit S<C<use
 utf8>> is needed.>  (See L<utf8>).
 
-=item C<BOM>-marked scripts and L<UTF-16|/Unicode Encodings> scripts autodetected
+If a Perl script begins with the bytes that form the UTF-8 encoding of
+the Unicode BYTE ORDER MARK (C<BOM>, see L</Unicode Encodings>), those
+bytes are completely ignored.
+
+=item L<UTF-16|/Unicode Encodings> scripts autodetected
 
 If a Perl script begins with the Unicode C<BOM> (UTF-16LE,
-UTF16-BE, or UTF-8), or if the script looks like non-C<BOM>-marked
+UTF16-BE), or if the script looks like non-C<BOM>-marked
 UTF-16 of either endianness, Perl will correctly read in the script as
-the appropriate Unicode encoding.  (C<BOM>-less UTF-8 cannot be
-effectively recognized or differentiated from ISO 8859-1 or other
-eight-bit encodings.)
+the appropriate Unicode encoding.
 
 =back
 
@@ -162,7 +164,7 @@ contain characters that have ordinal values larger than 255.
 
 If you use a Unicode editor to edit your program, Unicode characters may
 occur directly within the literal strings in UTF-8 encoding, or UTF-16.
-(The former requires a C<BOM> or C<use utf8>, the latter requires a C<BOM>.)
+(The former requires a C<use utf8>, the latter may require a C<BOM>.)
 
 L<perluniintro/Creating Unicode> gives other ways to place non-ASCII
 characters in your strings.
@@ -206,7 +208,8 @@ Semantics".
 
 Before Unicode, when a character was a byte was a character,
 Perl knew only about the 128 characters defined by ASCII, code points 0
-through 127 (except for under S<C<use locale>>).  That left the code
+through 127 (except for under L<S<C<use locale>>|perllocale>).  That
+left the code
 points 128 to 255 as unassigned, and available for whatever use a
 program might want.  The only semantics they have is their ordinal
 numbers, and that they are members of none of the non-negative character
@@ -1630,15 +1633,23 @@ Also, note the following:
 
 Malformed UTF-8
 
-Unfortunately, the original specification of UTF-8 leaves some room for
-interpretation of how many bytes of encoded output one should generate
-from one input Unicode character.  Strictly speaking, the shortest
-possible sequence of UTF-8 bytes should be generated,
-because otherwise there is potential for an input buffer overflow at
-the receiving end of a UTF-8 connection.  Perl always generates the
-shortest length UTF-8, and with warnings on, Perl will warn about
-non-shortest length UTF-8 along with other malformations, such as the
-surrogates, which are not Unicode code points valid for interchange.
+UTF-8 is very structured, so many combinations of bytes are invalid.  In
+the past, Perl tried to soldier on and make some sense of invalid
+combinations, but this can lead to security holes, so now, if the Perl
+core needs to process an invalid combination, it will either raise a
+fatal error, or will replace those bytes by the sequence that forms the
+Unicode REPLACEMENT CHARACTER, for which purpose Unicode created it.
+
+Every code point can be represented by more than one possible
+syntactically valid UTF-8 sequence.  Early on, both Unicode and Perl
+considered any of these to be valid, but now, all sequences longer
+than the shortest possible one are considered to be malformed.
+
+Unicode considers many code points to be illegal, or to be avoided.
+Perl generally accepts them, once they have passed through any input
+filters that may try to exclude them.  These have been discussed above
+(see "Surrogates" under UTF-16 in L</Unicode Encodings>,
+L</Noncharacter code points>, and L</Beyond Unicode code points>).
 
 =item *
 
diff --git a/pp.c b/pp.c
index a6b3041..cc4cb59 100644 (file)
--- a/pp.c
+++ b/pp.c
@@ -3477,41 +3477,29 @@ PP(pp_vec)
     SV * const src = POPs;
     const I32 lvalue = PL_op->op_flags & OPf_MOD || LVRET;
     SV * ret;
-    UV   retuv = 0;
-    STRLEN offset;
+    UV   retuv;
+    STRLEN offset = 0;
+    char errflags = 0;
 
     /* extract a STRLEN-ranged integer value from offsetsv into offset,
-     * or die trying */
+     * or flag that its out of range */
     {
         IV iv = SvIV(offsetsv);
 
         /* avoid a large UV being wrapped to a negative value */
-        if (SvIOK_UV(offsetsv) && SvUVX(offsetsv) > (UV)IV_MAX) {
-            if (!lvalue)
-                goto return_val; /* out of range: return 0 */
-            Perl_croak_nocontext("Out of memory!");
-        }
-
-        if (iv < 0) {
-            if (!lvalue)
-                goto return_val; /* out of range: return 0 */
-            Perl_croak_nocontext("Negative offset to vec in lvalue context");
-        }
-
+        if (SvIOK_UV(offsetsv) && SvUVX(offsetsv) > (UV)IV_MAX)
+            errflags = 4; /* out of range */
+        else if (iv < 0)
+            errflags = (1|4); /* negative offset, out of range */
 #if PTRSIZE < IVSIZE
-        if (iv > Size_t_MAX) {
-            if (!lvalue)
-                goto return_val; /* out of range: return 0 */
-            Perl_croak_nocontext("Out of memory!");
-        }
+        else if (iv > Size_t_MAX)
+            errflags = 4; /* out of range */
 #endif
-
-        offset = (STRLEN)iv;
+        else
+            offset = (STRLEN)iv;
     }
 
-    retuv = do_vecget(src, offset, size);
-
-  return_val:
+    retuv = errflags ? 0 : do_vecget(src, offset, size);
 
     if (lvalue) {                      /* it's an lvalue! */
        ret = sv_2mortal(newSV_type(SVt_PVLV));  /* Not TARG RT#67838 */
@@ -3520,6 +3508,7 @@ PP(pp_vec)
        LvTARG(ret) = SvREFCNT_inc_simple(src);
        LvTARGOFF(ret) = offset;
        LvTARGLEN(ret) = size;
+       LvFLAGS(ret)   = errflags;
     }
     else {
        dTARGET;
@@ -3527,7 +3516,6 @@ PP(pp_vec)
        ret = TARG;
     }
 
-
     sv_setuv(ret, retuv);
     if (!lvalue)
        SvSETMAGIC(ret);
index a126232..e75e151 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -3506,6 +3506,9 @@ S_doeval_compile(pTHX_ U8 gimme, CV* outside, U32 seq, HV *hh)
     return TRUE;
 }
 
+/* Return NULL if the file doesn't exist or isn't a file;
+ * else return PerlIO_openn().
+ */
 
 STATIC PerlIO *
 S_check_type_and_open(pTHX_ SV *name)
@@ -3566,6 +3569,11 @@ S_check_type_and_open(pTHX_ SV *name)
     return retio;
 }
 
+/* doopen_pm(): return the equivalent of PerlIO_openn() on the given name,
+ * but first check for bad names (\0) and non-files.
+ * Also if the filename ends in .pm and unless PERL_DISABLE_PMC,
+ * try loading Foo.pmc first.
+ */
 #ifndef PERL_DISABLE_PMC
 STATIC PerlIO *
 S_doopen_pm(pTHX_ SV *name)
@@ -3599,8 +3607,8 @@ S_doopen_pm(pTHX_ SV *name)
 #  define doopen_pm(name) check_type_and_open(name)
 #endif /* !PERL_DISABLE_PMC */
 
-/* require doesn't search for absolute names, or when the name is
-   explicitly relative the current directory */
+/* require doesn't search in @INC for absolute names, or when the name is
+   explicitly relative the current directory: i.e. ./, ../ */
 PERL_STATIC_INLINE bool
 S_path_is_searchable(const char *name)
 {
@@ -3708,8 +3716,10 @@ S_require_file(pTHX_ SV *sv)
     int vms_unixname = 0;
     char *unixdir;
 #endif
+    /* tryname is the actual pathname (with @INC prefix) which was loaded.
+     * It's stored as a value in %INC, and used for error messages */
     const char *tryname = NULL;
-    SV *namesv = NULL;
+    SV *namesv = NULL; /* SV equivalent of tryname */
     const U8 gimme = GIMME_V;
     int filter_has_file = 0;
     PerlIO *tryrsfp = NULL;
@@ -3780,14 +3790,20 @@ S_require_file(pTHX_ SV *sv)
                            "Compilation failed in require", unixname);
        }
 
+        /*XXX OPf_KIDS should always be true? -dapm 4/2017 */
         if (PL_op->op_flags & OPf_KIDS) {
             SVOP * const kid = (SVOP*)cUNOP->op_first;
 
             if (kid->op_type == OP_CONST && (kid->op_private & OPpCONST_BARE)) {
-                /* require foo (or use foo) with a bareword.
-                   Perl_load_module fakes up the identical optree, but its
-                   arguments aren't restricted by the parser to real barewords.
-                */
+                /* Make sure that a bareword module name (e.g. ::Foo::Bar)
+                 * doesn't map to a naughty pathname like /Foo/Bar.pm.
+                 * Note that the parser will normally detect such errors
+                 * at compile time before we reach here, but
+                 * Perl_load_module() can fake up an identical optree
+                 * without going near the parser, and being able to put
+                 * anything as the bareword. So we include a duplicate set
+                 * of checks here at runtime.
+                 */
                 const STRLEN package_len = len - 3;
                 const char slashdot[2] = {'/', '.'};
 #ifdef DOSISH
@@ -3823,13 +3839,22 @@ S_require_file(pTHX_ SV *sv)
 
     PERL_DTRACE_PROBE_FILE_LOADING(unixname);
 
-    /* prepare to compile file */
+    /* Try to locate and open a file, possibly using @INC  */
 
+    /* with "/foo/bar.pm", "./foo.pm" and "../foo/bar.pm", try to load
+     * the file directly rather than via @INC ... */
     if (!path_searchable) {
        /* At this point, name is SvPVX(sv)  */
        tryname = name;
        tryrsfp = doopen_pm(sv);
     }
+
+    /* ... but if we fail, still search @INC for code references;
+     * these are applied even on on-searchable paths (except
+     * if we got EACESS).
+     *
+     * For searchable paths, just search @INC normally
+     */
     if (!tryrsfp && !(errno == EACCES && !path_searchable)) {
        AV * const ar = GvAVn(PL_incgv);
        SSize_t i;
@@ -3972,8 +3997,9 @@ S_require_file(pTHX_ SV *sv)
                        filter_sub = NULL;
                    }
                }
-               else {
-                 if (path_searchable) {
+               else if (path_searchable) {
+                    /* match against a plain @INC element (non-searchable
+                     * paths are only matched against refs in @INC) */
                    const char *dir;
                    STRLEN dirlen;
 
@@ -4053,41 +4079,74 @@ S_require_file(pTHX_ SV *sv)
                          */
                         break;
                     }
-                 }
                }
            }
        }
     }
+
+    /* at this point we've ether opened a file (tryrsfp) or set errno */
+
     saved_errno = errno; /* sv_2mortal can realloc things */
     sv_2mortal(namesv);
     if (!tryrsfp) {
+        /* we failed; croak if require() or return undef if do() */
        if (op_is_require) {
            if(saved_errno == EMFILE || saved_errno == EACCES) {
                /* diag_listed_as: Can't locate %s */
                DIE(aTHX_ "Can't locate %s:   %s: %s",
                    name, tryname, Strerror(saved_errno));
            } else {
-               if (namesv) {                   /* did we lookup @INC? */
+               if (path_searchable) {          /* did we lookup @INC? */
                    AV * const ar = GvAVn(PL_incgv);
                    SSize_t i;
                    SV *const msg = newSVpvs_flags("", SVs_TEMP);
                    SV *const inc = newSVpvs_flags("", SVs_TEMP);
+                    const char *e = name + len - 3; /* possible .pm */
                    for (i = 0; i <= AvFILL(ar); i++) {
                        sv_catpvs(inc, " ");
                        sv_catsv(inc, *av_fetch(ar, i, TRUE));
                    }
-                   if (len >= 4 && memEQ(name + len - 3, ".pm", 4)) {
-                       const char *c, *e = name + len - 3;
-                       sv_catpv(msg, " (you may need to install the ");
-                       for (c = name; c < e; c++) {
-                           if (*c == '/') {
-                               sv_catpvs(msg, "::");
-                           }
-                           else {
-                               sv_catpvn(msg, c, 1);
-                           }
-                       }
-                       sv_catpv(msg, " module)");
+                   if (e > name && _memEQs(e, ".pm")) {
+                       const char *c;
+                        bool utf8 = cBOOL(SvUTF8(sv));
+
+                        /* if the filename, when converted from "Foo/Bar.pm"
+                         * form back to Foo::Bar form, makes a valid
+                         * package name (i.e. parseable by C<require
+                         * Foo::Bar>), then emit a hint.
+                         *
+                         * this loop is modelled after the one in
+                         S_parse_ident */
+                       c = name;
+                        while (c < e) {
+                            if (utf8 && isIDFIRST_utf8_safe(c, e)) {
+                                c += UTF8SKIP(c);
+                                while (c < e && isIDCONT_utf8_safe(
+                                            (const U8*) c, (const U8*) e))
+                                    c += UTF8SKIP(c);
+                            }
+                            else if (isWORDCHAR_A(*c)) {
+                                while (c < e && isWORDCHAR_A(*c))
+                                    c++;
+                            }
+                           else if (*c == '/')
+                                c++;
+                            else
+                                break;
+                        }
+
+                        if (c == e && isIDFIRST_lazy_if_safe(name, e, utf8)) {
+                            sv_catpv(msg, " (you may need to install the ");
+                            for (c = name; c < e; c++) {
+                                if (*c == '/') {
+                                    sv_catpvs(msg, "::");
+                                }
+                                else {
+                                    sv_catpvn(msg, c, 1);
+                                }
+                            }
+                            sv_catpv(msg, " module)");
+                        }
                    }
                    else if (len >= 2 && memEQ(name + len - 2, ".h", 3)) {
                        sv_catpv(msg, " (change .h to .ph maybe?) (did you run h2ph?)");
@@ -4109,8 +4168,8 @@ S_require_file(pTHX_ SV *sv)
             Stat_t st;
             PerlIO *io = NULL;
             dSAVE_ERRNO;
-            /* the complication is to match the logic from doopen_pm() so we don't treat do "sda1" as
-               a previously successful "do".
+            /* the complication is to match the logic from doopen_pm() so
+             * we don't treat do "sda1" as a previously successful "do".
             */
             bool do_warn = namesv && ckWARN_d(WARN_DEPRECATED)
                 && PerlLIO_stat(name, &st) == 0 && !S_ISDIR(st.st_mode) && !S_ISBLK(st.st_mode)
@@ -4120,7 +4179,10 @@ S_require_file(pTHX_ SV *sv)
 
             RESTORE_ERRNO;
             if (do_warn) {
-                Perl_warner(aTHX_ packWARN(WARN_DEPRECATED), "do \"%s\" failed, '.' is no longer in @INC", name);
+                Perl_warner(aTHX_ packWARN(WARN_DEPRECATED),
+                "do \"%s\" failed, '.' is no longer in @INC; "
+                "did you mean do \"./%s\"?",
+                name, name);
             }
 #endif
             CLEAR_ERRSV();
@@ -4130,7 +4192,7 @@ S_require_file(pTHX_ SV *sv)
     else
        SETERRNO(0, SS_NORMAL);
 
-    /* Assume success here to prevent recursive requirement. */
+    /* Update %INC. Assume success here to prevent recursive requirement. */
     /* name is never assigned to again, so len is still strlen(name)  */
     /* Check whether a hook in @INC has already filled %INC */
     if (!hook_sv) {
@@ -4143,6 +4205,8 @@ S_require_file(pTHX_ SV *sv)
                           unixname, unixlen, SvREFCNT_inc_simple(hook_sv), 0 );
     }
 
+    /* Now parse the file */
+
     old_savestack_ix = PL_savestack_ix;
     SAVECOPFILE_FREE(&PL_compiling);
     CopFILE_set(&PL_compiling, tryname);
index f66d147..273176a 100644 (file)
  * 79a7216aceb1d291f2857085545fdda289518bc540a09bc0a15cde105d76028d lib/unicore/mktables
  * cdecb300baad839a6f62791229f551a4fa33f3cbdca08e378dc976466354e778 lib/unicore/version
  * 913d2f93f3cb6cdf1664db888bf840bc4eb074eef824e082fceda24a9445e60c regen/charset_translations.pl
- * 1d27ae8b75d81a082b1fc594673e08540280f8169309a7b5047015c8091a2bfb regen/regcharclass.pl
+ * c468aea5062ef84422219d74e83b6f3216f2823544b445f53ee1af71deeb2044 regen/regcharclass.pl
  * 393f8d882713a3ba227351ad0f00ea4839fda74fcf77dcd1cdf31519925adba5 regen/regcharclass_multi_char_folds.pl
  * ex: set ro: */
index 810c457..54d641d 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -13387,8 +13387,28 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
                     * literal string, or when it's the first thing after
                     * something like "\b" */
                    if (len || (p > RExC_start && isALPHA_A(*(p -1)))) {
-                        RExC_parse = p + 1;
-                       vFAIL("Unescaped left brace in regex is illegal here");
+
+                        /* GNU Autoconf is depended on by a lot of code, and
+                         * can't seem to release a new version that avoids the
+                         * deprecation now made fatal.  (A commit to do so has
+                         * been in its repository since early 2013; only one
+                         * pattern is affected.)  As a work-around, don't
+                         * fatalize this if the pattern being compiled is the
+                         * precise one that trips up Autoconf.  See [perl
+                         * #130497] for more details. */
+                        if (memNEs(RExC_start, RExC_end - RExC_start,
+                                   "\\${[^\\}]*}"))
+                        {
+                            RExC_parse = p + 1;
+                            vFAIL("Unescaped left brace in regex is "
+                                  "illegal here");
+                        }
+                        if (PASS2) {
+                            ckWARNregdep(p + 1,
+                                        "Unescaped left brace in regex is "
+                                        "deprecated here (and will be fatal "
+                                        "in Perl 5.30), passed through");
+                        }
                    }
                    goto normal_default;
                 case '}':
index 0009994..510fb89 100755 (executable)
@@ -13,7 +13,7 @@ $|=1 if DEBUG;
 
 require './regen/regen_lib.pl';
 require './regen/charset_translations.pl';
-require "regen/regcharclass_multi_char_folds.pl";
+require "./regen/regcharclass_multi_char_folds.pl";
 
 =head1 NAME
 
diff --git a/sv.c b/sv.c
index e90ea84..5150549 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -4792,7 +4792,7 @@ Doesn't handle set magic.
 The perl equivalent is C<$sv = undef;>. Note that it doesn't free any string
 buffer, unlike C<undef $sv>.
 
-Introduced in perl 5.26.0.
+Introduced in perl 5.25.12.
 
 =cut
 */
diff --git a/sv.h b/sv.h
index 82130b7..51e9b0b 100644 (file)
--- a/sv.h
+++ b/sv.h
@@ -541,7 +541,8 @@ struct xpvlv {
     SV*                xlv_targ;
     char       xlv_type;       /* k=keys .=pos x=substr v=vec /=join/re
                                 * y=alem/helem/iter t=tie T=tied HE */
-    char       xlv_flags;      /* 1 = negative offset  2 = negative len */
+    char       xlv_flags;      /* 1 = negative offset  2 = negative len
+                                   4 = out of range (vec) */
 };
 
 #define xlv_targoff xlv_targoff_u.xlvu_targoff
@@ -1520,43 +1521,58 @@ Like C<SvPV> but doesn't set a length variable.
 Like C<SvPV_nolen> but doesn't process magic.
 
 =for apidoc Am|IV|SvIV|SV* sv
-Coerces the given SV to an integer and returns it.  See C<L</SvIVx>> for a
-version which guarantees to evaluate C<sv> only once.
+Coerces the given SV to IV and returns it.  The returned value in many
+circumstances will get stored in C<sv>'s IV slot, but not in all cases.  (Use
+C<L</sv_setiv>> to make sure it does).
+
+See C<L</SvIVx>> for a version which guarantees to evaluate C<sv> only once.
 
 =for apidoc Am|IV|SvIV_nomg|SV* sv
 Like C<SvIV> but doesn't process magic.
 
 =for apidoc Am|IV|SvIVx|SV* sv
-Coerces the given SV to an integer and returns it.
-Guarantees to evaluate C<sv> only once.  Only use
-this if C<sv> is an expression with side effects,
-otherwise use the more efficient C<SvIV>.
+Coerces the given SV to IV and returns it.  The returned value in many
+circumstances will get stored in C<sv>'s IV slot, but not in all cases.  (Use
+C<L</sv_setiv>> to make sure it does).
+
+This form guarantees to evaluate C<sv> only once.  Only use this if C<sv> is an
+expression with side effects, otherwise use the more efficient C<SvIV>.
 
 =for apidoc Am|NV|SvNV|SV* sv
-Coerce the given SV to a double and return it.  See C<L</SvNVx>> for a version
-which guarantees to evaluate C<sv> only once.
+Coerces the given SV to NV and returns it.  The returned value in many
+circumstances will get stored in C<sv>'s NV slot, but not in all cases.  (Use
+C<L</sv_setnv>> to make sure it does).
+
+See C<L</SvNVx>> for a version which guarantees to evaluate C<sv> only once.
 
 =for apidoc Am|NV|SvNV_nomg|SV* sv
 Like C<SvNV> but doesn't process magic.
 
 =for apidoc Am|NV|SvNVx|SV* sv
-Coerces the given SV to a double and returns it.
-Guarantees to evaluate C<sv> only once.  Only use
-this if C<sv> is an expression with side effects,
-otherwise use the more efficient C<SvNV>.
+Coerces the given SV to NV and returns it.  The returned value in many
+circumstances will get stored in C<sv>'s NV slot, but not in all cases.  (Use
+C<L</sv_setnv>> to make sure it does).
+
+This form guarantees to evaluate C<sv> only once.  Only use this if C<sv> is an
+expression with side effects, otherwise use the more efficient C<SvNV>.
 
 =for apidoc Am|UV|SvUV|SV* sv
-Coerces the given SV to an unsigned integer and returns it.  See C<L</SvUVx>>
-for a version which guarantees to evaluate C<sv> only once.
+Coerces the given SV to UV and returns it.  The returned value in many
+circumstances will get stored in C<sv>'s UV slot, but not in all cases.  (Use
+C<L</sv_setuv>> to make sure it does).
+
+See C<L</SvUVx>> for a version which guarantees to evaluate C<sv> only once.
 
 =for apidoc Am|UV|SvUV_nomg|SV* sv
 Like C<SvUV> but doesn't process magic.
 
 =for apidoc Am|UV|SvUVx|SV* sv
-Coerces the given SV to an unsigned integer and
-returns it.  Guarantees to evaluate C<sv> only once.  Only
-use this if C<sv> is an expression with side effects,
-otherwise use the more efficient C<SvUV>.
+Coerces the given SV to UV and returns it.  The returned value in many
+circumstances will get stored in C<sv>'s UV slot, but not in all cases.  (Use
+C<L</sv_setuv>> to make sure it does).
+
+This form guarantees to evaluate C<sv> only once.  Only use this if C<sv> is an
+expression with side effects, otherwise use the more efficient C<SvUV>.
 
 =for apidoc Am|bool|SvTRUE|SV* sv
 Returns a boolean indicating whether Perl would evaluate the SV as true or
diff --git a/t/TEST b/t/TEST
index fc37118..6dc9587 100755 (executable)
--- a/t/TEST
+++ b/t/TEST
@@ -76,6 +76,22 @@ my %temp_no_core =
      '../dist/Unicode-Normalize' => 1,
     );
 
+# temporary workaround Apr 2017.  These need '.' in @INC.
+# Ideally this # list will eventually be empty
+
+my %temp_needs_dot  = map { $_ => 1 } qw(
+    ../cpan/ExtUtils-Install
+    ../cpan/Filter-Util-Call
+    ../cpan/libnet
+    ../cpan/Locale-Codes
+    ../cpan/Math-BigInt
+    ../cpan/Math-BigRat
+    ../cpan/Test-Harness
+    ../cpan/Test-Simple
+    ../cpan/version
+);
+
+
 # delete env vars that may influence the results
 # but allow override via *_TEST env var if wanted
 # (e.g. PERL5OPT_TEST=-d:NYTProf)
@@ -244,6 +260,9 @@ sub _scan_test {
                if ($temp_no_core{$run_dir}) {
                    $testswitch = $testswitch . ',NC';
                }
+               if($temp_needs_dot{$run_dir}) {
+                   $testswitch = $testswitch . ',DOT';
+               }
            }
        } elsif ($test =~ m!^\.\./lib!) {
            $testswitch = '-I.. -MTestInit=U1'; # -T will remove . from @INC
index 27efbcb..37dd4f1 100644 (file)
@@ -263,4 +263,4 @@ do "dounknown";
 do "./dounknown";
 unlink "dounknown";
 EXPECT
-do "dounknown" failed, '.' is no longer in @INC at - line 3.
+do "dounknown" failed, '.' is no longer in @INC; did you mean do "./dounknown" at - line 3.
index 4b99c45..ed24c37 100644 (file)
@@ -342,9 +342,9 @@ sub find_locales ($;$) {
         # Locales whose name differs if the utf8 bit is on are stored in these two
         # files with appropriate encodings.
         if ($^H & 0x08 || (${^OPEN} || "") =~ /:utf8/) {
-            @Data = do "lib/locale/utf8";
+            @Data = do "./lib/locale/utf8";
         } else {
-            @Data = do "lib/locale/latin1";
+            @Data = do "./lib/locale/latin1";
         }
 
         # The rest of the locales are in this file.
index 02a38e0..19ae126 100644 (file)
@@ -421,7 +421,9 @@ is( $s, 'bcde bcde','modifiable alpha counting loop counter' );
 # generating an extreme range triggered a croak, which if caught,
 # left the temps stack small but with a very large PL_tmps_max
 
-fresh_perl_like(<<'EOF', qr/\Aok 1 ok 2\Z/, {}, "RT #130841");
+SKIP: {
+    skip 'mem wrap check disabled' unless $Config{usemallocwrap};
+    fresh_perl_like(<<'EOF', qr/\Aok 1 ok 2\Z/, {}, "RT #130841");
 my $max_iv = (~0 >> 1);
 eval {
     my @range = 1..($max_iv - 1);
@@ -446,4 +448,4 @@ else {
     print " unexpected sum: [$sum]; expected: [$exp]";
 }
 EOF
-
+}
index ca1622a..2226c97 100644 (file)
@@ -9,7 +9,7 @@ BEGIN {
 use strict;
 use warnings;
 
-plan(tests => 27);
+plan(tests => 54);
 
 my $nonfile = tempfile();
 
@@ -25,10 +25,104 @@ for my $file ($nonfile, ' ') {
        "correct error message for require '$file'";
 }
 
-eval "require $nonfile";
+# Check that the "(you may need to install..) hint is included in the
+# error message where (and only where) appropriate.
+#
+# Basically the hint should be issued for any filename where converting
+# back from Foo/Bar.pm to Foo::Bar gives you a legal bare word which could
+# follow "require" in source code.
+
+{
+
+    # may be any letter of an identifier
+    my $I = "\x{393}";  # "\N{GREEK CAPITAL LETTER GAMMA}"
+    # Continuation char: may only be 2nd+ letter of an identifier
+    my $C = "\x{387}";  # "\N{GREEK ANO TELEIA}"
+
+    for my $test_data (
+        # thing to require        pathname in err mesg     err includes hint?
+        [ "No::Such::Module1",          "No/Such/Module1.pm",       1 ],
+        [ "'No/Such/Module1.pm'",       "No/Such/Module1.pm",       1 ],
+        [ "_No::Such::Module1",         "_No/Such/Module1.pm",      1 ],
+        [ "'_No/Such/Module1.pm'",      "_No/Such/Module1.pm",      1 ],
+        [ "'No/Such./Module.pm'",       "No/Such./Module.pm",       0 ],
+        [ "No::1Such::Module",          "No/1Such/Module.pm",       1 ],
+        [ "'No/1Such/Module.pm'",       "No/1Such/Module.pm",       1 ],
+        [ "1No::Such::Module",           undef,                     0 ],
+        [ "'1No/Such/Module.pm'",       "1No/Such/Module.pm",       0 ],
+
+        # utf8 variants
+        [ "No::Such${I}::Module1",      "No/Such${I}/Module1.pm",   1 ],
+        [ "'No/Such${I}/Module1.pm'",   "No/Such${I}/Module1.pm",   1 ],
+        [ "_No::Such${I}::Module1",     "_No/Such${I}/Module1.pm",  1 ],
+        [ "'_No/Such${I}/Module1.pm'",  "_No/Such${I}/Module1.pm",  1 ],
+        [ "'No/Such${I}./Module.pm'",   "No/Such${I}./Module.pm",   0 ],
+        [ "No::1Such${I}::Module",      "No/1Such${I}/Module.pm",   1 ],
+        [ "'No/1Such${I}/Module.pm'",   "No/1Such${I}/Module.pm",   1 ],
+        [ "1No::Such${I}::Module",       undef,                     0 ],
+        [ "'1No/Such${I}/Module.pm'",   "1No/Such${I}/Module.pm",   0 ],
+
+        # utf8 with continuation char in 1st position
+        [ "No::${C}Such::Module1",      undef,                      0 ],
+        [ "'No/${C}Such/Module1.pm'",   "No/${C}Such/Module1.pm",   0 ],
+        [ "_No::${C}Such::Module1",     undef,                      0 ],
+        [ "'_No/${C}Such/Module1.pm'",  "_No/${C}Such/Module1.pm",  0 ],
+        [ "'No/${C}Such./Module.pm'",   "No/${C}Such./Module.pm",   0 ],
+        [ "No::${C}1Such::Module",      undef,                      0 ],
+        [ "'No/${C}1Such/Module.pm'",   "No/${C}1Such/Module.pm",   0 ],
+        [ "1No::${C}Such::Module",      undef,                      0 ],
+        [ "'1No/${C}Such/Module.pm'",   "1No/${C}Such/Module.pm",   0 ],
+
+    ) {
+        my ($require_arg, $err_path, $has_hint) = @$test_data;
+
+        my $exp;
+        if (defined $err_path) {
+            $exp = "Can't locate $err_path in \@INC";
+            if ($has_hint) {
+                my $hint = $err_path;
+                $hint =~ s{/}{::}g;
+                $hint =~ s/\.pm$//;
+                $exp .= " (you may need to install the $hint module)";
+            }
+            $exp .= " (\@INC contains: @INC) at";
+        }
+        else {
+            # undef implies a require which doesn't compile,
+            # rather than one which triggers a run-time error.
+            # We'll set exp to a suitable value later;
+            $exp = "";
+        }
+
+        my $err;
+        {
+            no warnings qw(syntax utf8);
+            if ($require_arg =~ /[^\x00-\xff]/) {
+                eval "require $require_arg";
+                $err = $@;
+                utf8::decode($err);
+            }
+            else {
+                eval "require $require_arg";
+                $err = $@;
+            }
+        }
+
+        for ($err, $exp, $require_arg) {
+            s/([^\x00-\xff])/sprintf"\\x{%x}",ord($1)/ge;
+        }
+        if (length $exp) {
+            $exp = qr/^\Q$exp\E/;
+        }
+        else {
+            $exp = qr/syntax error at|Unrecognized character/;
+        }
+        like $err, $exp,
+                "err for require $require_arg";
+    }
+}
+
 
-like $@, qr/^Can't locate $nonfile\.pm in \@INC \(you may need to install the $nonfile module\) \(\@INC contains: @INC\) at/,
-        "correct error message for require $nonfile";
 
 eval "require ::$nonfile";
 
@@ -168,3 +262,12 @@ like $@, qr/^Missing or undefined argument to require /;
 
 eval { do "" };
 like $@, qr/^Missing or undefined argument to do /;
+
+# non-searchable pathnames shouldn't mention @INC in the error
+
+my $nonsearch = "./no_such_file.pm";
+
+eval "require \"$nonsearch\"";
+
+like $@, qr/^Can't locate \Q$nonsearch\E at/,
+        "correct error message for require $nonsearch";
index e50ffb7..5fa1879 100644 (file)
@@ -8,7 +8,7 @@ BEGIN {
 
 use Config;
 
-plan(tests => 74);
+plan(tests => 78);
 
 
 is(vec($foo,0,1), 0);
@@ -223,3 +223,21 @@ like($@, qr/^Modification of a read-only value attempted at /,
         }
     }
 }
+
+# RT #131083 maybe-lvalue out of range should only croak if assigned to
+
+{
+    sub  RT131083 { if ($_[0]) { $_[1] = 1; } $_[1]; }
+    my $s = "abc";
+    my $off = -1;
+    my $v = RT131083(0, vec($s, $off, 8));
+    is($v, 0, "RT131083 rval -1");
+    $v = eval { RT131083(1, vec($s, $off, 8)); };
+    like($@, qr/Negative offset to vec in lvalue context/, "RT131083 lval -1");
+
+    $off = ~0;
+    my $v = RT131083(0, vec($s, $off, 8));
+    is($v, 0, "RT131083 rval ~0");
+    $v = eval { RT131083(1, vec($s, $off, 8)); };
+    like($@, qr/Out of memory!/, "RT131083 lval ~0");
+}
index bbebd37..d15474c 100644 (file)
@@ -2,14 +2,9 @@
 
 # run Porting/bench.pl's selftest
 
-BEGIN {
-    @INC = '..' if -f '../TestInit.pm';
-}
-use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
 use strict;
 
+chdir '..' if -f 'test.pl' && -f 'thread_it.pl';
 require './t/test.pl';
-my $source = find_git_or_skip('all');
-chdir $source or die "Can't chdir to $source: $!";
 
-system "$^X Porting/bench.pl --action=selftest";
+system "$^X -I. -MTestInit Porting/bench.pl --action=selftest";
index daa95f8..8a469cd 100644 (file)
@@ -18,13 +18,9 @@ working on older releases. It should be run before making a new release.
 
 =cut
 
-BEGIN {
-    unshift @INC, '.' if -f 'TestInit.pm';
-}
-use TestInit;
 use strict;
 use Config;
-BEGIN { require 'test.pl' }
+BEGIN { require './test.pl' }
 
 if ( $Config{usecrosscompile} ) {
   skip_all( "Not all files are available during cross-compilation" );
index eb38b27..5014b3e 100644 (file)
@@ -80,5 +80,4 @@ Test::Harness cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm bf1fbfff9720330
 Test::Harness cpan/Test-Harness/lib/Test/Harness.pm da2d76ba673372da129060c9d0adb8cf0d91f9f7
 Test::Simple cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t 59648b5745fda06177d81c2c21f55b09f6e129bb
 autodie cpan/autodie/t/mkdir.t 9e70d2282a3cc7d76a78bf8144fccba20fb37dac
-base dist/base/lib/base.pm 9575442273694d41c8e86cb1d86fa1935a07c8a8
 version cpan/version/lib/version.pm a032a751524bdd07a93c945d2a1703abe7ad8ef0
index 44c13ff..e91119c 100644 (file)
@@ -17,7 +17,9 @@ access(2)
 Algorithm::C3
 Algorithm::Permute
 AnyEvent
+Apache::DProf
 Apache::MP3
+Apache::SmallProf
 Archive::Extract
 Array::Base
 atan2(3)
@@ -78,6 +80,7 @@ DBI
 DBIx::Profile
 dbm(3)
 dbm_open(3)
+Devel::Apache::Profiler
 Devel::CallParser
 Devel::Callsite
 Devel::Cover
@@ -85,6 +88,7 @@ Devel::DProf
 Devel::DTrace::Provider
 Devel::InnerPackage
 Devel::NYTProf
+Devel::NYTProf::Apache
 Devel::PPPort
 Devel::SawAmpersand
 Devel::Spy
index 597df92..b80b692 100644 (file)
@@ -652,6 +652,7 @@ my @deprecated = (
  '/.{/'         => 'Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through {#} m/.{{#}/',
  '/[x]{/'       => 'Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through {#} m/[x]{{#}/',
  '/\p{Latin}{/' => 'Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through {#} m/\p{Latin}{{#}/',
+ '/\\${[^\\}]*}/' => 'Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through {#} m/\\${{#}[^\\}]*}/',
 );
 
 for my $strict ("", "use re 'strict';") {
index 2140973..b66736f 100644 (file)
@@ -136,7 +136,7 @@ dtrace_like(<< 'PERL_SCRIPT',
     BEGIN {@INC = '../lib'}
     use strict;
     require HTTP::Tiny;
-    do "run/dtrace.pl";
+    do "./run/dtrace.pl";
 PERL_SCRIPT
     << 'D_SCRIPT',
     loading-file { printf("loading-file <%s>\n", copyinstr(arg0)) }
index 611e012..c1e1b82 100644 (file)
@@ -12,7 +12,7 @@ BEGIN {
     skip_all_without_config('d_fork');
 }
 
-plan tests => 104;
+plan tests => 106;
 
 my $STDOUT = tempfile();
 my $STDERR = tempfile();
@@ -22,6 +22,7 @@ my $FAILURE_CODE = 119;
 delete $ENV{PERLLIB};
 delete $ENV{PERL5LIB};
 delete $ENV{PERL5OPT};
+delete $ENV{PERL_USE_UNSAFE_INC};
 
 
 # Run perl with specified environment and arguments, return (STDOUT, STDERR)
@@ -33,6 +34,7 @@ sub runperl_and_capture {
   delete $ENV{PERLLIB};
   delete $ENV{PERL5LIB};
   delete $ENV{PERL5OPT};
+  delete $ENV{PERL_USE_UNSAFE_INC};
   my $pid = fork;
   return (0, "Couldn't fork: $!") unless defined $pid;   # failure
   if ($pid) {                   # parent
@@ -298,11 +300,23 @@ is ($err, '', 'No errors when determining @INC');
 
 my @default_inc = split /\n/, $out;
 
+SKIP: {
+  skip_if_miniperl("under miniperl", 3);
 if ($Config{default_inc_excludes_dot}) {
     ok !(grep { $_ eq '.' } @default_inc), '. is not in @INC';
+    ($out, $err) = runperl_and_capture({ PERL_USE_UNSAFE_INC => 1 }, [@dump_inc]);
+
+    is ($err, '', 'No errors when determining unsafe @INC');
+
+    my @unsafe_inc = split /\n/, $out;
+
+    ok (eq_array([@unsafe_inc], [@default_inc, '.']), '. last in unsafe @INC')
+        or diag 'Unsafe @INC is: ', @unsafe_inc;
 }
 else {
     is ($default_inc[-1], '.', '. is last in @INC');
+    skip('Not testing unsafe @INC when it includes . by default', 2);
+}
 }
 
 my $sep = $Config{path_sep};
index 4a0cbdc..6389df2 100644 (file)
@@ -19,7 +19,7 @@ my $caller = (caller)[1];
 die "Can't figure out which test to run from filename '$caller'"
     unless $caller =~ m!((?:op|re)/[-_a-z0-9A-Z]+)_thr\.t\z!;
 
-my $file = "$1.t";
+my $file = "./$1.t";
 
 $::running_as_thread = "running tests in a new thread";
 require $file;
index 31fd1f7..a215f60 100644 (file)
@@ -4,7 +4,7 @@ BEGIN {
       print("1..0 # miniperl: no Unicode::Normalize");
       exit(0);
     }
-    require "uni/case.pl";
+    require "./uni/case.pl";
 }
 
 use feature 'unicode_strings';
index 458ca8e..45c895f 100644 (file)
@@ -4,7 +4,7 @@ BEGIN {
       print("1..0 # miniperl: no Unicode::Normalize");
       exit(0);
     }
-    require "uni/case.pl";
+    require "./uni/case.pl";
 }
 
 use feature 'unicode_strings';
index 532f4bd..252b51c 100644 (file)
@@ -4,7 +4,7 @@ BEGIN {
       print("1..0 # miniperl: no Unicode::Normalize");
       exit(0);
     }
-    require "uni/case.pl";
+    require "./uni/case.pl";
 }
 
 use feature 'unicode_strings';
diff --git a/util.h b/util.h
index 8f4171b..12a1c47 100644 (file)
--- a/util.h
+++ b/util.h
@@ -8,6 +8,10 @@
  *
  */
 
+#ifndef PERL_UTIL_H_
+#define PERL_UTIL_H_
+
+
 #ifdef VMS
 #  define PERL_FILE_IS_ABSOLUTE(f) \
        (*(f) == '/'                                                    \
@@ -236,6 +240,8 @@ means arg not present, 1 is empty string/null byte */
             ((char *) memmem(big, bigend - big, little, lend - little))
 #endif
 
+#endif /* PERL_UTIL_H_ */
+
 /*
  * ex: set ts=8 sts=4 sw=4 et:
  */
index f66e9b0..e1e9ee2 100644 (file)
@@ -343,7 +343,7 @@ my %oldcfg = ();
 $Net::Config::CONFIGURE = 1; # Suppress load of user overrides
 if( -f $libnet_cfg_in )
  {
-  %oldcfg = ( %{ do $libnet_cfg_in } );
+  %oldcfg = ( %{ local @INC = '.'; do $libnet_cfg_in } );
  }
 elsif (eval { require Net::Config }) 
  {
index 42b5b57..1b5f0c6 100644 (file)
@@ -307,7 +307,7 @@ utils : $(utils1) $(utils2) $(utils3) $(utils4) $(utils5)
 extra.pods : miniperl
        @ @extra_pods.com
 
-PERLDELTA_CURRENT = [.pod]perl52511delta.pod
+PERLDELTA_CURRENT = [.pod]perl52512delta.pod
 
 $(PERLDELTA_CURRENT) : [.pod]perldelta.pod
        Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
index c5374ef..ce8d615 100644 (file)
@@ -63,7 +63,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.25.11
+#INST_VER      := \5.25.12
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -1637,7 +1637,7 @@ utils: $(HAVEMINIPERL) ..\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\perl52511delta.pod
+       copy ..\pod\perldelta.pod ..\pod\perl52512delta.pod
        $(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
        $(MINIPERL) -I..\lib ..\autodoc.pl ..
        $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1734,7 +1734,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 \
-           perl52511delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+           perl52512delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
            perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
            perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
            perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
index 1fa2bfe..19d1437 100644 (file)
@@ -38,7 +38,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.25.11
+#INST_VER      = \5.25.12
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -1260,7 +1260,7 @@ utils: $(PERLEXE) ..\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\perl52511delta.pod
+       copy ..\pod\perldelta.pod ..\pod\perl52512delta.pod
        cd ..\win32
        $(PERLEXE) $(PL2BAT) $(UTILS)
        $(MINIPERL) -I..\lib ..\autodoc.pl ..
@@ -1359,7 +1359,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 \
-           perl52511delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+           perl52512delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
            perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
            perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
            perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
index 2ad0f70..daf4f3e 100644 (file)
@@ -237,6 +237,7 @@ sub bootstrap {
     my $bs = $file;
     $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/;
     if (-s $bs) { # only read file if it's not empty
+        local @INC = ('.');
         do $bs;
         warn "$bs: $@\n" if $@;
     }
index aceda12..71947b5 100644 (file)
@@ -44,7 +44,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.25.11
+#INST_VER      *= \5.25.12
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -1574,7 +1574,7 @@ utils: $(HAVEMINIPERL) ..\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\perl52511delta.pod
+       copy ..\pod\perldelta.pod ..\pod\perl52512delta.pod
        $(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
        $(MINIPERL) -I..\lib ..\autodoc.pl ..
        $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1672,7 +1672,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 \
-           perl52511delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+           perl52512delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
            perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
            perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
            perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
index 3735fe4..f055c21 100644 (file)
@@ -49,6 +49,7 @@ POD = perl.pod        \
        perl5250delta.pod       \
        perl52510delta.pod      \
        perl52511delta.pod      \
+       perl52512delta.pod      \
        perl5251delta.pod       \
        perl5252delta.pod       \
        perl5253delta.pod       \
@@ -202,6 +203,7 @@ MAN = perl.man      \
        perl5250delta.man       \
        perl52510delta.man      \
        perl52511delta.man      \
+       perl52512delta.man      \
        perl5251delta.man       \
        perl5252delta.man       \
        perl5253delta.man       \
@@ -355,6 +357,7 @@ HTML = perl.html    \
        perl5250delta.html      \
        perl52510delta.html     \
        perl52511delta.html     \
+       perl52512delta.html     \
        perl5251delta.html      \
        perl5252delta.html      \
        perl5253delta.html      \
@@ -508,6 +511,7 @@ TEX = perl.tex      \
        perl5250delta.tex       \
        perl52510delta.tex      \
        perl52511delta.tex      \
+       perl52512delta.tex      \
        perl5251delta.tex       \
        perl5252delta.tex       \
        perl5253delta.tex       \