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