From 5273661442d41c59cfc27ce8fbf8e4fbc91b2dc0 Mon Sep 17 00:00:00 2001 From: afresh1 Date: Sat, 25 Apr 2015 19:10:05 +0000 Subject: [PATCH] Import perl-5.20.2 --- gnu/usr.bin/perl/AUTHORS | 7 + .../perl/Cross/config.sh-arm-linux-n770 | 36 +- gnu/usr.bin/perl/META.json | 2 +- gnu/usr.bin/perl/META.yml | 2 +- gnu/usr.bin/perl/NetWare/Makefile | 4 +- gnu/usr.bin/perl/NetWare/config_H.wc | 10 +- gnu/usr.bin/perl/Porting/cmpVERSION.pl | 10 +- gnu/usr.bin/perl/Porting/corelist.pl | 13 +- gnu/usr.bin/perl/Porting/epigraphs.pod | 251 +++++ .../perl/Porting/perldelta_template.pod | 2 +- .../Porting/release_announcement_template.txt | 4 +- .../perl/Porting/release_managers_guide.pod | 250 +++-- gnu/usr.bin/perl/Porting/release_schedule.pod | 77 +- gnu/usr.bin/perl/Porting/todo.pod | 21 +- gnu/usr.bin/perl/README.haiku | 4 +- gnu/usr.bin/perl/README.macosx | 8 +- gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Author.pm | 2 +- .../perl/cpan/CPAN/lib/CPAN/CacheMgr.pm | 2 +- gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/FTP.pm | 2 +- .../perl/cpan/CPAN/lib/CPAN/HTTP/Client.pm | 2 +- .../perl/cpan/CPAN/lib/CPAN/HandleConfig.pm | 4 +- gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Index.pm | 2 +- .../perl/cpan/CPAN/lib/CPAN/LWP/UserAgent.pm | 2 +- .../perl/cpan/CPAN/lib/CPAN/Mirrors.pm | 2 +- .../perl/dist/ExtUtils-CBuilder/t/04-base.t | 8 +- gnu/usr.bin/perl/dist/IO/lib/IO/Socket.pm | 21 +- gnu/usr.bin/perl/dist/IO/t/io_xs.t | 4 +- gnu/usr.bin/perl/dist/Module-CoreList/Changes | 23 +- .../Module-CoreList/lib/Module/CoreList.pm | 984 +++++++++++++++++- .../Module-CoreList/lib/Module/CoreList.pod | 18 +- .../lib/Module/CoreList/TieHashDelta.pm | 2 +- .../lib/Module/CoreList/Utils.pm | 58 +- .../perl/dist/Module-CoreList/t/corelist.t | 19 +- gnu/usr.bin/perl/dist/PathTools/Cwd.pm | 2 +- gnu/usr.bin/perl/dist/PathTools/Cwd.xs | 2 +- .../perl/dist/PathTools/lib/File/Spec.pm | 2 +- .../dist/PathTools/lib/File/Spec/Cygwin.pm | 2 +- .../perl/dist/PathTools/lib/File/Spec/Epoc.pm | 2 +- .../dist/PathTools/lib/File/Spec/Functions.pm | 2 +- .../perl/dist/PathTools/lib/File/Spec/Mac.pm | 2 +- .../perl/dist/PathTools/lib/File/Spec/OS2.pm | 2 +- .../perl/dist/PathTools/lib/File/Spec/Unix.pm | 2 +- .../perl/dist/PathTools/lib/File/Spec/VMS.pm | 2 +- .../dist/PathTools/lib/File/Spec/Win32.pm | 2 +- gnu/usr.bin/perl/dist/Storable/Storable.pm | 6 +- gnu/usr.bin/perl/dist/lib/t/01lib.t | 3 + gnu/usr.bin/perl/ext/Errno/Errno_pm.PL | 8 +- gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.pm | 2 +- gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.xs | 27 +- gnu/usr.bin/perl/ext/PerlIO-scalar/t/scalar.t | 21 +- gnu/usr.bin/perl/ext/VMS-DCLsym/DCLsym.pm | 4 +- gnu/usr.bin/perl/ext/VMS-Stdio/Stdio.pm | 2 +- .../perl/ext/XS-APItest/t/clone-with-stack.t | 25 +- gnu/usr.bin/perl/ext/attributes/attributes.pm | 2 +- gnu/usr.bin/perl/ext/attributes/attributes.xs | 2 +- gnu/usr.bin/perl/hints/catamount.sh | 4 +- gnu/usr.bin/perl/hints/darwin.sh | 9 +- gnu/usr.bin/perl/intrpvar.h | 2 +- gnu/usr.bin/perl/lib/feature.pm | 23 +- gnu/usr.bin/perl/make_ext.pl | 6 +- gnu/usr.bin/perl/pad.c | 3 +- gnu/usr.bin/perl/pad.h | 2 +- gnu/usr.bin/perl/pod/perl5184delta.pod | 153 +++ gnu/usr.bin/perl/pod/perl5201delta.pod | 410 ++++++++ gnu/usr.bin/perl/pod/perlexperiment.pod | 10 + gnu/usr.bin/perl/pod/perlfork.pod | 82 +- gnu/usr.bin/perl/pod/perlgit.pod | 10 +- gnu/usr.bin/perl/pod/perlhack.pod | 3 +- gnu/usr.bin/perl/pod/perliol.pod | 2 +- gnu/usr.bin/perl/pod/perlmodstyle.pod | 39 +- gnu/usr.bin/perl/pod/perlnewmod.pod | 3 + gnu/usr.bin/perl/pod/perlpolicy.pod | 25 +- gnu/usr.bin/perl/pod/perlport.pod | 44 +- gnu/usr.bin/perl/pod/perlrecharclass.pod | 4 +- gnu/usr.bin/perl/pod/perlunicook.pod | 857 +++++++++++++++ gnu/usr.bin/perl/pod/perluniintro.pod | 14 +- gnu/usr.bin/perl/regen/feature.pl | 23 +- gnu/usr.bin/perl/t/comp/parser.t | 3 + gnu/usr.bin/perl/t/io/eintr.t | 9 +- gnu/usr.bin/perl/t/lib/warnings/pp_sys | 24 + gnu/usr.bin/perl/t/op/lexsub.t | 69 +- gnu/usr.bin/perl/t/op/state.t | 10 +- gnu/usr.bin/perl/t/op/svleak.t | 3 +- gnu/usr.bin/perl/t/op/yadayada.t | 31 +- gnu/usr.bin/perl/t/porting/corelist.t | 3 +- gnu/usr.bin/perl/t/porting/diag.t | 1 - .../perl/t/porting/known_pod_issues.dat | 6 + gnu/usr.bin/perl/t/porting/podcheck.t | 4 + gnu/usr.bin/perl/t/porting/regen.t | 3 + gnu/usr.bin/perl/t/re/fold_grind.t | 3 + gnu/usr.bin/perl/t/re/pat_psycho.t | 4 + gnu/usr.bin/perl/t/re/re_tests | 1 + gnu/usr.bin/perl/t/re/rt122747.t | 29 + gnu/usr.bin/perl/t/re/rxcode.t | 9 +- gnu/usr.bin/perl/t/re/uniprops.t | 5 + gnu/usr.bin/perl/t/run/switchd.t | 12 +- gnu/usr.bin/perl/utf8.c | 19 +- gnu/usr.bin/perl/vms/descrip_mms.template | 2 +- gnu/usr.bin/perl/win32/config_H.ce | 2 +- 99 files changed, 3547 insertions(+), 413 deletions(-) create mode 100644 gnu/usr.bin/perl/pod/perl5184delta.pod create mode 100644 gnu/usr.bin/perl/pod/perl5201delta.pod create mode 100644 gnu/usr.bin/perl/pod/perlunicook.pod create mode 100644 gnu/usr.bin/perl/t/re/rt122747.t diff --git a/gnu/usr.bin/perl/AUTHORS b/gnu/usr.bin/perl/AUTHORS index 27e0b7389e4..691773e5e12 100644 --- a/gnu/usr.bin/perl/AUTHORS +++ b/gnu/usr.bin/perl/AUTHORS @@ -79,6 +79,7 @@ Andreas Klussmann Andreas König Andreas Marienborg Andreas Schwab +Andreas Voegele Andrei Yelistratov Andrej Borsenkow Andrew Bettison @@ -101,6 +102,7 @@ Andy Dougherty Andy Lester Anno Siegel Anthony David +Anthony Heading Anton Berezin Anton Nikishaev Anton Tagunov @@ -341,6 +343,7 @@ Dominic Dunlop Dominic Hargreaves Dominique Dumont Dominique Quatravaux +Doug Bell Doug Campbell Doug MacEachern Douglas Christopher Wilson @@ -355,6 +358,7 @@ Duke Leto Duncan Findlay E. Choroba Ed Avis +Ed J Ed Mooring Ed Santiago Eddy Tan @@ -421,6 +425,7 @@ Gerrit P. Haase Gideon Israel Dsouza Giles Lean Gisle Aas +Glenn D. Golden Glenn Linderman Gordon Lack Gordon J. Miller @@ -582,6 +587,7 @@ Joergen Haegg Johan Holtman Johan Vromans Johann Klasek +Johann 'Myrkraverk' Oskarsson Johannes Plunien John Bley John Borwick @@ -1120,6 +1126,7 @@ Sullivan Beck Sven Strickroth Sven Verdoolaege SynaptiCAD, Inc. +Tadeusz Sośnierz Takis Psarogiannakopoulos Taro KAWAGISHI Tassilo von Parseval diff --git a/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 b/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 index 23e5bf6853a..8e7a509b05f 100644 --- a/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 +++ b/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 @@ -34,10 +34,10 @@ aphostname='/bin/hostname' api_revision='5' api_subversion='0' api_version='20' -api_versionstring='5.20.1' +api_versionstring='5.20.2' ar='ar' -archlib='/usr/lib/perl5/5.20.1/armv4l-linux' -archlibexp='/usr/lib/perl5/5.20.1/armv4l-linux' +archlib='/usr/lib/perl5/5.20.2/armv4l-linux' +archlibexp='/usr/lib/perl5/5.20.2/armv4l-linux' archname64='' archname='armv4l-linux' archobjs='' @@ -55,7 +55,7 @@ castflags='0' cat='cat' cc='arm-none-linux-gnueabi-gcc' cccdlflags='-fpic' -ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.20.1/armv4l-linux/CORE' +ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.20.2/armv4l-linux/CORE' ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='arm-linux-gcc' @@ -699,7 +699,7 @@ inc_version_list=' ' inc_version_list_init='0' incpath='' inews='' -installarchlib='./install_me_here/usr/lib/perl5/5.20.1/armv4l-linux' +installarchlib='./install_me_here/usr/lib/perl5/5.20.2/armv4l-linux' installbin='./install_me_here/usr/bin' installhtml1dir='' installhtml3dir='' @@ -707,13 +707,13 @@ installman1dir='./install_me_here/usr/share/man/man1' installman3dir='./install_me_here/usr/share/man/man3' installprefix='./install_me_here/usr' installprefixexp='./install_me_here/usr' -installprivlib='./install_me_here/usr/lib/perl5/5.20.1' +installprivlib='./install_me_here/usr/lib/perl5/5.20.2' installscript='./install_me_here/usr/bin' -installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.20.1/armv4l-linux' +installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.20.2/armv4l-linux' installsitebin='./install_me_here/usr/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.20.1' +installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.20.2' installsiteman1dir='./install_me_here/usr/share/man/man1' installsiteman3dir='./install_me_here/usr/share/man/man3' installsitescript='./install_me_here/usr/bin' @@ -841,8 +841,8 @@ pmake='' pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/lib/perl5/5.20.1' -privlibexp='/usr/lib/perl5/5.20.1' +privlib='/usr/lib/perl5/5.20.2' +privlibexp='/usr/lib/perl5/5.20.2' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='4' @@ -903,17 +903,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0' sig_size='68' signal_t='void' -sitearch='/usr/lib/perl5/site_perl/5.20.1/armv4l-linux' -sitearchexp='/usr/lib/perl5/site_perl/5.20.1/armv4l-linux' +sitearch='/usr/lib/perl5/site_perl/5.20.2/armv4l-linux' +sitearchexp='/usr/lib/perl5/site_perl/5.20.2/armv4l-linux' sitebin='/usr/bin' sitebinexp='/usr/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/lib/perl5/site_perl/5.20.1' +sitelib='/usr/lib/perl5/site_perl/5.20.2' sitelib_stem='/usr/lib/perl5/site_perl' -sitelibexp='/usr/lib/perl5/site_perl/5.20.1' +sitelibexp='/usr/lib/perl5/site_perl/5.20.2' siteman1dir='/usr/share/man/man1' siteman1direxp='/usr/share/man/man1' siteman3dir='/usr/share/man/man3' @@ -950,7 +950,7 @@ stdio_stream_array='' strerror_r_proto='0' strings='/usr/include/string.h' submit='' -subversion='1' +subversion='2' sysman='/usr/share/man/man1' tail='' tar='' @@ -1035,8 +1035,8 @@ vendorprefix='' vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.20.1' -version_patchlevel_string='version 20 subversion 1' +version='5.20.2' +version_patchlevel_string='version 20 subversion 2' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1050,7 +1050,7 @@ config_args='' config_argc=0 PERL_REVISION=5 PERL_VERSION=20 -PERL_SUBVERSION=1 +PERL_SUBVERSION=2 PERL_API_REVISION=5 PERL_API_VERSION=20 PERL_API_SUBVERSION=0 diff --git a/gnu/usr.bin/perl/META.json b/gnu/usr.bin/perl/META.json index 2090c8cea9b..82f25dad7d1 100644 --- a/gnu/usr.bin/perl/META.json +++ b/gnu/usr.bin/perl/META.json @@ -128,5 +128,5 @@ "url" : "http://perl5.git.perl.org/" } }, - "version" : "5.020001" + "version" : "5.020002" } diff --git a/gnu/usr.bin/perl/META.yml b/gnu/usr.bin/perl/META.yml index 791c91d50d1..5dc17d547a3 100644 --- a/gnu/usr.bin/perl/META.yml +++ b/gnu/usr.bin/perl/META.yml @@ -115,4 +115,4 @@ resources: homepage: http://www.perl.org/ license: http://dev.perl.org/licenses/ repository: http://perl5.git.perl.org/ -version: '5.020001' +version: '5.020002' diff --git a/gnu/usr.bin/perl/NetWare/Makefile b/gnu/usr.bin/perl/NetWare/Makefile index a734058148c..71ba0da1ed0 100644 --- a/gnu/usr.bin/perl/NetWare/Makefile +++ b/gnu/usr.bin/perl/NetWare/Makefile @@ -86,7 +86,7 @@ NLM_VERSION = 3,20,0 # Here comes the CW tools - TO BE FILLED TO BUILD WITH CW - -MODULE_DESC = "Perl 5.20.1 for NetWare" +MODULE_DESC = "Perl 5.20.2 for NetWare" CCTYPE = CodeWarrior C_COMPILER = mwccnlm -c CPP_COMPILER = mwccnlm @@ -462,7 +462,7 @@ INST_NW_TOP2 = $(INST_NW_DRV)\perl # versioned installation can be obtained by setting INST_TOP above to a # path that includes an arbitrary version string. # -INST_VER = \5.20.1 +INST_VER = \5.20.2 # # Comment this out if you DON'T want your perl installation to have diff --git a/gnu/usr.bin/perl/NetWare/config_H.wc b/gnu/usr.bin/perl/NetWare/config_H.wc index f4ea8d86450..8541736b4b5 100644 --- a/gnu/usr.bin/perl/NetWare/config_H.wc +++ b/gnu/usr.bin/perl/NetWare/config_H.wc @@ -1042,7 +1042,7 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define ARCHLIB "c:\\perl\\5.20.1\\lib\\NetWare-x86-multi-thread" /**/ +#define ARCHLIB "c:\\perl\\5.20.2\\lib\\NetWare-x86-multi-thread" /**/ /*#define ARCHLIB_EXP "" /**/ /* ARCHNAME: @@ -1073,8 +1073,8 @@ * This symbol is the filename expanded version of the BIN symbol, for * programs that do not want to deal with that at run-time. */ -#define BIN "c:\\perl\\5.20.1\\bin\\NetWare-x86-multi-thread" /**/ -#define BIN_EXP "c:\\perl\\5.20.1\\bin\\NetWare-x86-multi-thread" /**/ +#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" /**/ /* BYTEORDER: * This symbol holds the hexadecimal constant defined in byteorder, @@ -3051,7 +3051,7 @@ * This symbol contains the ~name expanded version of SITEARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define SITEARCH "c:\\perl\\site\\5.20.1\\lib\\NetWare-x86-multi-thread" /**/ +#define SITEARCH "c:\\perl\\site\\5.20.2\\lib\\NetWare-x86-multi-thread" /**/ /*#define SITEARCH_EXP "" /**/ /* SITELIB: @@ -3074,7 +3074,7 @@ * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "c:\\perl\\site\\5.20.1\\lib" /**/ +#define SITELIB "c:\\perl\\site\\5.20.2\\lib" /**/ /*#define SITELIB_EXP "" /**/ #define SITELIB_STEM "" /**/ diff --git a/gnu/usr.bin/perl/Porting/cmpVERSION.pl b/gnu/usr.bin/perl/Porting/cmpVERSION.pl index c92fe78b340..f583191ad32 100644 --- a/gnu/usr.bin/perl/Porting/cmpVERSION.pl +++ b/gnu/usr.bin/perl/Porting/cmpVERSION.pl @@ -83,6 +83,11 @@ my %skip; @skip{ 'cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/BFD.pm', # just a test module 'cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm', # just a test module + 'cpan/Module-Build/t/lib/DistGen.pm', # just a test module + 'cpan/Module-Build/t/lib/MBTest.pm', # just a test module + 'cpan/Module-Metadata/t/lib/DistGen.pm', # just a test module + 'cpan/Module-Metadata/t/lib/MBTest.pm', # just a test module + 'cpan/Module-Metadata/t/lib/Tie/CPHash.pm', # just a test module 'dist/Attribute-Handlers/demo/MyClass.pm', # it's just demonstration code 'dist/Exporter/lib/Exporter/Heavy.pm', 'lib/Carp/Heavy.pm', @@ -120,6 +125,7 @@ sub pm_file_from_xs { # look for a .pm in lib/ based on that: my ($path) = shift =~ m!^(.*)/!; my ($last) = $path =~ m!([^/]+)\z!; + $last = 'List-Util' if $last eq 'Scalar-List-Utils'; $last =~ tr !-!/!; return "$path/lib/$last"; }) { @@ -189,11 +195,11 @@ foreach my $pm_file (sort keys %module_diffs) { and grep $pm_version eq $_, @{$skip_versions{$pm_file}}) { print "ok $count - SKIP $pm_file version $pm_version\n"; } else { - print "not ok $count - $pm_file\n"; + print "not ok $count - $pm_file version $pm_version\n"; } } else { push @diff, @{$module_diffs{$pm_file}}; - print "$pm_file\n"; + print "$pm_file version $pm_version\n"; } } } diff --git a/gnu/usr.bin/perl/Porting/corelist.pl b/gnu/usr.bin/perl/Porting/corelist.pl index ab353599812..fcca6d4ef3e 100755 --- a/gnu/usr.bin/perl/Porting/corelist.pl +++ b/gnu/usr.bin/perl/Porting/corelist.pl @@ -24,7 +24,6 @@ use IO::Uncompress::Gunzip; my $corelist_file = 'dist/Module-CoreList/lib/Module/CoreList.pm'; my $utils_file = 'dist/Module-CoreList/lib/Module/CoreList/Utils.pm'; -my $pod_file = 'dist/Module-CoreList/lib/Module/CoreList.pod'; my %lines; my %module_to_file; @@ -302,16 +301,6 @@ $corelist =~ s/^%bug_tracker .*? ;/$tracker/eismx; write_corelist($corelist,$corelist_file); -open( my $pod_fh, '<', $pod_file ); -my $pod = join( '', <$pod_fh> ); - -unless ( $pod =~ /and $perl_vstring releases of perl/ ) { - warn "Adding $perl_vstring to the list of perl versions covered by Module::CoreList\n"; - $pod =~ s/(currently\s+covers\s+(?:.*?))\s*and\s+(.*?)\s+releases\s+of\s+perl/$1, $2 and $perl_vstring releases of perl/ism; -} - -write_corelist($pod,$pod_file); - open( my $utils_fh, '<', $utils_file ); my $utils = join( '', <$utils_fh> ); close $utils_fh; @@ -342,7 +331,7 @@ $utils =~ s/^(my %delta\s*=\s*.*?)(^\);)$/$1$utilities_in_release$2/ism; write_corelist($utils,$utils_file); warn "All done. Please check over the following files carefully before committing.\nThanks!\n"; -warn "$corelist_file\n$pod_file\n$utils_file\n"; +warn "$corelist_file\n$utils_file\n"; sub write_corelist { my $content = shift; diff --git a/gnu/usr.bin/perl/Porting/epigraphs.pod b/gnu/usr.bin/perl/Porting/epigraphs.pod index ffb561f83ce..0299225edd1 100644 --- a/gnu/usr.bin/perl/Porting/epigraphs.pod +++ b/gnu/usr.bin/perl/Porting/epigraphs.pod @@ -17,6 +17,200 @@ Consult your favorite dictionary for details. =head1 EPIGRAPHS +=head2 v5.20.2-RC1 - Jonathan "Jonti" Picking, L<"Scampi"|http://www.weebls-stuff.com/other-toons/video/scampi.html> + +L + + I've seen things, + I've seen them with my eyes; + I've seen things, + They're often in disguise. + + Like carrots, handbags, cheese, toilets, + Russians, planets, hamsters, weddings, + Poets, Stalin, Kuala Lumpur! + Pygmies, budgies, Kuala Lumpur! + + I've seen things, + I've seen them with my eyes; + I've seen things, + They're often in disguise. + + Like carrots, handbags, cheese... + +=head2 v5.21.8 - Bill Watterson, "Scientific Progress Goes 'Boink': A Calvin and Hobbes Collection" + +L + +Calvin: OK Hobbes, press the button and duplicate me. +Hobbes: Are you sure this is such a good idea? +Calvin: Brother! You doubting Thomases get in the way of more scientific advances with your stupid ethical questions! This is a *BRILLIANT* idea! Hit the button, will ya? +Hobbes: I'd hate to be accused of inhibiting scientific progress... Here you go. +[Box]: *BOINK* +Hobbes: Scientific progress goes "BOINK"? +Calvin?: It worked! It worked! I'm a genius! +Cavlin??: No you're not, you liar! *I* invented this! + +=head2 v5.21.7 - Robert Heinlein, The Number of the Beast + +L + + "Zebadiah, Hilda and I salvaged and put everything into the basket. + Hilda started to put it into our wardrobe-and it was heavy. So + we looked. Packed as tight as when we left Oz. Six bananas-and + everything else. Cross my heart. No, go look." + "Hmmm- Jake, can you write equations for a picnic basket that + refills itself? Will it go on doing so?" + "Zeb, equations can be written to describe anything. The description + would be simpler for a basket that replenishes itself indefinitely + than for one that does it once and stops-I would have to describe + the discontinuity." + +=head2 v5.21.6 - Jeff Noon, Vurt + +L + + GAME CAT + + EXCHANGE MECHANISMS. Sometimes we lose precious + things. Friends and colleagues, fellow travellers in the + Vurt, sometimes we lose them; even lovers we sometimes + lose. And get bad things in exchange: aliens, objects, + snakes, and sometimes even death. Things we don't want. + This is part of the deal, part of the game deal; + all things, in all worlds, must be kept in balance. + Kittlings often ask, who decides on the swappings? Now then, + some say it's all accidental; that some poor Vurt thing + finds himself too close to a door, at too critical a time, + just when something real is being lost. Whoosh! Swap time! + Others say that some kind of overseer is working the + MECHANISMS OF EXCHANGE, deciding the fate of innocents. + The Cat can only tease at this, because of the big secrets + involved, and because of the levels between you, the reader, + and me, the Game Cat. Hey, listen; I've struggled to get + where I am today; why should I give you the easy route? + Get working, kittlings! Reach up higher. Work the Vurt. + +=head2 v5.21.5 - Friso Wiegersma (text), Jean Ferrat (music), Wim Sonneveld (performer), Het Dorp + +L + + Het Dorp + + Thuis heb ik nog een ansichtkaart + waarop een kerk, een kar met paard, + een slagerij J. van der Ven. + Een kroeg, een juffrouw op de fiets + het zegt u hoogstwaarschijnlijk niets, + maar 't is waar ik geboren ben. + Dit dorp, ik weet nog hoe het was, + de boerenkind'ren in de klas, + een kar die ratelt op de keien, + het raadhuis met een pomp ervoor, + een zandweg tussen koren door, + het vee, de boerderijen. + + En langs het tuinpad van m'n vader + zag ik de hoge bomen staan. + Ik was een kind en wist niet beter, + dan dat dat nooit voorbij zou gaan. + + Wat leefden ze eenvoudig toen + in simp'le huizen tussen groen + met boerenbloemen en een heg. + Maar blijkbaar leefden ze verkeerd, + het dorp is gemoderniseerd + en nu zijn ze op de goeie weg. + Want ziet, hoe rijk het leven is, + ze zien de televisiequiz + en wonen in betonnen dozen, + met flink veel glas, dan kun je zien + hoe of het bankstel staat bij Mien + en d'r dressoir met plastic rozen. + + En langs het tuinpad van m'n vader + zag ik de hoge bomen staan. + Ik was een kind en wist niet beter, + dan dat dat nooit voorbij zou gaan. + + De dorpsjeugd klit wat bij elkaar + in minirok en beatle-haar + en joelt wat mee met beat-muziek. + Ik weet wel, het is hun goeie recht, + de nieuwe tijd, net wat u zegt, + maar het maakt me wat melancholiek. + Ik heb hun vaders nog gekend + ze kochten zoethout voor een cent + ik zag hun moeders touwtjespringen. + Dat dorp van toen, het is voorbij, + dit is al wat er bleef voor mij: + een ansicht en herinneringen. + + Toen ik langs het tuinpad van m'n vader + de hoge bomen nog zag staan. + Ik was een kind, hoe kon ik weten + dat dat voorgoed voorbij zou gaan. + +=head2 v5.21.4 - Edgar Allan Poe, The Narrative of Arthur Gordon Pym of Nantucket + +L + + To-day, being in latitude 83° 20', longitude 43° 5' W. (the sea being + of an extraordinarily dark colour), we again saw land from the + masthead, and, upon a closer scrutiny, found it to be one of a group + of very large islands. The shore was precipitous, and the interior + seemed to be well wooded, a circumstance which occasioned us great + joy. In about four hours from our first discovering the land we came + to anchor in ten fathoms, sandy bottom, a league from the coast, as a + high surf, with strong ripples here and there, rendered a nearer + approach of doubtful expediency. The two largest boats were now + ordered out, and a party, well armed (among whome were Peters and + myself), proceeded to look for an opening in the reef which appeared + to encircle the island. After searching about for some time, we + discovered an inlet, which we were entering, when we saw four large + canoes put off from the shore, filled with men who seemed to be well + armed. We waited for them to come up, and, as they moved with great + rapidity, they were soon within hail. Captain Guy now held up a white + handkerchief on the blade of an oar, when the strangers made a full + stop, and commenced a loud jabbering all at once, intermingled with + occasional shouts, in which we could distinguish the words Anamoo-moo! + and Lama-Lama! They continued this for at least half an hour, during + which we had a good opportunity of observing their appearance. + +=head2 v5.20.1 - Lorenzo da Ponte, Così fan tutte + +L + + DORABELLA (as if waking from a daze): Where are they? + DON ALFONSO: They've gone. + FIORDILIGI: Oh, the cruel bitterness of parting! + + DON ALFONSO: + Take heart, my dearest children. + Look, in the distance, your lovers are waving to you. + + FIORDILIGI: Bon voyage, my darling! + DORABELLA: Bon voyage! + + FIORDILIGI: + O heavens! How swiftly the ship is sailing away! + It is disappearing already! + It is no longer in sight! + Oh, may heaven grant it a prosperous voyage! + + DORABELLA: May good luck attend it to the battlefield! + DON ALFONSO: And may your sweethearts and my friends be safe! + + FIORDILIGI, DORABELLA, DON ALFONSO: + May the wind be gentle, + may the sea be calm, + and may the elements + respond kindly + to our wishes. + + -- Lorenzo da Ponte, /Così fan tutte/, + trans. Diana Reed + =head2 v5.20.1-RC2 - Lorenzo da Ponte, Così fan tutte L @@ -511,6 +705,63 @@ L + + Along the shore the cloud waves break, + The twin suns sink beneath the lake, + The shadows lengthen + In Carcosa. + + Strange is the night where black stars rise, + And strange moons circle through the skies + But stranger still is + Lost Carcosa. + + Songs that the Hyades shall sing, + Where flap the tatters of the King, + Must die unheard in + Dim Carcosa. + + Song of my soul, my voice is dead; + Die thou, unsung, as tears unshed + Shall dry and die in + Lost Carcosa. + + -- Cassilda's Song in "The King in Yellow," Act i, Scene 2. + Robert W. Chambers + +=head2 v5.18.3 - (no epigraph) + +(no epigraph) + +=head2 v5.18.3-RC2 - Robert W. Chambers, "The King in Yellow" + +L + +"Ah! I see it now!" I shrieked. "You have seized the throne and the +empire. Woe! woe to you who are crowned with the crown of the King in +Yellow!" + + -- Robert W. Chambers, The King in Yellow, Act I, Scene 2. + +=head2 v5.18.3-RC1 - Robert W. Chambers, "The King in Yellow" + +L + + CAMILLA: You, sir, should unmask. + + STRANGER: Indeed? + + CASSILDA: Indeed it's time. We all have laid aside disguise but you. + + STRANGER: I wear no mask. + + CAMILLA: (Terrified, aside to Cassilda.) No mask? No mask! + + -- Robert W. Chambers, The King in Yellow, Act I, Scene 2. + =head2 v5.18.2 - Miss Manners L diff --git a/gnu/usr.bin/perl/Porting/perldelta_template.pod b/gnu/usr.bin/perl/Porting/perldelta_template.pod index f3cf1f4d764..53d4f2d8936 100644 --- a/gnu/usr.bin/perl/Porting/perldelta_template.pod +++ b/gnu/usr.bin/perl/Porting/perldelta_template.pod @@ -378,7 +378,7 @@ here. XXX Generate this with: - perl Porting/acknowledgements.pl v5.20.1..HEAD + perl Porting/acknowledgements.pl v5.20.2..HEAD =head1 Reporting Bugs diff --git a/gnu/usr.bin/perl/Porting/release_announcement_template.txt b/gnu/usr.bin/perl/Porting/release_announcement_template.txt index fbd8d222160..9286ec84b5e 100644 --- a/gnu/usr.bin/perl/Porting/release_announcement_template.txt +++ b/gnu/usr.bin/perl/Porting/release_announcement_template.txt @@ -21,7 +21,7 @@ the "pod" directory inside the release and on the web. [ACKNOWLEDGEMENTS SECTION FROM PERLDELTA] We expect to release version [NEXT BLEAD VERSION.SUBVERSION] on [FUTURE -DATE]. The next major stable release of Perl 5, version 20.0, should -appear in May 2014. +DATE]. The next major stable release of Perl 5, version 22.0, should +appear in May 2015. [YOUR SALUTATION HERE] diff --git a/gnu/usr.bin/perl/Porting/release_managers_guide.pod b/gnu/usr.bin/perl/Porting/release_managers_guide.pod index 1ab7132c00d..52c9515e83c 100644 --- a/gnu/usr.bin/perl/Porting/release_managers_guide.pod +++ b/gnu/usr.bin/perl/Porting/release_managers_guide.pod @@ -15,14 +15,14 @@ document that starts with a checklist for your release. This script is run as: - perl Porting/make-rmg-checklist \ - --type [BLEAD-POINT or MAINT or ...] > /tmp/rmg.pod + perl Porting/make-rmg-checklist \ + --type [BLEAD-POINT or MAINT or ...] > /tmp/rmg.pod You can also pass the C<--html> flag to generate an HTML document instead of POD. - perl Porting/make-rmg-checklist --html \ - --type [BLEAD-POINT or MAINT or ...] > /tmp/rmg.html + perl Porting/make-rmg-checklist --html \ + --type [BLEAD-POINT or MAINT or ...] > /tmp/rmg.html =head1 SYNOPSIS @@ -48,7 +48,7 @@ The checklist of a typical release cycle is as follows: a few weeks before the release, a number of steps are performed, including bumping the version to 5.10.2 - ...a few weeks passes... + ...a few weeks pass... perl-5.10.2-RC1 is released @@ -171,14 +171,9 @@ For updating the L web pages, either a Github account or sweet-talking somebody with a Github account into obedience is needed. This is only needed on the day of the release or shortly afterwards. -=for checklist skip RC - =head3 Quotation for release announcement epigraph -I - -For all except an RC release of perl, you will need a quotation -to use as an epigraph to your release announcement. +You will need a quotation to use as an epigraph to your release announcement. =head2 Building a release - advance actions @@ -326,23 +321,23 @@ C instead. Ensure dual-life CPAN modules are stable, which comes down to: - for each module that fails its regression tests on $current - did it fail identically on $previous? - if yes, "SEP" (Somebody Else's Problem) - else work out why it failed (a bisect is useful for this) + for each module that fails its regression tests on $current + did it fail identically on $previous? + if yes, "SEP" (Somebody Else's Problem) + else work out why it failed (a bisect is useful for this) - attempt to group failure causes + attempt to group failure causes - for each failure cause - is that a regression? - if yes, figure out how to fix it - (more code? revert the code that broke it) - else - (presumably) it's relying on something un-or-under-documented - should the existing behaviour stay? - yes - goto "regression" - no - note it in perldelta as a significant bugfix - (also, try to inform the module's author) + for each failure cause + is that a regression? + if yes, figure out how to fix it + (more code? revert the code that broke it) + else + (presumably) it's relying on something un-or-under-documented + should the existing behaviour stay? + yes - goto "regression" + no - note it in perldelta as a significant bugfix + (also, try to inform the module's author) =head3 monitor smoke tests for failures @@ -382,7 +377,7 @@ bump the version further. There is a tool to semi-automate this process: - $ ./perl -Ilib Porting/bump-perl-version -i 5.10.0 5.10.1 + $ ./perl -Ilib Porting/bump-perl-version -i 5.10.0 5.10.1 Remember that this tool is largely just grepping for '5.10.0' or whatever, so it will generate false positives. Be careful not change text like @@ -393,8 +388,11 @@ Use git status and git diff to select changes you want to keep. Be particularly careful with F, which contains a mixture of C<5.10.0>-type strings, some of which need bumping on every release, and some of which need to be left unchanged. -The line in F about "is binary incompatible with" requires a -correct choice of earlier version to declare incompatibility with. +See below in L<"update INSTALL"> for more details. + +For the first RC release leading up to a BLEAD-FINAL release, update the +description of which releases are now "officially" supported in +F. When doing a BLEAD-POINT or BLEAD-FINAL release, also make sure the C constants in F are in sync with the version @@ -406,24 +404,28 @@ to guarantee binary compatibility in maint branches. After editing, regenerate uconfig.h (this must be run on a system with a /bin/sh available): - $ perl regen/uconfig_h.pl + $ perl regen/uconfig_h.pl This might not cause any new changes. +You may have to add stub entries in C<%Module::CoreList::version>, +C<%Module::CoreList::deprecated> and C<%Module::CoreList::Utils::delta>. +If so, you must up their version numbers as well. + Test your changes: - $ git clean -xdf # careful if you don't have local files to keep! - $ ./Configure -des -Dusedevel - $ make - $ make test + $ git clean -xdf # careful if you don't have local files to keep! + $ ./Configure -des -Dusedevel + $ make + $ make test Commit your changes: - $ git status - $ git diff - B + $ git status + $ git diff + B - $ git commit -a -m 'Bump the perl version in various places for 5.x.y' + $ git commit -a -m 'Bump the perl version in various places for 5.x.y' At this point you may want to compare the commit with a previous bump to see if they look similar. See commit f7cf42bb69 for an example of a @@ -435,8 +437,11 @@ version number. =head3 update INSTALL -Review and update INSTALL to account for the change in version number; -in particular, the "Coexistence with earlier versions of perl 5" section. +Review and update INSTALL to account for the change in version number. +The lines in F about "is not binary compatible with" may require a +correct choice of earlier version to declare incompatibility with. These are +in the "Changes and Incompatibilities" and "Coexistence with earlier versions +of perl 5" sections. Be particularly careful with the section "Upgrading from 5.X.Y or earlier". The "X.Y" needs to be changed to the most recent version that we are @@ -453,7 +458,7 @@ release (so for 5.15.3 this would be 5.15.2). Check that the copyright years are up to date by running: - $ ./perl t/porting/copyright.t --now + $ ./perl t/porting/copyright.t --now Remedy any test failures by editing README or perl.c accordingly (search for the "Copyright"). If updating perl.c, check if the file's own copyright date in @@ -514,7 +519,7 @@ need to freeze blead during the release. This is less important for BLEAD-FINAL, MAINT, and RC releases, since blead will already be frozen in those cases. Create the branch by running - git checkout -b release-5.xx.yy + git checkout -b release-5.xx.yy =head3 build a clean perl @@ -528,12 +533,26 @@ then configure and build perl so that you have a Makefile and porting tools: $ ./Configure -Dusedevel -des && make +=head3 Check module versions + +For each Perl release since the previous release of the current branch, check +for modules that have identical version numbers but different contents by +running: + + $ ./perl Porting/cmpVERSION.pl --tag=v5.X.YY + +(This is done automatically by F for the previous +release of the current branch, but not for any releases from other branches.) + +Any modules that fail will need a version bump, plus a nudge to the upstream +maintainer for 'cpan' upstream modules. + =head3 update Module::CoreList =head4 Bump Module::CoreList* $VERSIONs -If necessary, bump C<$Module::CoreList::VERSION> (there's no need to do this for -every RC; in RC1, bump the version to a new clean number that will +If necessary, bump C<$Module::CoreList::VERSION> (there's no need to do this +for every RC; in RC1, bump the version to a new clean number that will appear in the final release, and leave as-is for the later RCs and final). It may also happen that C has been modified in blead, and hence has a new version number already. (But make sure it is not the same @@ -544,6 +563,10 @@ C<$Module::CoreList::Utils::VERSION> should always be equal to C<$Module::CoreList::VERSION>. If necessary, bump those two versions to match before proceeding. +The files to modify are: F, +F and +F. + =head4 Update C with module version data for the new release. Note that if this is a MAINT release, you should run the following actions @@ -588,13 +611,11 @@ This will chug for a while, possibly reporting various warnings about badly-indexed CPAN modules unrelated to the modules actually in core. Assuming all goes well, it will update F and possibly -F and/or F. Check those files over carefully: $ git diff dist/Module-CoreList/lib/Module/CoreList.pm - $ git diff dist/Module-CoreList/lib/Module/CoreList.pod $ git diff dist/Module-CoreList/lib/Module/CoreList/Utils.pm =head4 Bump version in Module::CoreList F @@ -607,23 +628,10 @@ Add a perldelta entry for the new Module::CoreList version. =for checklist skip RC -=head4 Update C<%Module::CoreList::released> and C - -In addition, if this is a final release (rather than a release candidate): - -=over 4 - -=item * +=head4 Update C<%Module::CoreList::released> -Update this version's entry in the C<%released> hash with today's date. - -=item * - -Make sure that the script has correctly updated the C section -(Note, the C section is in -F) - -=back +For any release except an RC: Update this version's entry in the C<%released> +hash with today's date. =head4 Commit Module::CoreList changes @@ -631,23 +639,33 @@ Finally, commit the new version of Module::CoreList: (unless this is for MAINT; in which case commit it to blead first, then cherry-pick it back). - $ git commit -m 'Update Module::CoreList for 5.x.y' dist/Module-CoreList/Changes dist/Module-CoreList/lib/Module/CoreList.pm dist/Module-CoreList/lib/Module/CoreList.pod dist/Module-CoreList/lib/Module/CoreList/Utils.pm + $ git commit -m 'Update Module::CoreList for 5.x.y' \ + dist/Module-CoreList/Changes \ + dist/Module-CoreList/lib/Module/CoreList.pm \ + dist/Module-CoreList/lib/Module/CoreList/Utils.pm =head4 Rebuild and test -Build and test to get the changes into the currently built lib directory and to ensure -all tests are passing. +Build and test to get the changes into the currently built lib directory and to +ensure all tests are passing. =head3 finalize perldelta Finalize the perldelta. In particular, fill in the Acknowledgements section, which can be generated with something like: - $ perl Porting/acknowledgements.pl v5.15.0..HEAD + $ perl Porting/acknowledgements.pl v5.15.0..HEAD + +Fill in the "New/Updated Modules" sections now that Module::CoreList is +updated: + + $ ./perl -Ilib Porting/corelist-perldelta.pl \ + --mode=update pod/perldelta.pod -Fill in the "New/Updated Modules" sections now that Module::CoreList is updated: +For a MAINT release use something like this instead: - $ ./perl -Ilib Porting/corelist-perldelta.pl --mode=update pod/perldelta.pod + $ ./perl -Ilib Porting/corelist-perldelta.pl 5.020001 5.020002 \ + --mode=update pod/perldelta.pod Ideally, also fill in a summary of the major changes to each module for which an entry has been added by F. @@ -663,7 +681,8 @@ run through pod and spell checkers, e.g. Also, you may want to generate and view an HTML version of it to check formatting, e.g. - $ ./perl -Ilib ext/Pod-Html/bin/pod2html pod/perldelta.pod > /tmp/perldelta.html + $ ./perl -Ilib ext/Pod-Html/bin/pod2html pod/perldelta.pod > \ + /tmp/perldelta.html Another good HTML preview option is http://search.cpan.org/pod2html @@ -744,20 +763,15 @@ from blead: $ cp ..../blead/pod/perlhist.pod pod/ $ git commit -m 'sync perlhist from blead' pod/perlhist.pod -=for checklist skip RC - =head3 update perlhist.pod -I - Add an entry to F with the release date, e.g.: David 5.10.1 2009-Aug-06 -Make sure that the correct pumpking is listed in the left-hand column, and -if this is the first release under the stewardship of a new pumpking, make -sure that his or her name is listed in the section entitled -C. +List yourself in the left-hand column, and if this is the first release +that you've ever done, make sure that your name is listed in the section +entitled C. I, also update the "SELECTED RELEASE SIZES" section with the output of @@ -779,7 +793,9 @@ a final release, remove it. For example: static const char * const local_patches[] = { NULL + ,"RC1" - PERL_GIT_UNPUSHED_COMMITS /* do not remove this line */ + #ifdef PERL_GIT_UNCOMMITTED_CHANGES + ,"uncommitted-changes" + #endif Be sure to commit your change: @@ -814,7 +830,7 @@ directory, they will still identify themselves using git tags and commits. (Note that for an odd-numbered version, perl will install itself as C). C will identify itself as: - This is perl 5, version X, subversion Y (v5.X.Y (v5.X.Z-NNN-gdeadbeef)) + This is perl 5, version X, subversion Y (v5.X.Y (v5.X.Z-NNN-gdeadbeef)) where 5.X.Z is the latest tag, NNN the number of commits since this tag, and C<< deadbeef >> commit of that tag. @@ -848,13 +864,14 @@ up. Create a tarball. Use the C<-s> option to specify a suitable suffix for the tarball and directory name: - $ cd root/of/perl/tree - $ make distclean - $ git clean -xdf # make sure perl and git agree on files - $ git status # and there's nothing lying around + $ cd root/of/perl/tree + $ make distclean # make sure distclean works + $ git clean -xdf # make sure perl and git agree on files + # git clean should not output anything! + $ 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 -s RC1 # for a release candidate + $ perl Porting/makerel -b # for a final release 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 @@ -895,6 +912,9 @@ Check that basic configuration and tests work on each test machine: $ ./Configure -des && make all test + # Or for a development release: + $ ./Configure -Dusedevel -des && make all test + =head4 Run the test harness and install Check that the test harness and install work on each test machine: @@ -940,12 +960,15 @@ Bootstrap the CPAN client on the clean install: $ bin/cpan + # Or, perhaps: + $ bin/cpan5.xx.x + =head4 Install the Inline module with CPAN and test it Try installing a popular CPAN module that's reasonably complex and that has dependencies; for example: - CPAN> install Inline + CPAN> install Inline::C CPAN> quit Check that your perl can run this: @@ -1046,7 +1069,9 @@ Disarm the F change; for example, static const char * const local_patches[] = { NULL - ,"RC1" - PERL_GIT_UNPUSHED_COMMITS /* do not remove this line */ + #ifdef PERL_GIT_UNCOMMITTED_CHANGES + ,"uncommitted-changes" + #endif Be sure to commit your change: @@ -1064,11 +1089,11 @@ Send a carbon copy to C Merge the (local) release branch back into master now, and delete it. - git checkout blead - git pull - git merge release-5.xx.yy - git push - git branch -d release-5.xx.yy + git checkout blead + git pull + git merge release-5.xx.yy + git push + git branch -d release-5.xx.yy Note: The merge will create a merge commit if other changes have been pushed to blead while you've been working on your release branch. Do NOT rebase your @@ -1098,6 +1123,14 @@ why you chose that particular quote for your epigraph. =for checklist skip RC +=head3 Release schedule + +I + +Tick the entry for your release in F. + +=for checklist skip RC + =head3 Module::CoreList nagging I @@ -1176,6 +1209,18 @@ L<"Bump the version number">. After bumping the version, follow the section L<"update INSTALL"> to ensure all version number references are correct. +(Note: The version is NOT bumped immediately after a MAINT release in order +to avoid confusion and wasted time arising from bug reports relating to +"intermediate versions" such as 5.20.1-and-a-bit: If the report is caused +by a bug that gets fixed in 5.20.2 and this intermediate version already +calls itself 5.20.2 then much time can be wasted in figuring out why there +is a failure from something that "should have been fixed". If the bump is +late then there is a much smaller window of time for such confusing bug +reports to arise. (The opposite problem -- trying to figure out why there +*is* a bug in something calling itself 5.20.1 when in fact the bug was +introduced later -- shouldn't arise for MAINT releases since they should, +in theory, only contain bug fixes but never regressions.)) + =head3 clean build and test Run a clean build and test to make sure nothing obvious is broken. @@ -1183,7 +1228,7 @@ Run a clean build and test to make sure nothing obvious is broken. In particular, F is intentionally exempted from podchecker tests, to avoid false positives about placeholder text. However, once it's copied to F the contents can now -cause test failures. Problems should resolved by doing one of the +cause test failures. Problems should be resolved by doing one of the following: =over @@ -1251,9 +1296,9 @@ I Copy the perldelta.pod for this release into blead; for example: - $ cd ..../blead - $ cp -i ../5.10.x/pod/perldelta.pod pod/perl5101delta.pod # for example - $ git add pod/perl5101delta.pod + $ cd ..../blead + $ cp -i ../5.10.x/pod/perldelta.pod pod/perl5101delta.pod # for example + $ git add pod/perl5101delta.pod Don't forget to set the NAME correctly in the new file (e.g. perl5101delta rather than perldelta). @@ -1278,7 +1323,7 @@ Finally, commit and push: Make sure any recent F entries are copied to F on blead. e.g. - 5.8.9 2008-Dec-14 + 5.8.9 2008-Dec-14 =head3 bump RT version number @@ -1301,11 +1346,6 @@ Thanks for releasing perl! =head2 Building a release - the day after -=head3 link announcement in epigraphs.pod - -Add, to your quote to F, a link to the release -announcement in the web-visible mailing list archive. Commit it. - =for checklist skip BLEAD-FINAL, MAINT, RC =head3 update Module::CoreList @@ -1339,8 +1379,7 @@ Otherwise, run: $ ./perl -Ilib Porting/corelist.pl cpan -This will update F, -F and +This will update F and F as it did before, but this time adding new sections for the next BLEAD-POINT release. @@ -1363,7 +1402,8 @@ test_porting makefile target to check that they're ok. Run - $ ./perl -Ilib -MModule::CoreList -le 'print Module::CoreList->find_version($]) ? "ok" : "not ok"' + $ ./perl -Ilib -MModule::CoreList \ + -le 'print Module::CoreList->find_version($]) ? "ok" : "not ok"' and check that it outputs "ok" to prove that Module::CoreList now knows about blead's current version. diff --git a/gnu/usr.bin/perl/Porting/release_schedule.pod b/gnu/usr.bin/perl/Porting/release_schedule.pod index 0c74d1b5b49..f0c62ebb455 100644 --- a/gnu/usr.bin/perl/Porting/release_schedule.pod +++ b/gnu/usr.bin/perl/Porting/release_schedule.pod @@ -8,38 +8,32 @@ release_schedule - Perl 5 release schedule This schedule lists the projected or historical development and release schedules for the next, current and previous stable versions -of Perl. Dates with all question marks will only be releases if +of Perl. Dates with two or more question marks will only be releases if deemed necessary by the Pumpking. -=head2 Perl 5.20 +=head2 Perl 5.22 -Code freezes (which happen in the 5.19.X series) +Code freezes (which happen in the 5.21.X series) - 2014-01-20 5.19.8 Contentious changes freeze - 2014-02-20 5.19.9 User-visible changes freeze - 2014-03-20 5.19.10 Full code freeze - 2014-05-20 5.20.0 Stable release! + 2015-01-20 5.21.8 Contentious changes freeze + 2015-02-20 5.21.9 User-visible changes freeze + 2015-03-20 5.21.10 Full code freeze + 2015-05-20 5.22.0 Stable release! -=head2 Perl 5.18 +=head2 Perl 5.20 -Release schedule (with release manager): + 2014-05-27 5.20.0 ✓ Ricardo Signes + 2014-09-14 5.20.1 ✓ Steve Hay + 2015-01-?? 5.20.2 Steve Hay + +=head2 Perl 5.18 2013-05-18 5.18.0 ✓ Ricardo Signes 2013-08-12 5.18.1 ✓ Ricardo Signes - 2013-11-?? 5.18.2 Ricardo Signes - -(RC0 will be released once we think that all the blockers have been -addressed. This typically means some time in April or May.) - -=head2 Perl 5.16 - -Release schedule (with release managers): - - 2012-05-20 5.16.0 ✓ Ricardo Signes - 2012-08-08 5.16.1 ✓ Ricardo Signes - 2012-11-01 5.16.2 ✓ Ricardo Signes - 2013-03-11 5.16.3 ✓ Ricardo Signes - ????-??-?? 5.16.4 ?? + 2014-01-06 5.18.2 ✓ Ricardo Signes + 2014-10-01 5.18.3 ✓ Ricardo Signes + 2014-10-01 5.18.4 ✓ Ricardo Signes + 2015-??-?? 5.18.5 ?? =head1 DEVELOPMENT RELEASE SCHEDULE @@ -55,36 +49,24 @@ When shipping a release, you should include the schedule for (at least) the next four releases. If a stable version of Perl is released, you should reset the version numbers to the next blead series. -=head2 Perl 5.19 - - 2013-05-20 5.19.0 Ricardo Signes - 2013-06-20 5.19.1 David Golden - 2013-07-20 5.19.2 Aristotle Pagaltzis - 2013-08-20 5.19.3 Steve Hay - 2013-09-20 5.19.4 Steve Hay - 2013-10-20 5.19.5 Steve Hay - 2013-11-20 5.19.6 Chris Williams - 2013-12-20 5.19.7 Abigail - 2014-01-20 5.19.8 Ricardo Signes - 2014-02-20 5.19.9 Tony Cook - 2014-03-20 5.19.10 Aaron Crane - 2014-04-20 5.19.11 Steve Hay - =head2 Perl 5.21 - 2014-05-20 5.21.0 Ricardo Signes - 2014-06-20 5.21.1 Matthew Horsfall - 2014-07-20 5.21.2 Abigail - 2014-08-20 5.21.3 ? - 2014-09-20 5.21.4 ? - 2014-10-20 5.21.5 ? - 2014-11-20 5.21.6 ? - 2014-12-20 5.21.7 ? - 2015-01-20 5.21.8 ? + 2014-05-20 5.21.0 ✓ Ricardo Signes + 2014-06-20 5.21.1 ✓ Matthew Horsfall + 2014-07-20 5.21.2 ✓ Abigail + 2014-08-20 5.21.3 ✓ Peter Martini + 2014-09-20 5.21.4 ✓ Steve Hay + 2014-10-20 5.21.5 ✓ Abigail + 2014-11-20 5.21.6 ✓ Chris "BinGOs" Williams + 2014-12-20 5.21.7 ✓ Max Maischein + 2015-01-20 5.21.8 ✓ Matthew Horsfall 2015-02-20 5.21.9 ? 2015-03-20 5.21.10 ? 2015-04-20 5.21.11 ? +(RC0 for 5.22.0 will be released once we think that all the blockers have been +addressed. This typically means some time in April or May.) + =head1 VICTIMS The following porters have all consented to do at least @@ -106,6 +88,7 @@ Jesse Luehrs Jesse Vincent Leon Brocard Matt Trout +Matthew Horsfall Max Maischein Peter Martini Philippe Bruhat diff --git a/gnu/usr.bin/perl/Porting/todo.pod b/gnu/usr.bin/perl/Porting/todo.pod index 98ec00c412e..9b7cfdfb5c4 100644 --- a/gnu/usr.bin/perl/Porting/todo.pod +++ b/gnu/usr.bin/perl/Porting/todo.pod @@ -467,7 +467,7 @@ Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall. On these systems, it might be the default compilation mode, and there is currently no guarantee that passing no use64bitall option to the Configure process will build a 32bit perl. Implementing -Duse32bit* -options would be nice for perl 5.20.1. +options would be nice for perl 5.20.2. =head2 Profile Perl - am I hot or not? @@ -1023,14 +1023,15 @@ The old perltodo notes "Look at the "reification" code in C". =head2 Virtualize operating system access Implement a set of "vtables" that virtualizes operating system access -(open(), mkdir(), unlink(), readdir(), getenv(), etc.) At the very -least these interfaces should take SVs as "name" arguments instead of -bare char pointers; probably the most flexible and extensible way -would be for the Perl-facing interfaces to accept HVs. The system -needs to be per-operating-system and per-file-system -hookable/filterable, preferably both from XS and Perl level -(L is good reading at this point, -in fact, all of L is.) +(chdir(), chmod(), dbmopen(), getenv(), glob(), link(), mkdir(), open(), +opendir(), readdir(), rename(), rmdir(), stat(), sysopen(), uname(), +unlink(), etc.) At the very least these interfaces should take SVs as +"name" arguments instead of bare char pointers; probably the most +flexible and extensible way would be for the Perl-facing interfaces to +accept HVs. The system needs to be per-operating-system and +per-file-system hookable/filterable, preferably both from XS and Perl +level (L is good reading at this +point, in fact, all of L is.) This has actually already been implemented (but only for Win32), take a look at F and F. While all Win32 @@ -1176,7 +1177,7 @@ L =head1 Big projects Tasks that will get your name mentioned in the description of the "Highlights -of 5.20.1" +of 5.20.2" =head2 make ithreads more robust diff --git a/gnu/usr.bin/perl/README.haiku b/gnu/usr.bin/perl/README.haiku index 74d14db10c0..ebad8be98e4 100644 --- a/gnu/usr.bin/perl/README.haiku +++ b/gnu/usr.bin/perl/README.haiku @@ -22,9 +22,9 @@ The build procedure is completely standard: Make perl executable and create a symlink for libperl: chmod a+x /boot/common/bin/perl - cd /boot/common/lib; ln -s perl5/5.20.1/BePC-haiku/CORE/libperl.so . + cd /boot/common/lib; ln -s perl5/5.20.2/BePC-haiku/CORE/libperl.so . -Replace C<5.20.1> with your respective version of Perl. +Replace C<5.20.2> with your respective version of Perl. =head1 KNOWN PROBLEMS diff --git a/gnu/usr.bin/perl/README.macosx b/gnu/usr.bin/perl/README.macosx index 42cae21a3ca..5797303db05 100644 --- a/gnu/usr.bin/perl/README.macosx +++ b/gnu/usr.bin/perl/README.macosx @@ -10,9 +10,9 @@ perlmacosx - Perl under Mac OS X This document briefly describes Perl under Mac OS X. - curl -O http://www.cpan.org/src/perl-5.20.1.tar.gz - tar -xzf perl-5.20.1.tar.gz - cd perl-5.20.1 + 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 ./Configure -des -Dprefix=/usr/local/ make make test @@ -20,7 +20,7 @@ This document briefly describes Perl under Mac OS X. =head1 DESCRIPTION -The latest Perl release (5.20.1 as of this writing) builds without changes +The latest Perl release (5.20.2 as of this writing) builds without changes under all versions of Mac OS X from 10.3 "Panther" onwards. In order to build your own version of Perl you will need 'make', diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Author.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Author.pm index a8429cfa6c2..572f3ab31d5 100644 --- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Author.pm +++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Author.pm @@ -8,7 +8,7 @@ use CPAN::InfoObj; use vars qw( $VERSION ); -$VERSION = "5.5001"; +$VERSION = "5.5002"; package CPAN::Author; use strict; diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/CacheMgr.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/CacheMgr.pm index d50ed52dce0..144efd62b3b 100644 --- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/CacheMgr.pm +++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/CacheMgr.pm @@ -10,7 +10,7 @@ use File::Find; use vars qw( $VERSION ); -$VERSION = "5.5001"; +$VERSION = "5.5002"; package CPAN::CacheMgr; use strict; diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/FTP.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/FTP.pm index 8aaf3d368d3..831f234d3ce 100644 --- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/FTP.pm +++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/FTP.pm @@ -14,7 +14,7 @@ use vars qw($connect_to_internet_ok $Ua $Thesite $ThesiteURL $Themethod); use vars qw( $VERSION ); -$VERSION = "5.5005"; +$VERSION = "5.5006"; #-> sub CPAN::FTP::ftp_statistics # if they want to rewrite, they need to pass in a filehandle diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HTTP/Client.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HTTP/Client.pm index 8cb1c807201..4fc792c26a4 100644 --- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HTTP/Client.pm +++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HTTP/Client.pm @@ -6,7 +6,7 @@ use vars qw(@ISA); use CPAN::HTTP::Credentials; use HTTP::Tiny 0.005; -$CPAN::HTTP::Client::VERSION = $CPAN::HTTP::Client::VERSION = "1.9600"; +$CPAN::HTTP::Client::VERSION = $CPAN::HTTP::Client::VERSION = "1.9601"; # CPAN::HTTP::Client is adapted from parts of cpanm by Tatsuhiko Miyagawa # and parts of LWP by Gisle Aas diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HandleConfig.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HandleConfig.pm index f1143210a93..a138128bdfe 100644 --- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HandleConfig.pm +++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HandleConfig.pm @@ -12,7 +12,7 @@ CPAN::HandleConfig - internal configuration handling for CPAN.pm =cut -$VERSION = "5.5003"; # see also CPAN::Config::VERSION at end of file +$VERSION = "5.5005"; # see also CPAN::Config::VERSION at end of file %can = ( commit => "Commit changes to disk", @@ -768,7 +768,7 @@ sub prefs_lookup { use strict; use vars qw($AUTOLOAD $VERSION); - $VERSION = "5.5002"; + $VERSION = "5.5005"; # formerly CPAN::HandleConfig was known as CPAN::Config sub AUTOLOAD { ## no critic diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Index.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Index.pm index f52bf3671da..8205d78bd02 100644 --- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Index.pm +++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Index.pm @@ -1,7 +1,7 @@ package CPAN::Index; use strict; use vars qw($LAST_TIME $DATE_OF_02 $DATE_OF_03 $HAVE_REANIMATED $VERSION); -$VERSION = "1.9600"; +$VERSION = "1.9601"; @CPAN::Index::ISA = qw(CPAN::Debug); $LAST_TIME ||= 0; $DATE_OF_03 ||= 0; diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/LWP/UserAgent.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/LWP/UserAgent.pm index 8a5986290e8..fe8bf27a4a9 100644 --- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/LWP/UserAgent.pm +++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/LWP/UserAgent.pm @@ -6,7 +6,7 @@ use vars qw(@ISA $USER $PASSWD $SETUPDONE); use CPAN::HTTP::Credentials; # we delay requiring LWP::UserAgent and setting up inheritance until we need it -$CPAN::LWP::UserAgent::VERSION = $CPAN::LWP::UserAgent::VERSION = "1.9600"; +$CPAN::LWP::UserAgent::VERSION = $CPAN::LWP::UserAgent::VERSION = "1.9601"; sub config { diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Mirrors.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Mirrors.pm index 4304f537033..37e7ce0ef9f 100644 --- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Mirrors.pm +++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Mirrors.pm @@ -34,7 +34,7 @@ CPAN::Mirrors - Get CPAN mirror information and select a fast one package CPAN::Mirrors; use strict; use vars qw($VERSION $urllist $silent); -$VERSION = "1.9600"; +$VERSION = "1.9601"; use Carp; use FileHandle; diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/t/04-base.t b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/t/04-base.t index beffe7f5c0f..1acc3ead976 100644 --- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/t/04-base.t +++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/t/04-base.t @@ -264,7 +264,13 @@ is_deeply( \%split_seen, \%exp, touch_file($exporter); $rv = $base->perl_src(); ok( -d $rv, "perl_src(): returned a directory" ); - is( uc($rv), uc(Cwd::realpath($subdir)), "perl_src(): identified directory" ); + my $rp = Cwd::realpath($subdir); + SKIP: { + if ($^O eq 'dec_osf' && $rp =~ m[^/cluster/members/]) { + skip "Tru64 cluster filesystem", 1; + } # SKIP + is( uc($rv), uc($rp), "perl_src(): identified directory" ); + } is( $capture, q{}, "perl_src(): no warning, as expected" ); chdir $cwd diff --git a/gnu/usr.bin/perl/dist/IO/lib/IO/Socket.pm b/gnu/usr.bin/perl/dist/IO/lib/IO/Socket.pm index 625c71a77de..c78aeecc1a0 100644 --- a/gnu/usr.bin/perl/dist/IO/lib/IO/Socket.pm +++ b/gnu/usr.bin/perl/dist/IO/lib/IO/Socket.pm @@ -24,7 +24,7 @@ require IO::Socket::UNIX if ($^O ne 'epoc' && $^O ne 'symbian'); @ISA = qw(IO::Handle); -$VERSION = "1.37"; +$VERSION = "1.38"; @EXPORT_OK = qw(sockatmark); @@ -499,8 +499,23 @@ C declaration will fail at compile time. =item connected -If the socket is in a connected state the peer address is returned. -If the socket is not in a connected state then undef will be returned. +If the socket is in a connected state, the peer address is returned. If the +socket is not in a connected state, undef is returned. + +Note that connected() considers a half-open TCP socket to be "in a connected +state". Specifically, connected() does not distinguish between the +B and B TCP states; it returns the peer address, +rather than undef, in either case. Thus, in general, connected() cannot +be used to reliably learn whether the peer has initiated a graceful shutdown +because in most cases (see below) the local TCP state machine remains in +B until the local application calls shutdown() or close(); +only at that point does connected() return undef. + +The "in most cases" hedge is because local TCP state machine behavior may +depend on the peer's socket options. In particular, if the peer socket has +SO_LINGER enabled with a zero timeout, then the peer's close() will generate +a RST segment, upon receipt of which the local TCP transitions immediately to +B, and in that state, connected() I return undef. =item protocol diff --git a/gnu/usr.bin/perl/dist/IO/t/io_xs.t b/gnu/usr.bin/perl/dist/IO/t/io_xs.t index b73144794fe..8c7b88c2981 100755 --- a/gnu/usr.bin/perl/dist/IO/t/io_xs.t +++ b/gnu/usr.bin/perl/dist/IO/t/io_xs.t @@ -43,8 +43,8 @@ SKIP: { # [perl #64772] IO::Handle->sync fails on an O_RDONLY descriptor $Config{d_fsync} or skip "No fsync", 1; - $^O eq 'aix' - and skip "fsync() documented to fail on non-writable handles on AIX", 1; + $^O =~ /^(?:aix|irix)$/ + and skip "fsync() documented to fail on non-writable handles on $^O", 1; $^O eq 'cygwin' and skip "fsync() on cygwin uses FlushFileBuffers which requires a writable handle", 1; open my $fh, "<", "t/io_xs.t" diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/Changes b/gnu/usr.bin/perl/dist/Module-CoreList/Changes index 15e62a0c1ed..323b4c86445 100644 --- a/gnu/usr.bin/perl/dist/Module-CoreList/Changes +++ b/gnu/usr.bin/perl/dist/Module-CoreList/Changes @@ -1,4 +1,25 @@ -5.020001 +5.20150214 + - Updated for v5.20.2 + +5.20150120 + - Updated for v5.21.8 + +5.20141220 + - Updated for v5.21.7 + +5.20141120 + - Updated for v5.21.6 + +5.20141020 + - Updated for v5.21.5 + +5.20141002 + - Updated for v5.18.3 and v5.18.4 + +5.20140920 + - Updated for v5.21.4 + +5.20140914 - Updated for v5.20.1 5.021003 diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm index 8eec9695f60..54725c87fc4 100644 --- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm +++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm @@ -4,7 +4,7 @@ use vars qw/$VERSION %released %version %families %upstream %bug_tracker %deprecated %delta/; use Module::CoreList::TieHashDelta; use version; -$VERSION = '5.020001'; +$VERSION = '5.20150214'; my $dumpinc = 0; sub import { @@ -28,7 +28,7 @@ sub first_release_raw { my $version = shift; my @perls = $version - ? grep { exists $version{$_}{ $module } && + ? grep { defined $version{$_}{ $module } && $version{$_}{ $module } ge $version } keys %version : grep { exists $version{$_}{ $module } } keys %version; @@ -244,6 +244,8 @@ sub changes_between { 5.019006 => '2013-11-20', 5.019007 => '2013-12-20', 5.018002 => '2014-01-06', + 5.018003 => '2014-10-01', + 5.018004 => '2014-10-01', 5.019008 => '2014-01-20', 5.019009 => '2014-02-20', 5.01901 => '2014-03-20', @@ -254,6 +256,12 @@ sub changes_between { 5.021002 => '2014-07-20', 5.021003 => '2014-08-20', 5.020001 => '2014-09-14', + 5.021004 => '2014-09-20', + 5.021005 => '2014-10-20', + 5.021006 => '2014-11-20', + 5.021007 => '2014-12-20', + 5.021008 => '2015-01-20', + 5.020002 => '2015-02-14', ); for my $version ( sort { $a <=> $b } keys %released ) { @@ -8079,6 +8087,22 @@ for my $version ( sort { $a <=> $b } keys %released ) { 'Module::CoreList::Utils'=> '3.03', }, }, + 5.018003 => { + delta_from => 5.018002, + changed => { + 'Module::CoreList' => '3.12', + 'Module::CoreList::TieHashDelta'=> '3.12', + 'Module::CoreList::Utils'=> '3.12', + }, + }, + 5.018004 => { + delta_from => 5.018003, + changed => { + 'Module::CoreList' => '3.13', + 'Module::CoreList::TieHashDelta'=> '3.13', + 'Module::CoreList::Utils'=> '3.13', + }, + }, 5.019000 => { delta_from => 5.018000, changed => { @@ -10177,6 +10201,894 @@ for my $version ( sort { $a <=> $b } keys %released ) { removed => { } }, + 5.021004 => { + delta_from => 5.021003, + changed => { + 'App::Prove' => '3.33', + 'App::Prove::State' => '3.33', + 'App::Prove::State::Result'=> '3.33', + 'App::Prove::State::Result::Test'=> '3.33', + 'Archive::Tar' => '2.02', + 'Archive::Tar::Constant'=> '2.02', + 'Archive::Tar::File' => '2.02', + 'Attribute::Handlers' => '0.97', + 'B' => '1.51', + 'B::Concise' => '0.993', + 'B::Deparse' => '1.28', + 'B::Op_private' => '5.021004', + 'CPAN::Meta::Requirements'=> '2.128', + 'Config' => '5.021004', + 'Cwd' => '3.50', + 'Data::Dumper' => '2.154', + 'ExtUtils::CBuilder' => '0.280219', + 'ExtUtils::CBuilder::Base'=> '0.280219', + 'ExtUtils::CBuilder::Platform::Unix'=> '0.280219', + 'ExtUtils::CBuilder::Platform::VMS'=> '0.280219', + 'ExtUtils::CBuilder::Platform::Windows'=> '0.280219', + 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280219', + 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280219', + 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280219', + 'ExtUtils::CBuilder::Platform::aix'=> '0.280219', + 'ExtUtils::CBuilder::Platform::android'=> '0.280219', + 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280219', + 'ExtUtils::CBuilder::Platform::darwin'=> '0.280219', + 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280219', + 'ExtUtils::CBuilder::Platform::os2'=> '0.280219', + 'ExtUtils::Install' => '2.04', + 'ExtUtils::Installed' => '2.04', + 'ExtUtils::Liblist::Kid'=> '6.98_01', + 'ExtUtils::Manifest' => '1.68', + 'ExtUtils::Packlist' => '2.04', + 'File::Find' => '1.28', + 'File::Spec' => '3.50', + 'File::Spec::Cygwin' => '3.50', + 'File::Spec::Epoc' => '3.50', + 'File::Spec::Functions' => '3.50', + 'File::Spec::Mac' => '3.50', + 'File::Spec::OS2' => '3.50', + 'File::Spec::Unix' => '3.50', + 'File::Spec::VMS' => '3.50', + 'File::Spec::Win32' => '3.50', + 'Getopt::Std' => '1.11', + 'HTTP::Tiny' => '0.049', + 'IO' => '1.34', + 'IO::Socket::IP' => '0.32', + 'List::Util' => '1.41', + 'List::Util::XS' => '1.41', + 'Locale::Codes' => '3.32', + 'Locale::Codes::Constants'=> '3.32', + 'Locale::Codes::Country'=> '3.32', + 'Locale::Codes::Country_Codes'=> '3.32', + 'Locale::Codes::Country_Retired'=> '3.32', + 'Locale::Codes::Currency'=> '3.32', + 'Locale::Codes::Currency_Codes'=> '3.32', + 'Locale::Codes::Currency_Retired'=> '3.32', + 'Locale::Codes::LangExt'=> '3.32', + 'Locale::Codes::LangExt_Codes'=> '3.32', + 'Locale::Codes::LangExt_Retired'=> '3.32', + 'Locale::Codes::LangFam'=> '3.32', + 'Locale::Codes::LangFam_Codes'=> '3.32', + 'Locale::Codes::LangFam_Retired'=> '3.32', + 'Locale::Codes::LangVar'=> '3.32', + 'Locale::Codes::LangVar_Codes'=> '3.32', + 'Locale::Codes::LangVar_Retired'=> '3.32', + 'Locale::Codes::Language'=> '3.32', + 'Locale::Codes::Language_Codes'=> '3.32', + 'Locale::Codes::Language_Retired'=> '3.32', + 'Locale::Codes::Script' => '3.32', + 'Locale::Codes::Script_Codes'=> '3.32', + 'Locale::Codes::Script_Retired'=> '3.32', + 'Locale::Country' => '3.32', + 'Locale::Currency' => '3.32', + 'Locale::Language' => '3.32', + 'Locale::Script' => '3.32', + 'Math::BigFloat' => '1.9997', + 'Math::BigInt' => '1.9997', + 'Math::BigInt::Calc' => '1.9997', + 'Math::BigInt::CalcEmu' => '1.9997', + 'Module::CoreList' => '5.20140920', + 'Module::CoreList::TieHashDelta'=> '5.20140920', + 'Module::CoreList::Utils'=> '5.20140920', + 'POSIX' => '1.43', + 'Pod::Perldoc' => '3.24', + 'Pod::Perldoc::BaseTo' => '3.24', + 'Pod::Perldoc::GetOptsOO'=> '3.24', + 'Pod::Perldoc::ToANSI' => '3.24', + 'Pod::Perldoc::ToChecker'=> '3.24', + 'Pod::Perldoc::ToMan' => '3.24', + 'Pod::Perldoc::ToNroff' => '3.24', + 'Pod::Perldoc::ToPod' => '3.24', + 'Pod::Perldoc::ToRtf' => '3.24', + 'Pod::Perldoc::ToTerm' => '3.24', + 'Pod::Perldoc::ToText' => '3.24', + 'Pod::Perldoc::ToTk' => '3.24', + 'Pod::Perldoc::ToXml' => '3.24', + 'Scalar::Util' => '1.41', + 'Sub::Util' => '1.41', + 'TAP::Base' => '3.33', + 'TAP::Formatter::Base' => '3.33', + 'TAP::Formatter::Color' => '3.33', + 'TAP::Formatter::Console'=> '3.33', + 'TAP::Formatter::Console::ParallelSession'=> '3.33', + 'TAP::Formatter::Console::Session'=> '3.33', + 'TAP::Formatter::File' => '3.33', + 'TAP::Formatter::File::Session'=> '3.33', + 'TAP::Formatter::Session'=> '3.33', + 'TAP::Harness' => '3.33', + 'TAP::Harness::Env' => '3.33', + 'TAP::Object' => '3.33', + 'TAP::Parser' => '3.33', + 'TAP::Parser::Aggregator'=> '3.33', + 'TAP::Parser::Grammar' => '3.33', + 'TAP::Parser::Iterator' => '3.33', + 'TAP::Parser::Iterator::Array'=> '3.33', + 'TAP::Parser::Iterator::Process'=> '3.33', + 'TAP::Parser::Iterator::Stream'=> '3.33', + 'TAP::Parser::IteratorFactory'=> '3.33', + 'TAP::Parser::Multiplexer'=> '3.33', + 'TAP::Parser::Result' => '3.33', + 'TAP::Parser::Result::Bailout'=> '3.33', + 'TAP::Parser::Result::Comment'=> '3.33', + 'TAP::Parser::Result::Plan'=> '3.33', + 'TAP::Parser::Result::Pragma'=> '3.33', + 'TAP::Parser::Result::Test'=> '3.33', + 'TAP::Parser::Result::Unknown'=> '3.33', + 'TAP::Parser::Result::Version'=> '3.33', + 'TAP::Parser::Result::YAML'=> '3.33', + 'TAP::Parser::ResultFactory'=> '3.33', + 'TAP::Parser::Scheduler'=> '3.33', + 'TAP::Parser::Scheduler::Job'=> '3.33', + 'TAP::Parser::Scheduler::Spinner'=> '3.33', + 'TAP::Parser::Source' => '3.33', + 'TAP::Parser::SourceHandler'=> '3.33', + 'TAP::Parser::SourceHandler::Executable'=> '3.33', + 'TAP::Parser::SourceHandler::File'=> '3.33', + 'TAP::Parser::SourceHandler::Handle'=> '3.33', + 'TAP::Parser::SourceHandler::Perl'=> '3.33', + 'TAP::Parser::SourceHandler::RawTAP'=> '3.33', + 'TAP::Parser::YAMLish::Reader'=> '3.33', + 'TAP::Parser::YAMLish::Writer'=> '3.33', + 'Term::ReadLine' => '1.15', + 'Test::Builder' => '1.001006', + 'Test::Builder::Module' => '1.001006', + 'Test::Builder::Tester' => '1.24', + 'Test::Builder::Tester::Color'=> '1.24', + 'Test::Harness' => '3.33', + 'Test::More' => '1.001006', + 'Test::Simple' => '1.001006', + 'Time::Piece' => '1.29', + 'Time::Seconds' => '1.29', + 'XS::APItest' => '0.64', + '_charnames' => '1.42', + 'attributes' => '0.23', + 'bigint' => '0.37', + 'bignum' => '0.38', + 'bigrat' => '0.37', + 'constant' => '1.32', + 'experimental' => '0.010', + 'overload' => '1.23', + 'threads' => '1.96', + 'version' => '0.9909', + 'version::regex' => '0.9909', + 'version::vpp' => '0.9909', + }, + removed => { + } + }, + 5.021005 => { + delta_from => 5.021004, + changed => { + 'B' => '1.52', + 'B::Concise' => '0.994', + 'B::Debug' => '1.22', + 'B::Deparse' => '1.29', + 'B::Op_private' => '5.021005', + 'CPAN::Meta' => '2.142690', + 'CPAN::Meta::Converter' => '2.142690', + 'CPAN::Meta::Feature' => '2.142690', + 'CPAN::Meta::History' => '2.142690', + 'CPAN::Meta::Merge' => '2.142690', + 'CPAN::Meta::Prereqs' => '2.142690', + 'CPAN::Meta::Spec' => '2.142690', + 'CPAN::Meta::Validator' => '2.142690', + 'Compress::Raw::Bzip2' => '2.066', + 'Compress::Raw::Zlib' => '2.066', + 'Compress::Zlib' => '2.066', + 'Config' => '5.021005', + 'Cwd' => '3.51', + 'DynaLoader' => '1.27', + 'Errno' => '1.21', + 'ExtUtils::CBuilder' => '0.280220', + 'ExtUtils::CBuilder::Base'=> '0.280220', + 'ExtUtils::CBuilder::Platform::Unix'=> '0.280220', + 'ExtUtils::CBuilder::Platform::VMS'=> '0.280220', + 'ExtUtils::CBuilder::Platform::Windows'=> '0.280220', + 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280220', + 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280220', + 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280220', + 'ExtUtils::CBuilder::Platform::aix'=> '0.280220', + 'ExtUtils::CBuilder::Platform::android'=> '0.280220', + 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280220', + 'ExtUtils::CBuilder::Platform::darwin'=> '0.280220', + 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280220', + 'ExtUtils::CBuilder::Platform::os2'=> '0.280220', + 'ExtUtils::Miniperl' => '1.03', + 'Fcntl' => '1.13', + 'File::Find' => '1.29', + 'File::Spec' => '3.51', + 'File::Spec::Cygwin' => '3.51', + 'File::Spec::Epoc' => '3.51', + 'File::Spec::Functions' => '3.51', + 'File::Spec::Mac' => '3.51', + 'File::Spec::OS2' => '3.51', + 'File::Spec::Unix' => '3.51', + 'File::Spec::VMS' => '3.51', + 'File::Spec::Win32' => '3.51', + 'HTTP::Tiny' => '0.050', + 'IO::Compress::Adapter::Bzip2'=> '2.066', + 'IO::Compress::Adapter::Deflate'=> '2.066', + 'IO::Compress::Adapter::Identity'=> '2.066', + 'IO::Compress::Base' => '2.066', + 'IO::Compress::Base::Common'=> '2.066', + 'IO::Compress::Bzip2' => '2.066', + 'IO::Compress::Deflate' => '2.066', + 'IO::Compress::Gzip' => '2.066', + 'IO::Compress::Gzip::Constants'=> '2.066', + 'IO::Compress::RawDeflate'=> '2.066', + 'IO::Compress::Zip' => '2.066', + 'IO::Compress::Zip::Constants'=> '2.066', + 'IO::Compress::Zlib::Constants'=> '2.066', + 'IO::Compress::Zlib::Extra'=> '2.066', + 'IO::Uncompress::Adapter::Bunzip2'=> '2.066', + 'IO::Uncompress::Adapter::Identity'=> '2.066', + 'IO::Uncompress::Adapter::Inflate'=> '2.066', + 'IO::Uncompress::AnyInflate'=> '2.066', + 'IO::Uncompress::AnyUncompress'=> '2.066', + 'IO::Uncompress::Base' => '2.066', + 'IO::Uncompress::Bunzip2'=> '2.066', + 'IO::Uncompress::Gunzip'=> '2.066', + 'IO::Uncompress::Inflate'=> '2.066', + 'IO::Uncompress::RawInflate'=> '2.066', + 'IO::Uncompress::Unzip' => '2.066', + 'JSON::PP' => '2.27300', + 'Module::CoreList' => '5.20141020', + 'Module::CoreList::TieHashDelta'=> '5.20141020', + 'Module::CoreList::Utils'=> '5.20141020', + 'Net::Cmd' => '3.02', + 'Net::Config' => '3.02', + 'Net::Domain' => '3.02', + 'Net::FTP' => '3.02', + 'Net::FTP::A' => '3.02', + 'Net::FTP::E' => '3.02', + 'Net::FTP::I' => '3.02', + 'Net::FTP::L' => '3.02', + 'Net::FTP::dataconn' => '3.02', + 'Net::NNTP' => '3.02', + 'Net::Netrc' => '3.02', + 'Net::POP3' => '3.02', + 'Net::SMTP' => '3.02', + 'Net::Time' => '3.02', + 'Opcode' => '1.29', + 'POSIX' => '1.45', + 'Socket' => '2.016', + 'Test::Builder' => '1.001008', + 'Test::Builder::Module' => '1.001008', + 'Test::More' => '1.001008', + 'Test::Simple' => '1.001008', + 'XS::APItest' => '0.65', + 'XSLoader' => '0.18', + 'attributes' => '0.24', + 'experimental' => '0.012', + 'feature' => '1.38', + 'perlfaq' => '5.0150046', + 're' => '0.27', + 'threads::shared' => '1.47', + 'warnings' => '1.28', + 'warnings::register' => '1.04', + }, + removed => { + } + }, + 5.021006 => { + delta_from => 5.021005, + changed => { + 'App::Prove' => '3.34', + 'App::Prove::State' => '3.34', + 'App::Prove::State::Result'=> '3.34', + 'App::Prove::State::Result::Test'=> '3.34', + 'B' => '1.53', + 'B::Concise' => '0.995', + 'B::Deparse' => '1.30', + 'B::Op_private' => '5.021006', + 'CPAN::Meta' => '2.143240', + 'CPAN::Meta::Converter' => '2.143240', + 'CPAN::Meta::Feature' => '2.143240', + 'CPAN::Meta::History' => '2.143240', + 'CPAN::Meta::Merge' => '2.143240', + 'CPAN::Meta::Prereqs' => '2.143240', + 'CPAN::Meta::Requirements'=> '2.130', + 'CPAN::Meta::Spec' => '2.143240', + 'CPAN::Meta::Validator' => '2.143240', + 'Config' => '5.021006', + 'Devel::Peek' => '1.19', + 'Digest::SHA' => '5.93', + 'DynaLoader' => '1.28', + 'Encode' => '2.64', + 'Exporter' => '5.72', + 'Exporter::Heavy' => '5.72', + 'ExtUtils::Command::MM' => '7.02', + 'ExtUtils::Liblist' => '7.02', + 'ExtUtils::Liblist::Kid'=> '7.02', + 'ExtUtils::MM' => '7.02', + 'ExtUtils::MM_AIX' => '7.02', + 'ExtUtils::MM_Any' => '7.02', + 'ExtUtils::MM_BeOS' => '7.02', + 'ExtUtils::MM_Cygwin' => '7.02', + 'ExtUtils::MM_DOS' => '7.02', + 'ExtUtils::MM_Darwin' => '7.02', + 'ExtUtils::MM_MacOS' => '7.02', + 'ExtUtils::MM_NW5' => '7.02', + 'ExtUtils::MM_OS2' => '7.02', + 'ExtUtils::MM_QNX' => '7.02', + 'ExtUtils::MM_UWIN' => '7.02', + 'ExtUtils::MM_Unix' => '7.02', + 'ExtUtils::MM_VMS' => '7.02', + 'ExtUtils::MM_VOS' => '7.02', + 'ExtUtils::MM_Win32' => '7.02', + 'ExtUtils::MM_Win95' => '7.02', + 'ExtUtils::MY' => '7.02', + 'ExtUtils::MakeMaker' => '7.02', + 'ExtUtils::MakeMaker::Config'=> '7.02', + 'ExtUtils::MakeMaker::Locale'=> '7.02', + 'ExtUtils::MakeMaker::version'=> '7.02', + 'ExtUtils::MakeMaker::version::regex'=> '7.02', + 'ExtUtils::MakeMaker::version::vpp'=> '7.02', + 'ExtUtils::Manifest' => '1.69', + 'ExtUtils::Mkbootstrap' => '7.02', + 'ExtUtils::Mksymlists' => '7.02', + 'ExtUtils::ParseXS' => '3.26', + 'ExtUtils::ParseXS::Constants'=> '3.26', + 'ExtUtils::ParseXS::CountLines'=> '3.26', + 'ExtUtils::ParseXS::Eval'=> '3.26', + 'ExtUtils::ParseXS::Utilities'=> '3.26', + 'ExtUtils::testlib' => '7.02', + 'File::Spec::VMS' => '3.52', + 'HTTP::Tiny' => '0.051', + 'I18N::Langinfo' => '0.12', + 'IO::Socket' => '1.38', + 'Module::CoreList' => '5.20141120', + 'Module::CoreList::TieHashDelta'=> '5.20141120', + 'Module::CoreList::Utils'=> '5.20141120', + 'POSIX' => '1.46', + 'PerlIO::encoding' => '0.20', + 'PerlIO::scalar' => '0.20', + 'TAP::Base' => '3.34', + 'TAP::Formatter::Base' => '3.34', + 'TAP::Formatter::Color' => '3.34', + 'TAP::Formatter::Console'=> '3.34', + 'TAP::Formatter::Console::ParallelSession'=> '3.34', + 'TAP::Formatter::Console::Session'=> '3.34', + 'TAP::Formatter::File' => '3.34', + 'TAP::Formatter::File::Session'=> '3.34', + 'TAP::Formatter::Session'=> '3.34', + 'TAP::Harness' => '3.34', + 'TAP::Harness::Env' => '3.34', + 'TAP::Object' => '3.34', + 'TAP::Parser' => '3.34', + 'TAP::Parser::Aggregator'=> '3.34', + 'TAP::Parser::Grammar' => '3.34', + 'TAP::Parser::Iterator' => '3.34', + 'TAP::Parser::Iterator::Array'=> '3.34', + 'TAP::Parser::Iterator::Process'=> '3.34', + 'TAP::Parser::Iterator::Stream'=> '3.34', + 'TAP::Parser::IteratorFactory'=> '3.34', + 'TAP::Parser::Multiplexer'=> '3.34', + 'TAP::Parser::Result' => '3.34', + 'TAP::Parser::Result::Bailout'=> '3.34', + 'TAP::Parser::Result::Comment'=> '3.34', + 'TAP::Parser::Result::Plan'=> '3.34', + 'TAP::Parser::Result::Pragma'=> '3.34', + 'TAP::Parser::Result::Test'=> '3.34', + 'TAP::Parser::Result::Unknown'=> '3.34', + 'TAP::Parser::Result::Version'=> '3.34', + 'TAP::Parser::Result::YAML'=> '3.34', + 'TAP::Parser::ResultFactory'=> '3.34', + 'TAP::Parser::Scheduler'=> '3.34', + 'TAP::Parser::Scheduler::Job'=> '3.34', + 'TAP::Parser::Scheduler::Spinner'=> '3.34', + 'TAP::Parser::Source' => '3.34', + 'TAP::Parser::SourceHandler'=> '3.34', + 'TAP::Parser::SourceHandler::Executable'=> '3.34', + 'TAP::Parser::SourceHandler::File'=> '3.34', + 'TAP::Parser::SourceHandler::Handle'=> '3.34', + 'TAP::Parser::SourceHandler::Perl'=> '3.34', + 'TAP::Parser::SourceHandler::RawTAP'=> '3.34', + 'TAP::Parser::YAMLish::Reader'=> '3.34', + 'TAP::Parser::YAMLish::Writer'=> '3.34', + 'Test::Builder' => '1.301001_075', + 'Test::Builder::Module' => '1.301001_075', + 'Test::Builder::Tester' => '1.301001_075', + 'Test::Builder::Tester::Color'=> '1.301001_075', + 'Test::Harness' => '3.34', + 'Test::More' => '1.301001_075', + 'Test::More::DeepCheck' => undef, + 'Test::More::DeepCheck::Strict'=> undef, + 'Test::More::DeepCheck::Tolerant'=> undef, + 'Test::More::Tools' => undef, + 'Test::MostlyLike' => undef, + 'Test::Simple' => '1.301001_075', + 'Test::Stream' => '1.301001_075', + 'Test::Stream::ArrayBase'=> undef, + 'Test::Stream::ArrayBase::Meta'=> undef, + 'Test::Stream::Carp' => undef, + 'Test::Stream::Context' => undef, + 'Test::Stream::Event' => undef, + 'Test::Stream::Event::Bail'=> undef, + 'Test::Stream::Event::Child'=> undef, + 'Test::Stream::Event::Diag'=> undef, + 'Test::Stream::Event::Finish'=> undef, + 'Test::Stream::Event::Note'=> undef, + 'Test::Stream::Event::Ok'=> undef, + 'Test::Stream::Event::Plan'=> undef, + 'Test::Stream::Event::Subtest'=> undef, + 'Test::Stream::ExitMagic'=> undef, + 'Test::Stream::ExitMagic::Context'=> undef, + 'Test::Stream::Exporter'=> undef, + 'Test::Stream::Exporter::Meta'=> undef, + 'Test::Stream::IOSets' => undef, + 'Test::Stream::Meta' => undef, + 'Test::Stream::PackageUtil'=> undef, + 'Test::Stream::Tester' => undef, + 'Test::Stream::Tester::Checks'=> undef, + 'Test::Stream::Tester::Checks::Event'=> undef, + 'Test::Stream::Tester::Events'=> undef, + 'Test::Stream::Tester::Events::Event'=> undef, + 'Test::Stream::Tester::Grab'=> undef, + 'Test::Stream::Threads' => undef, + 'Test::Stream::Toolset' => undef, + 'Test::Stream::Util' => undef, + 'Test::Tester' => '1.301001_075', + 'Test::Tester::Capture' => undef, + 'Test::use::ok' => '1.301001_075', + 'Unicode::UCD' => '0.59', + 'XS::APItest' => '0.68', + 'XSLoader' => '0.19', + 'experimental' => '0.013', + 'locale' => '1.05', + 'ok' => '1.301001_075', + 'overload' => '1.24', + 're' => '0.28', + 'warnings' => '1.29', + }, + removed => { + } + }, + 5.021007 => { + delta_from => 5.021006, + changed => { + 'Archive::Tar' => '2.04', + 'Archive::Tar::Constant'=> '2.04', + 'Archive::Tar::File' => '2.04', + 'B' => '1.54', + 'B::Concise' => '0.996', + 'B::Deparse' => '1.31', + 'B::Op_private' => '5.021007', + 'B::Showlex' => '1.05', + 'Compress::Raw::Bzip2' => '2.067', + 'Compress::Raw::Zlib' => '2.067', + 'Compress::Zlib' => '2.067', + 'Config' => '5.021007', + 'Cwd' => '3.54', + 'DB_File' => '1.834', + 'Data::Dumper' => '2.155', + 'Devel::PPPort' => '3.25', + 'Devel::Peek' => '1.20', + 'DynaLoader' => '1.29', + 'Encode' => '2.67', + 'Errno' => '1.22', + 'ExtUtils::CBuilder' => '0.280221', + 'ExtUtils::CBuilder::Base'=> '0.280221', + 'ExtUtils::CBuilder::Platform::Unix'=> '0.280221', + 'ExtUtils::CBuilder::Platform::VMS'=> '0.280221', + 'ExtUtils::CBuilder::Platform::Windows'=> '0.280221', + 'ExtUtils::CBuilder::Platform::aix'=> '0.280221', + 'ExtUtils::CBuilder::Platform::android'=> '0.280221', + 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280221', + 'ExtUtils::CBuilder::Platform::darwin'=> '0.280221', + 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280221', + 'ExtUtils::CBuilder::Platform::os2'=> '0.280221', + 'ExtUtils::Command::MM' => '7.04', + 'ExtUtils::Liblist' => '7.04', + 'ExtUtils::Liblist::Kid'=> '7.04', + 'ExtUtils::MM' => '7.04', + 'ExtUtils::MM_AIX' => '7.04', + 'ExtUtils::MM_Any' => '7.04', + 'ExtUtils::MM_BeOS' => '7.04', + 'ExtUtils::MM_Cygwin' => '7.04', + 'ExtUtils::MM_DOS' => '7.04', + 'ExtUtils::MM_Darwin' => '7.04', + 'ExtUtils::MM_MacOS' => '7.04', + 'ExtUtils::MM_NW5' => '7.04', + 'ExtUtils::MM_OS2' => '7.04', + 'ExtUtils::MM_QNX' => '7.04', + 'ExtUtils::MM_UWIN' => '7.04', + 'ExtUtils::MM_Unix' => '7.04', + 'ExtUtils::MM_VMS' => '7.04', + 'ExtUtils::MM_VOS' => '7.04', + 'ExtUtils::MM_Win32' => '7.04', + 'ExtUtils::MM_Win95' => '7.04', + 'ExtUtils::MY' => '7.04', + 'ExtUtils::MakeMaker' => '7.04', + 'ExtUtils::MakeMaker::Config'=> '7.04', + 'ExtUtils::MakeMaker::Locale'=> '7.04', + 'ExtUtils::MakeMaker::version'=> '7.04', + 'ExtUtils::MakeMaker::version::regex'=> '7.04', + 'ExtUtils::MakeMaker::version::vpp'=> '7.04', + 'ExtUtils::Mkbootstrap' => '7.04', + 'ExtUtils::Mksymlists' => '7.04', + 'ExtUtils::ParseXS' => '3.27', + 'ExtUtils::ParseXS::Constants'=> '3.27', + 'ExtUtils::ParseXS::CountLines'=> '3.27', + 'ExtUtils::ParseXS::Eval'=> '3.27', + 'ExtUtils::ParseXS::Utilities'=> '3.27', + 'ExtUtils::testlib' => '7.04', + 'File::Spec' => '3.53', + 'File::Spec::Cygwin' => '3.54', + 'File::Spec::Epoc' => '3.54', + 'File::Spec::Functions' => '3.54', + 'File::Spec::Mac' => '3.54', + 'File::Spec::OS2' => '3.54', + 'File::Spec::Unix' => '3.54', + 'File::Spec::VMS' => '3.54', + 'File::Spec::Win32' => '3.54', + 'Filter::Util::Call' => '1.51', + 'HTTP::Tiny' => '0.053', + 'IO' => '1.35', + 'IO::Compress::Adapter::Bzip2'=> '2.067', + 'IO::Compress::Adapter::Deflate'=> '2.067', + 'IO::Compress::Adapter::Identity'=> '2.067', + 'IO::Compress::Base' => '2.067', + 'IO::Compress::Base::Common'=> '2.067', + 'IO::Compress::Bzip2' => '2.067', + 'IO::Compress::Deflate' => '2.067', + 'IO::Compress::Gzip' => '2.067', + 'IO::Compress::Gzip::Constants'=> '2.067', + 'IO::Compress::RawDeflate'=> '2.067', + 'IO::Compress::Zip' => '2.067', + 'IO::Compress::Zip::Constants'=> '2.067', + 'IO::Compress::Zlib::Constants'=> '2.067', + 'IO::Compress::Zlib::Extra'=> '2.067', + 'IO::Socket::IP' => '0.34', + 'IO::Uncompress::Adapter::Bunzip2'=> '2.067', + 'IO::Uncompress::Adapter::Identity'=> '2.067', + 'IO::Uncompress::Adapter::Inflate'=> '2.067', + 'IO::Uncompress::AnyInflate'=> '2.067', + 'IO::Uncompress::AnyUncompress'=> '2.067', + 'IO::Uncompress::Base' => '2.067', + 'IO::Uncompress::Bunzip2'=> '2.067', + 'IO::Uncompress::Gunzip'=> '2.067', + 'IO::Uncompress::Inflate'=> '2.067', + 'IO::Uncompress::RawInflate'=> '2.067', + 'IO::Uncompress::Unzip' => '2.067', + 'Locale::Codes' => '3.33', + 'Locale::Codes::Constants'=> '3.33', + 'Locale::Codes::Country'=> '3.33', + 'Locale::Codes::Country_Codes'=> '3.33', + 'Locale::Codes::Country_Retired'=> '3.33', + 'Locale::Codes::Currency'=> '3.33', + 'Locale::Codes::Currency_Codes'=> '3.33', + 'Locale::Codes::Currency_Retired'=> '3.33', + 'Locale::Codes::LangExt'=> '3.33', + 'Locale::Codes::LangExt_Codes'=> '3.33', + 'Locale::Codes::LangExt_Retired'=> '3.33', + 'Locale::Codes::LangFam'=> '3.33', + 'Locale::Codes::LangFam_Codes'=> '3.33', + 'Locale::Codes::LangFam_Retired'=> '3.33', + 'Locale::Codes::LangVar'=> '3.33', + 'Locale::Codes::LangVar_Codes'=> '3.33', + 'Locale::Codes::LangVar_Retired'=> '3.33', + 'Locale::Codes::Language'=> '3.33', + 'Locale::Codes::Language_Codes'=> '3.33', + 'Locale::Codes::Language_Retired'=> '3.33', + 'Locale::Codes::Script' => '3.33', + 'Locale::Codes::Script_Codes'=> '3.33', + 'Locale::Codes::Script_Retired'=> '3.33', + 'Locale::Country' => '3.33', + 'Locale::Currency' => '3.33', + 'Locale::Language' => '3.33', + 'Locale::Maketext' => '1.26', + 'Locale::Script' => '3.33', + 'Module::CoreList' => '5.20141220', + 'Module::CoreList::TieHashDelta'=> '5.20141220', + 'Module::CoreList::Utils'=> '5.20141220', + 'NDBM_File' => '1.14', + 'Net::Cmd' => '3.04', + 'Net::Config' => '3.04', + 'Net::Domain' => '3.04', + 'Net::FTP' => '3.04', + 'Net::FTP::A' => '3.04', + 'Net::FTP::E' => '3.04', + 'Net::FTP::I' => '3.04', + 'Net::FTP::L' => '3.04', + 'Net::FTP::dataconn' => '3.04', + 'Net::NNTP' => '3.04', + 'Net::Netrc' => '3.04', + 'Net::POP3' => '3.04', + 'Net::SMTP' => '3.04', + 'Net::Time' => '3.04', + 'Opcode' => '1.30', + 'POSIX' => '1.48', + 'PerlIO::scalar' => '0.21', + 'Pod::Escapes' => '1.07', + 'SDBM_File' => '1.12', + 'Storable' => '2.52', + 'Sys::Hostname' => '1.20', + 'Test::Builder' => '1.301001_090', + 'Test::Builder::Module' => '1.301001_090', + 'Test::Builder::Tester' => '1.301001_090', + 'Test::Builder::Tester::Color'=> '1.301001_090', + 'Test::CanFork' => undef, + 'Test::CanThread' => undef, + 'Test::More' => '1.301001_090', + 'Test::Simple' => '1.301001_090', + 'Test::Stream' => '1.301001_090', + 'Test::Stream::API' => undef, + 'Test::Stream::ForceExit'=> undef, + 'Test::Stream::Subtest' => undef, + 'Test::Tester' => '1.301001_090', + 'Test::use::ok' => '1.301001_090', + 'Unicode::Collate' => '1.09', + 'Unicode::Collate::CJK::Big5'=> '1.09', + 'Unicode::Collate::CJK::GB2312'=> '1.09', + 'Unicode::Collate::CJK::JISX0208'=> '1.09', + 'Unicode::Collate::CJK::Korean'=> '1.09', + 'Unicode::Collate::CJK::Pinyin'=> '1.09', + 'Unicode::Collate::CJK::Stroke'=> '1.09', + 'Unicode::Collate::CJK::Zhuyin'=> '1.09', + 'Unicode::Collate::Locale'=> '1.09', + 'XS::APItest' => '0.69', + 'XSLoader' => '0.20', + '_charnames' => '1.43', + 'arybase' => '0.09', + 'charnames' => '1.43', + 'feature' => '1.39', + 'mro' => '1.17', + 'ok' => '1.301001_090', + 'strict' => '1.09', + 'threads' => '1.96_001', + }, + removed => { + } + }, + 5.021008 => { + delta_from => 5.021007, + changed => { + 'App::Prove' => '3.35', + 'App::Prove::State' => '3.35', + 'App::Prove::State::Result'=> '3.35', + 'App::Prove::State::Result::Test'=> '3.35', + 'B' => '1.55', + 'B::Deparse' => '1.32', + 'B::Op_private' => '5.021008', + 'CPAN::Meta::Requirements'=> '2.131', + 'Compress::Raw::Bzip2' => '2.068', + 'Compress::Raw::Zlib' => '2.068', + 'Compress::Zlib' => '2.068', + 'Config' => '5.021008', + 'DB_File' => '1.835', + 'Data::Dumper' => '2.156', + 'Devel::PPPort' => '3.28', + 'Devel::Peek' => '1.21', + 'Digest::MD5' => '2.54', + 'Digest::SHA' => '5.95', + 'DynaLoader' => '1.30', + 'ExtUtils::Command' => '1.20', + 'ExtUtils::Manifest' => '1.70', + 'Fatal' => '2.26', + 'File::Glob' => '1.24', + 'Filter::Util::Call' => '1.54', + 'Getopt::Long' => '2.43', + 'IO::Compress::Adapter::Bzip2'=> '2.068', + 'IO::Compress::Adapter::Deflate'=> '2.068', + 'IO::Compress::Adapter::Identity'=> '2.068', + 'IO::Compress::Base' => '2.068', + 'IO::Compress::Base::Common'=> '2.068', + 'IO::Compress::Bzip2' => '2.068', + 'IO::Compress::Deflate' => '2.068', + 'IO::Compress::Gzip' => '2.068', + 'IO::Compress::Gzip::Constants'=> '2.068', + 'IO::Compress::RawDeflate'=> '2.068', + 'IO::Compress::Zip' => '2.068', + 'IO::Compress::Zip::Constants'=> '2.068', + 'IO::Compress::Zlib::Constants'=> '2.068', + 'IO::Compress::Zlib::Extra'=> '2.068', + 'IO::Socket::IP' => '0.36', + 'IO::Uncompress::Adapter::Bunzip2'=> '2.068', + 'IO::Uncompress::Adapter::Identity'=> '2.068', + 'IO::Uncompress::Adapter::Inflate'=> '2.068', + 'IO::Uncompress::AnyInflate'=> '2.068', + 'IO::Uncompress::AnyUncompress'=> '2.068', + 'IO::Uncompress::Base' => '2.068', + 'IO::Uncompress::Bunzip2'=> '2.068', + 'IO::Uncompress::Gunzip'=> '2.068', + 'IO::Uncompress::Inflate'=> '2.068', + 'IO::Uncompress::RawInflate'=> '2.068', + 'IO::Uncompress::Unzip' => '2.068', + 'MIME::Base64' => '3.15', + 'Module::CoreList' => '5.20150220', + 'Module::CoreList::TieHashDelta'=> '5.20150220', + 'Module::CoreList::Utils'=> '5.20150220', + 'Module::Load::Conditional'=> '0.64', + 'Module::Metadata' => '1.000026', + 'Net::Cmd' => '3.05', + 'Net::Config' => '3.05', + 'Net::Domain' => '3.05', + 'Net::FTP' => '3.05', + 'Net::FTP::A' => '3.05', + 'Net::FTP::E' => '3.05', + 'Net::FTP::I' => '3.05', + 'Net::FTP::L' => '3.05', + 'Net::FTP::dataconn' => '3.05', + 'Net::NNTP' => '3.05', + 'Net::Netrc' => '3.05', + 'Net::POP3' => '3.05', + 'Net::SMTP' => '3.05', + 'Net::Time' => '3.05', + 'Opcode' => '1.31', + 'POSIX' => '1.49', + 'PerlIO::encoding' => '0.21', + 'Pod::Simple' => '3.29', + 'Pod::Simple::BlackBox' => '3.29', + 'Pod::Simple::Checker' => '3.29', + 'Pod::Simple::Debug' => '3.29', + 'Pod::Simple::DumpAsText'=> '3.29', + 'Pod::Simple::DumpAsXML'=> '3.29', + 'Pod::Simple::HTML' => '3.29', + 'Pod::Simple::HTMLBatch'=> '3.29', + 'Pod::Simple::LinkSection'=> '3.29', + 'Pod::Simple::Methody' => '3.29', + 'Pod::Simple::Progress' => '3.29', + 'Pod::Simple::PullParser'=> '3.29', + 'Pod::Simple::PullParserEndToken'=> '3.29', + 'Pod::Simple::PullParserStartToken'=> '3.29', + 'Pod::Simple::PullParserTextToken'=> '3.29', + 'Pod::Simple::PullParserToken'=> '3.29', + 'Pod::Simple::RTF' => '3.29', + 'Pod::Simple::Search' => '3.29', + 'Pod::Simple::SimpleTree'=> '3.29', + 'Pod::Simple::Text' => '3.29', + 'Pod::Simple::TextContent'=> '3.29', + 'Pod::Simple::TiedOutFH'=> '3.29', + 'Pod::Simple::Transcode'=> '3.29', + 'Pod::Simple::TranscodeDumb'=> '3.29', + 'Pod::Simple::TranscodeSmart'=> '3.29', + 'Pod::Simple::XHTML' => '3.29', + 'Pod::Simple::XMLOutStream'=> '3.29', + 'SDBM_File' => '1.13', + 'Safe' => '2.39', + 'TAP::Base' => '3.35', + 'TAP::Formatter::Base' => '3.35', + 'TAP::Formatter::Color' => '3.35', + 'TAP::Formatter::Console'=> '3.35', + 'TAP::Formatter::Console::ParallelSession'=> '3.35', + 'TAP::Formatter::Console::Session'=> '3.35', + 'TAP::Formatter::File' => '3.35', + 'TAP::Formatter::File::Session'=> '3.35', + 'TAP::Formatter::Session'=> '3.35', + 'TAP::Harness' => '3.35', + 'TAP::Harness::Env' => '3.35', + 'TAP::Object' => '3.35', + 'TAP::Parser' => '3.35', + 'TAP::Parser::Aggregator'=> '3.35', + 'TAP::Parser::Grammar' => '3.35', + 'TAP::Parser::Iterator' => '3.35', + 'TAP::Parser::Iterator::Array'=> '3.35', + 'TAP::Parser::Iterator::Process'=> '3.35', + 'TAP::Parser::Iterator::Stream'=> '3.35', + 'TAP::Parser::IteratorFactory'=> '3.35', + 'TAP::Parser::Multiplexer'=> '3.35', + 'TAP::Parser::Result' => '3.35', + 'TAP::Parser::Result::Bailout'=> '3.35', + 'TAP::Parser::Result::Comment'=> '3.35', + 'TAP::Parser::Result::Plan'=> '3.35', + 'TAP::Parser::Result::Pragma'=> '3.35', + 'TAP::Parser::Result::Test'=> '3.35', + 'TAP::Parser::Result::Unknown'=> '3.35', + 'TAP::Parser::Result::Version'=> '3.35', + 'TAP::Parser::Result::YAML'=> '3.35', + 'TAP::Parser::ResultFactory'=> '3.35', + 'TAP::Parser::Scheduler'=> '3.35', + 'TAP::Parser::Scheduler::Job'=> '3.35', + 'TAP::Parser::Scheduler::Spinner'=> '3.35', + 'TAP::Parser::Source' => '3.35', + 'TAP::Parser::SourceHandler'=> '3.35', + 'TAP::Parser::SourceHandler::Executable'=> '3.35', + 'TAP::Parser::SourceHandler::File'=> '3.35', + 'TAP::Parser::SourceHandler::Handle'=> '3.35', + 'TAP::Parser::SourceHandler::Perl'=> '3.35', + 'TAP::Parser::SourceHandler::RawTAP'=> '3.35', + 'TAP::Parser::YAMLish::Reader'=> '3.35', + 'TAP::Parser::YAMLish::Writer'=> '3.35', + 'Test::Builder' => '1.301001_097', + 'Test::Builder::Module' => '1.301001_097', + 'Test::Builder::Tester' => '1.301001_097', + 'Test::Builder::Tester::Color'=> '1.301001_097', + 'Test::Harness' => '3.35', + 'Test::More' => '1.301001_097', + 'Test::Simple' => '1.301001_097', + 'Test::Stream' => '1.301001_097', + 'Test::Stream::Block' => undef, + 'Test::Tester' => '1.301001_097', + 'Test::Tester::CaptureRunner'=> undef, + 'Test::Tester::Delegate'=> undef, + 'Test::use::ok' => '1.301001_097', + 'Unicode::Collate' => '1.10', + 'Unicode::Collate::CJK::Big5'=> '1.10', + 'Unicode::Collate::CJK::GB2312'=> '1.10', + 'Unicode::Collate::CJK::JISX0208'=> '1.10', + 'Unicode::Collate::CJK::Korean'=> '1.10', + 'Unicode::Collate::CJK::Pinyin'=> '1.10', + 'Unicode::Collate::CJK::Stroke'=> '1.10', + 'Unicode::Collate::CJK::Zhuyin'=> '1.10', + 'Unicode::Collate::Locale'=> '1.10', + 'VMS::DCLsym' => '1.06', + 'XS::APItest' => '0.70', + 'arybase' => '0.10', + 'attributes' => '0.25', + 'autodie' => '2.26', + 'autodie::Scope::Guard' => '2.26', + 'autodie::Scope::GuardStack'=> '2.26', + 'autodie::ScopeUtil' => '2.26', + 'autodie::exception' => '2.26', + 'autodie::exception::system'=> '2.26', + 'autodie::hints' => '2.26', + 'autodie::skip' => '2.26', + 'ok' => '1.301001_097', + 're' => '0.30', + 'warnings' => '1.30', + }, + removed => { + } + }, + 5.020002 => { + delta_from => 5.020001, + changed => { + '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::Mirrors' => '1.9601', + 'Config' => '5.020002', + 'Cwd' => '3.48_01', + 'Data::Dumper' => '2.151_01', + 'Errno' => '1.20_05', + 'File::Spec' => '3.48_01', + 'File::Spec::Cygwin' => '3.48_01', + 'File::Spec::Epoc' => '3.48_01', + 'File::Spec::Functions' => '3.48_01', + 'File::Spec::Mac' => '3.48_01', + 'File::Spec::OS2' => '3.48_01', + 'File::Spec::Unix' => '3.48_01', + 'File::Spec::VMS' => '3.48_01', + 'File::Spec::Win32' => '3.48_01', + 'IO::Socket' => '1.38', + 'Module::CoreList' => '5.20150214', + 'Module::CoreList::TieHashDelta'=> '5.20150214', + 'Module::CoreList::Utils'=> '5.20150214', + 'PerlIO::scalar' => '0.18_01', + 'Pod::PlainText' => '2.07', + 'Storable' => '2.49_01', + 'VMS::DCLsym' => '1.05_01', + 'VMS::Stdio' => '2.41', + 'attributes' => '0.23', + 'feature' => '1.36_01', + }, + removed => { + } + }, ); sub is_core @@ -10396,6 +11308,20 @@ for my $version (sort { $a <=> $b } keys %delta) { removed => { } }, + 5.018003 => { + delta_from => 5.018, + changed => { + }, + removed => { + } + }, + 5.018004 => { + delta_from => 5.018, + changed => { + }, + removed => { + } + }, 5.019 => { delta_from => 5.018, @@ -10613,6 +11539,48 @@ for my $version (sort { $a <=> $b } keys %delta) { removed => { } }, + 5.021004 => { + delta_from => 5.021003, + changed => { + }, + removed => { + } + }, + 5.021005 => { + delta_from => 5.021004, + changed => { + }, + removed => { + } + }, + 5.021006 => { + delta_from => 5.021005, + changed => { + }, + removed => { + } + }, + 5.021007 => { + delta_from => 5.021006, + changed => { + }, + removed => { + } + }, + 5.021008 => { + delta_from => 5.021007, + changed => { + }, + removed => { + } + }, + 5.020002 => { + delta_from => 5.020001, + changed => { + }, + removed => { + } + }, ); for my $version (sort { $a <=> $b } keys %deprecated) { @@ -11400,8 +12368,8 @@ for my $version (sort { $a <=> $b } keys %deprecated) { 'Test' => undef, 'Test::Builder' => 'http://github.com/Test-More/test-more/issues/', 'Test::Builder::Module' => 'http://github.com/Test-More/test-more/issues/', - 'Test::Builder::Tester' => 'http://github.com/schwern/test-more/issues', - 'Test::Builder::Tester::Color'=> 'http://github.com/schwern/test-more/issues', + 'Test::Builder::Tester' => 'http://github.com/Test-More/test-more/issues/', + 'Test::Builder::Tester::Color'=> 'http://github.com/Test-More/test-more/issues/', 'Test::Harness' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness', 'Test::More' => 'http://github.com/Test-More/test-more/issues/', 'Test::Simple' => 'http://github.com/Test-More/test-more/issues/', @@ -11435,12 +12403,12 @@ for my $version (sort { $a <=> $b } keys %deprecated) { 'encoding' => undef, 'encoding::warnings' => undef, 'experimental' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=experimental', - 'inc::latest' => undef, + 'inc::latest' => 'https://github.com/dagolden/inc-latest/issues', 'parent' => undef, 'perlfaq' => 'https://github.com/perl-doc-cats/perlfaq/issues', - 'version' => undef, - 'version::regex' => undef, - 'version::vpp' => undef, + 'version' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=version', + 'version::regex' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=version', + 'version::vpp' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=version', ); # Create aliases with trailing zeros for $] use diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod index f97fd53276c..edc00ec9feb 100644 --- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod +++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod @@ -220,18 +220,12 @@ http://rt.cpan.org/Public/Dist/Display.html?Name=$ModuleName =head1 CAVEATS Module::CoreList currently covers the 5.000, 5.001, 5.002, 5.003_07, -5.004, 5.004_05, 5.005, 5.005_03, 5.005_04, 5.6.0, 5.6.1, 5.6.2, 5.7.3, -5.8.0, 5.8.1, 5.8.2, 5.8.3, 5.8.4, 5.8.5, 5.8.6, 5.8.7, 5.8.8, 5.8.9, -5.9.0, 5.9.1, 5.9.2, 5.9.3, 5.9.4, 5.9.5, 5.10.0, 5.10.1, 5.11.0, 5.11.1, -5.11.2, 5.11.3, 5.11.4, 5.11.5, 5.12.0, 5.12.1, 5.12.2, 5.12.3, 5.12.4, -5.12.5, 5.13.0, 5.13.1, 5.13.2, 5.13.3, 5.13.4, 5.13.5, 5.13.6, 5.13.7, -5.13.8, 5.13.9, 5.13.10, 5.13.11, 5.14.0, 5.14.1, 5.14.2 5.14.3, 5.14.4, -5.15.0, 5.15.1, 5.15.2, 5.15.3, 5.15.4, 5.15.5, 5.15.6, 5.15.7, 5.15.8, -5.15.9, 5.16.0, 5.16.1, 5.16.2, 5.16.3, 5.17.0, 5.17.1, 5.17.2, 5.17.3, -5.17.4, 5.17.5, 5.17.6, 5.17.7, 5.17.8, 5.17.9, 5.17.10, 5.17.11, 5.18.0, -5.19.0, 5.19.1, 5.19.2, 5.19.3, 5.19.4, 5.19.5, 5.19.6, 5.19.7, 5.19.8, -5.19.9, 5.19.10, 5.19.11, 5.20.0, 5.21.0, 5.21.1, 5.21.2, 5.21.3 and -5.20.1 releases of perl. +5.004, 5.004_05, 5.005, 5.005_03, 5.005_04 and 5.7.3 releases of perl. + +All stable releases of perl since 5.6.0 are covered. + +All development releases of perl since 5.9.0 are covered. + =head1 HISTORY diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm index 216836f40f6..eb769f3070a 100644 --- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm +++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm @@ -3,7 +3,7 @@ package Module::CoreList::TieHashDelta; use strict; use vars qw($VERSION); -$VERSION = '5.020001'; +$VERSION = '5.20150214'; sub TIEHASH { my ($class, $changed, $removed, $parent) = @_; diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm index 32784907828..b9fde3e27a2 100644 --- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm +++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm @@ -6,7 +6,7 @@ use vars qw[$VERSION %utilities]; use Module::CoreList; use Module::CoreList::TieHashDelta; -$VERSION = '5.020001'; +$VERSION = '5.20150214'; sub utilities { my $perl = shift; @@ -822,6 +822,20 @@ my %delta = ( removed => { } }, + 5.018003 => { + delta_from => 5.018000, + changed => { + }, + removed => { + } + }, + 5.018004 => { + delta_from => 5.018000, + changed => { + }, + removed => { + } + }, 5.019000 => { delta_from => 5.018000, changed => { @@ -957,6 +971,48 @@ my %delta = ( removed => { } }, + 5.021004 => { + delta_from => 5.021003, + changed => { + }, + removed => { + } + }, + 5.021005 => { + delta_from => 5.021004, + changed => { + }, + removed => { + } + }, + 5.021006 => { + delta_from => 5.021005, + changed => { + }, + removed => { + } + }, + 5.021007 => { + delta_from => 5.021006, + changed => { + }, + removed => { + } + }, + 5.021008 => { + delta_from => 5.021007, + changed => { + }, + removed => { + } + }, + 5.020002 => { + delta_from => 5.020001, + changed => { + }, + removed => { + } + }, ); for my $version (sort { $a <=> $b } keys %delta) { diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t b/gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t index d8e93bff2c6..c129584a07f 100755 --- a/gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t +++ b/gnu/usr.bin/perl/dist/Module-CoreList/t/corelist.t @@ -1,7 +1,7 @@ #!perl -w use strict; use Module::CoreList; -use Test::More tests => 25; +use Test::More tests => 29; BEGIN { require_ok('Module::CoreList'); } @@ -89,3 +89,20 @@ is(Module::CoreList->removed_from('CPANPLUS::inc'), 5.010001, is(Module::CoreList::removed_from('CPANPLUS::inc'), 5.010001, "CPANPLUS::inc was removed from 5.010001"); +{ + my $warnings_count = 0; + local $SIG{__WARN__} = sub { $warnings_count++ }; + local $^W = 1; + + ok(exists $Module::CoreList::version{5}{strict}, + "strict was in 5"); + + ok(!defined $Module::CoreList::version{5}{strict}, + "strict had no version in 5"); + + is(Module::CoreList::first_release('strict', 1.01), 5.00405, + "strict reached 1.01 with 5.00405"); + + cmp_ok($warnings_count, '==', 0, + "an undefined version does not produce warnings rt#123556"); +} diff --git a/gnu/usr.bin/perl/dist/PathTools/Cwd.pm b/gnu/usr.bin/perl/dist/PathTools/Cwd.pm index 01393f3369d..210ea323da6 100644 --- a/gnu/usr.bin/perl/dist/PathTools/Cwd.pm +++ b/gnu/usr.bin/perl/dist/PathTools/Cwd.pm @@ -171,7 +171,7 @@ use strict; use Exporter; use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); -$VERSION = '3.48'; +$VERSION = '3.48_01'; my $xs_version = $VERSION; $VERSION =~ tr/_//; diff --git a/gnu/usr.bin/perl/dist/PathTools/Cwd.xs b/gnu/usr.bin/perl/dist/PathTools/Cwd.xs index 4ddbdac4bb3..1f174bf451d 100644 --- a/gnu/usr.bin/perl/dist/PathTools/Cwd.xs +++ b/gnu/usr.bin/perl/dist/PathTools/Cwd.xs @@ -197,7 +197,7 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN]) symlink[slen] = '/'; symlink[slen + 1] = 0; } - left_len = my_strlcat(symlink, left, sizeof(left)); + left_len = my_strlcat(symlink, left, sizeof(symlink)); if (left_len >= sizeof(left)) { errno = ENAMETOOLONG; return (NULL); diff --git a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec.pm b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec.pm index bf0a327953d..01a616eaedc 100644 --- a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec.pm +++ b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec.pm @@ -3,7 +3,7 @@ package File::Spec; use strict; use vars qw(@ISA $VERSION); -$VERSION = '3.48'; +$VERSION = '3.48_01'; $VERSION =~ tr/_//; my %module = (MacOS => 'Mac', diff --git a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Cygwin.pm b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Cygwin.pm index a791a2ab92b..b9e3703bf46 100644 --- a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Cygwin.pm +++ b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Cygwin.pm @@ -4,7 +4,7 @@ use strict; use vars qw(@ISA $VERSION); require File::Spec::Unix; -$VERSION = '3.48'; +$VERSION = '3.48_01'; $VERSION =~ tr/_//; @ISA = qw(File::Spec::Unix); diff --git a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Epoc.pm b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Epoc.pm index a7859c50497..e5928b83558 100644 --- a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Epoc.pm +++ b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Epoc.pm @@ -3,7 +3,7 @@ package File::Spec::Epoc; use strict; use vars qw($VERSION @ISA); -$VERSION = '3.48'; +$VERSION = '3.48_01'; $VERSION =~ tr/_//; require File::Spec::Unix; diff --git a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Functions.pm b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Functions.pm index 0170843a8aa..451f5bd735f 100644 --- a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Functions.pm +++ b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Functions.pm @@ -5,7 +5,7 @@ use strict; use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION); -$VERSION = '3.48'; +$VERSION = '3.48_01'; $VERSION =~ tr/_//; require Exporter; diff --git a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Mac.pm b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Mac.pm index a8dc2df9423..b0aacecf5a4 100644 --- a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Mac.pm +++ b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Mac.pm @@ -4,7 +4,7 @@ use strict; use vars qw(@ISA $VERSION); require File::Spec::Unix; -$VERSION = '3.48'; +$VERSION = '3.48_01'; $VERSION =~ tr/_//; @ISA = qw(File::Spec::Unix); diff --git a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/OS2.pm b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/OS2.pm index df458c9211a..7de0f891cb1 100644 --- a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/OS2.pm +++ b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/OS2.pm @@ -4,7 +4,7 @@ use strict; use vars qw(@ISA $VERSION); require File::Spec::Unix; -$VERSION = '3.48'; +$VERSION = '3.48_01'; $VERSION =~ tr/_//; @ISA = qw(File::Spec::Unix); diff --git a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Unix.pm b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Unix.pm index e4eddbb0180..c813cc170df 100644 --- a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Unix.pm +++ b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Unix.pm @@ -3,7 +3,7 @@ package File::Spec::Unix; use strict; use vars qw($VERSION); -$VERSION = '3.48'; +$VERSION = '3.48_01'; my $xs_version = $VERSION; $VERSION =~ tr/_//; diff --git a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/VMS.pm b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/VMS.pm index b045e270caa..3072fabb6ab 100644 --- a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/VMS.pm +++ b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/VMS.pm @@ -4,7 +4,7 @@ use strict; use vars qw(@ISA $VERSION); require File::Spec::Unix; -$VERSION = '3.48'; +$VERSION = '3.48_01'; $VERSION =~ tr/_//; @ISA = qw(File::Spec::Unix); diff --git a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Win32.pm b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Win32.pm index 352ec990db2..6c063b5fdb6 100644 --- a/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Win32.pm +++ b/gnu/usr.bin/perl/dist/PathTools/lib/File/Spec/Win32.pm @@ -5,7 +5,7 @@ use strict; use vars qw(@ISA $VERSION); require File::Spec::Unix; -$VERSION = '3.48'; +$VERSION = '3.48_01'; $VERSION =~ tr/_//; @ISA = qw(File::Spec::Unix); diff --git a/gnu/usr.bin/perl/dist/Storable/Storable.pm b/gnu/usr.bin/perl/dist/Storable/Storable.pm index f74c867d4e8..7d8a01198d5 100644 --- a/gnu/usr.bin/perl/dist/Storable/Storable.pm +++ b/gnu/usr.bin/perl/dist/Storable/Storable.pm @@ -22,7 +22,7 @@ package Storable; @ISA = qw(Exporter); use vars qw($canonical $forgive_me $VERSION); -$VERSION = '2.49'; +$VERSION = '2.49_01'; BEGIN { if (eval { local $SIG{__DIE__}; require Log::Agent; 1 }) { @@ -1086,8 +1086,8 @@ deal with them. The store functions will C if they run into such references unless you set C<$Storable::forgive_me> to some C value. In that -case, the fatal message is turned in a warning and some -meaningless string is stored instead. +case, the fatal message is converted to a warning and some meaningless +string is stored instead. Setting C<$Storable::canonical> may not yield frozen strings that compare equal due to possible stringification of numbers. When the diff --git a/gnu/usr.bin/perl/dist/lib/t/01lib.t b/gnu/usr.bin/perl/dist/lib/t/01lib.t index f58fce5d9eb..366ab47fffa 100755 --- a/gnu/usr.bin/perl/dist/lib/t/01lib.t +++ b/gnu/usr.bin/perl/dist/lib/t/01lib.t @@ -38,6 +38,9 @@ MODULE } END { + # rmtree() can indirectly load the XS object for Win32, ensure + # we have our original sane @INC + local @INC = @OrigINC; # cleanup the auto/ directory we created. rmtree([$lib_dir[0]]); } diff --git a/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL b/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL index 55ad01a0c4f..cfab893b495 100644 --- a/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL +++ b/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL @@ -2,7 +2,7 @@ use ExtUtils::MakeMaker; use Config; use strict; -our $VERSION = "1.20_03"; +our $VERSION = "1.20_05"; my %err = (); @@ -249,9 +249,9 @@ sub write_errno_pm { my($name,$expr); next unless ($name, $expr) = /"(.*?)"\s*\[\s*\[\s*(.*?)\s*\]\s*\]/; next if $name eq $expr; - $expr =~ s/\(?\(\s*[a-z_]\w*\s*\)([^\)]*)\)?/$1/i; # ((type)0xcafebabe) at alia - $expr =~ s/((?:0x)?[0-9a-fA-F]+)[luLU]+\b/$1/g; # 2147483647L et alia - next if $expr =~ m/^[a-zA-Z]+$/; # skip some Win32 functions + $expr =~ s/\(?\(\s*[a-z_]\w*\s*\)\(?([^\)]+)\)?\)?/$1/i; # ((type)0xcafebabe) at alia + $expr =~ s/\b((?:0x)?[0-9a-f]+)[LU]+\b/$1/gi; # 2147483647L et alia + next if $expr =~ m/\b[a-z_]\w*\b/i; # skip expressions containing function names etc if($expr =~ m/^0[xX]/) { $err{$name} = hex $expr; } diff --git a/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.pm b/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.pm index 7581f84d6e6..7e93f6da562 100644 --- a/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.pm +++ b/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.pm @@ -1,5 +1,5 @@ package PerlIO::scalar; -our $VERSION = '0.18'; +our $VERSION = '0.18_01'; require XSLoader; XSLoader::load(); 1; diff --git a/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.xs b/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.xs index 8d217c95b55..5c5eccf812a 100644 --- a/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.xs +++ b/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.xs @@ -103,28 +103,33 @@ IV PerlIOScalar_seek(pTHX_ PerlIO * f, Off_t offset, int whence) { PerlIOScalar *s = PerlIOSelf(f, PerlIOScalar); + Off_t new_posn; switch (whence) { case SEEK_SET: - s->posn = offset; + new_posn = offset; break; case SEEK_CUR: - s->posn = offset + s->posn; + new_posn = offset + s->posn; break; case SEEK_END: { STRLEN oldcur; (void)SvPV(s->var, oldcur); - s->posn = offset + oldcur; + new_posn = offset + oldcur; break; } + default: + SETERRNO(EINVAL, SS_IVCHAN); + return -1; } - if (s->posn < 0) { + if (new_posn < 0) { if (ckWARN(WARN_LAYER)) Perl_warner(aTHX_ packWARN(WARN_LAYER), "Offset outside string"); SETERRNO(EINVAL, SS_IVCHAN); return -1; } + s->posn = new_posn; return 0; } @@ -151,7 +156,7 @@ PerlIOScalar_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) SV *sv = s->var; char *p; STRLEN len; - I32 got; + STRLEN got; p = SvPV(sv, len); if (SvUTF8(sv)) { if (sv_utf8_downgrade(sv, TRUE)) { @@ -164,9 +169,15 @@ PerlIOScalar_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) return -1; } } - got = len - (STRLEN)(s->posn); - if (got <= 0) + /* I assume that Off_t is at least as large as len (which + * seems safe) and that the size of the buffer in our SV is + * always less than half the size of the address space + */ + assert(sizeof(Off_t) >= sizeof(len)); + assert((Off_t)len >= 0); + if ((Off_t)len <= s->posn) return 0; + got = len - (STRLEN)(s->posn); if ((STRLEN)got > (STRLEN)count) got = (STRLEN)count; Copy(p + (STRLEN)(s->posn), vbuf, got, STDCHAR); @@ -265,7 +276,7 @@ PerlIOScalar_get_cnt(pTHX_ PerlIO * f) PerlIOScalar *s = PerlIOSelf(f, PerlIOScalar); STRLEN len; (void)SvPV(s->var,len); - if (len > (STRLEN) s->posn) + if ((Off_t)len > s->posn) return len - (STRLEN)s->posn; else return 0; diff --git a/gnu/usr.bin/perl/ext/PerlIO-scalar/t/scalar.t b/gnu/usr.bin/perl/ext/PerlIO-scalar/t/scalar.t index 9bc1abe16cf..f4cfbefaf96 100755 --- a/gnu/usr.bin/perl/ext/PerlIO-scalar/t/scalar.t +++ b/gnu/usr.bin/perl/ext/PerlIO-scalar/t/scalar.t @@ -16,7 +16,7 @@ use Fcntl qw(SEEK_SET SEEK_CUR SEEK_END); # Not 0, 1, 2 everywhere. $| = 1; -use Test::More tests => 114; +use Test::More tests => 120; my $fh; my $var = "aaa\n"; @@ -491,3 +491,22 @@ my $byte_warning = "Strings with code points over 0xFF may not be mapped into in print $refh "boo\n"; is $x, $as_string."boo\n", 'string gets appended to ref'; } + +SKIP: +{ # [perl #123443] + skip "Can't seek over 4GB with a small off_t", 4 + if $Config::Config{lseeksize} < 8; + my $buf0 = "hello"; + open my $fh, "<", \$buf0 or die $!; + ok(seek($fh, 2**32, SEEK_SET), "seek to a large position"); + is(read($fh, my $tmp, 1), 0, "read from a large offset"); + is($tmp, "", "should have read nothing"); + ok(eof($fh), "fh should be eof"); +} + +{ + my $buf0 = "hello"; + open my $fh, "<", \$buf0 or die $!; + ok(!seek($fh, -10, SEEK_CUR), "seek to negative position"); + is(tell($fh), 0, "shouldn't change the position"); +} diff --git a/gnu/usr.bin/perl/ext/VMS-DCLsym/DCLsym.pm b/gnu/usr.bin/perl/ext/VMS-DCLsym/DCLsym.pm index 65482234356..f299c43b58b 100644 --- a/gnu/usr.bin/perl/ext/VMS-DCLsym/DCLsym.pm +++ b/gnu/usr.bin/perl/ext/VMS-DCLsym/DCLsym.pm @@ -7,7 +7,7 @@ use strict; # Package globals @ISA = ( 'DynaLoader' ); -$VERSION = '1.05'; +$VERSION = '1.05_01'; my(%Locsyms) = ( ':ID' => 'LOCAL' ); my(%Gblsyms) = ( ':ID' => 'GLOBAL'); my $DoCache = 1; @@ -265,7 +265,7 @@ Charles Bailey bailey@newman.upenn.edu =head1 VERSION -1.05 12-Feb-2011 +1.05_01 16-Jun-2013 =head1 BUGS diff --git a/gnu/usr.bin/perl/ext/VMS-Stdio/Stdio.pm b/gnu/usr.bin/perl/ext/VMS-Stdio/Stdio.pm index 1b8a4f7e2da..4d05994279e 100644 --- a/gnu/usr.bin/perl/ext/VMS-Stdio/Stdio.pm +++ b/gnu/usr.bin/perl/ext/VMS-Stdio/Stdio.pm @@ -13,7 +13,7 @@ use Carp '&croak'; use DynaLoader (); use Exporter (); -$VERSION = '2.4'; +$VERSION = '2.41'; @ISA = qw( Exporter DynaLoader IO::File ); @EXPORT = qw( &O_APPEND &O_CREAT &O_EXCL &O_NDELAY &O_NOWAIT &O_RDONLY &O_RDWR &O_TRUNC &O_WRONLY ); diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/clone-with-stack.t b/gnu/usr.bin/perl/ext/XS-APItest/t/clone-with-stack.t index 7a0cd294790..3238e9f3c99 100644 --- a/gnu/usr.bin/perl/ext/XS-APItest/t/clone-with-stack.t +++ b/gnu/usr.bin/perl/ext/XS-APItest/t/clone-with-stack.t @@ -17,7 +17,7 @@ if (not $Config{'useithreads'}) { skip_all("clone_with_stack requires threads"); } -plan(4); +plan(5); fresh_perl_is( <<'----', <<'====', undef, "minimal clone_with_stack" ); use XS::APItest; @@ -65,3 +65,26 @@ X-Y-0:1:2:3:4-Z ==== } + +{ + fresh_perl_is( <<'----', <<'====', undef, "with localised stuff" ); +use XS::APItest; +$s = "outer"; +$a[0] = "anterior"; +$h{k} = "hale"; +{ + local $s = "inner"; + local $a[0] = 'posterior'; + local $h{k} = "halt"; + clone_with_stack(); +} +print "scl: $s\n"; +print "ary: $a[0]\n"; +print "hsh: $h{k}\n"; +---- +scl: outer +ary: anterior +hsh: hale +==== + +} diff --git a/gnu/usr.bin/perl/ext/attributes/attributes.pm b/gnu/usr.bin/perl/ext/attributes/attributes.pm index 7c3c0b0247d..ebca2146085 100644 --- a/gnu/usr.bin/perl/ext/attributes/attributes.pm +++ b/gnu/usr.bin/perl/ext/attributes/attributes.pm @@ -1,6 +1,6 @@ package attributes; -our $VERSION = 0.22; +our $VERSION = 0.23; @EXPORT_OK = qw(get reftype); @EXPORT = (); diff --git a/gnu/usr.bin/perl/ext/attributes/attributes.xs b/gnu/usr.bin/perl/ext/attributes/attributes.xs index dbb644d066e..6b36812b13d 100644 --- a/gnu/usr.bin/perl/ext/attributes/attributes.xs +++ b/gnu/usr.bin/perl/ext/attributes/attributes.xs @@ -97,7 +97,7 @@ modify_SV_attributes(pTHX_ SV *sv, SV **retlist, SV **attrlist, int numattrs) } break; default: - if (memEQs(name, 6, "shared")) { + if (memEQs(name, len, "shared")) { if (negated) Perl_croak(aTHX_ "A variable may not be unshared"); SvSHARE(sv); diff --git a/gnu/usr.bin/perl/hints/catamount.sh b/gnu/usr.bin/perl/hints/catamount.sh index b5909032a66..572a6a79bbf 100644 --- a/gnu/usr.bin/perl/hints/catamount.sh +++ b/gnu/usr.bin/perl/hints/catamount.sh @@ -31,11 +31,11 @@ # mkdir -p /opt/perl-catamount # mkdir -p /opt/perl-catamount/include # mkdir -p /opt/perl-catamount/lib -# mkdir -p /opt/perl-catamount/lib/perl5/5.20.1 +# mkdir -p /opt/perl-catamount/lib/perl5/5.20.2 # 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.1 +# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.20.2 # cp miniperl perl run.sh cc.sh /opt/perl-catamount/lib # # With the headers and the libperl.a you can embed Perl to your Catamount diff --git a/gnu/usr.bin/perl/hints/darwin.sh b/gnu/usr.bin/perl/hints/darwin.sh index 7c3f8184191..276695ad602 100644 --- a/gnu/usr.bin/perl/hints/darwin.sh +++ b/gnu/usr.bin/perl/hints/darwin.sh @@ -168,7 +168,14 @@ esac # Allow the user to override ld, but modify it as necessary below case "$ld" in - '') ld='cc';; + '') case "$cc" in + # If the cc is explicitly something else than cc (or empty), + # set the ld to be that explicitly something else. Conversely, + # if the cc is 'cc' (or empty), set the ld to be 'cc'. + cc|'') ld='cc';; + *) ld="$cc" ;; + esac + ;; esac # Perl bundles do not expect two-level namespace, added in Darwin 1.4. diff --git a/gnu/usr.bin/perl/intrpvar.h b/gnu/usr.bin/perl/intrpvar.h index e29a30afcf3..08c4a382224 100644 --- a/gnu/usr.bin/perl/intrpvar.h +++ b/gnu/usr.bin/perl/intrpvar.h @@ -736,7 +736,7 @@ PERLVAR(I, debug_pad, struct perl_debug_pad) /* always needed because of the re /* Hook for File::Glob */ PERLVARI(I, globhook, globhook_t, NULL) -/* The last unconditional member of the interpreter structure when 5.20.1 was +/* The last unconditional member of the interpreter structure when 5.20.2 was released. The offset of the end of this is baked into a global variable in any shared perl library which will allow a sanity test in future perl releases. */ diff --git a/gnu/usr.bin/perl/lib/feature.pm b/gnu/usr.bin/perl/lib/feature.pm index 222cdfd8b81..dfcff96cc08 100644 --- a/gnu/usr.bin/perl/lib/feature.pm +++ b/gnu/usr.bin/perl/lib/feature.pm @@ -5,7 +5,7 @@ package feature; -our $VERSION = '1.36'; +our $VERSION = '1.36_01'; our %feature = ( fc => 'feature_fc', @@ -246,6 +246,27 @@ and C syntax. See L for details. This feature is available from Perl 5.18 onwards. +=head2 The 'postderef' and 'postderef_qq' features + +B: This feature is still experimental and the implementation may +change in future versions of Perl. For this reason, Perl will +warn when you use the feature, unless you have explicitly disabled the +warning: + + no warnings "experimental::postderef"; + +The 'postderef' feature allows the use of L. For example, it will make the +following two statements equivalent: + + my @x = @{ $h->{a} }; + my @x = $h->{a}->@*; + +The 'postderef_qq' feature extends this, for array and scalar dereference, to +working inside of double-quotish interpolations. + +This feature is available from Perl 5.20 onwards. + =head2 The 'signatures' feature B: This feature is still experimental and the implementation may diff --git a/gnu/usr.bin/perl/make_ext.pl b/gnu/usr.bin/perl/make_ext.pl index b433762cced..e647aa9c7f4 100644 --- a/gnu/usr.bin/perl/make_ext.pl +++ b/gnu/usr.bin/perl/make_ext.pl @@ -443,8 +443,8 @@ EOM # the Makefile.PL. Altering the atime and mtime backwards by 4 # seconds seems to resolve the issue. eval { - my $ftime = time - 4; - utime $ftime, $ftime, 'Makefile.PL'; + my $ftime = (stat('Makefile.PL'))[9] - 4; + utime $ftime, $ftime, 'Makefile.PL'; }; } elsif ($mname =~ /\A(?:Carp |ExtUtils::CBuilder @@ -715,7 +715,7 @@ sub just_pm_to_blib { # (which it has to deal with, as cpan/foo/bar creates # lib/auto/foo/bar, but the EU::MM rule will only # rmdir lib/auto/foo/bar, leaving lib/auto/foo - _unlink("../../$_") + _unlink($_) foreach sort values %pm; } } diff --git a/gnu/usr.bin/perl/pad.c b/gnu/usr.bin/perl/pad.c index 31282d157dc..fed28922ed1 100644 --- a/gnu/usr.bin/perl/pad.c +++ b/gnu/usr.bin/perl/pad.c @@ -56,7 +56,8 @@ at that depth of recursion into the CV. The 0th slot of a frame AV is an AV which is @_. Other entries are storage for variables and op targets. Iterating over the PADNAMELIST iterates over all possible pad -items. Pad slots for targets (SVs_PADTMP) and GVs end up having &PL_sv_no +items. Pad slots for targets (SVs_PADTMP) +and GVs end up having &PL_sv_undef "names", while slots for constants have &PL_sv_no "names" (see pad_alloc()). That &PL_sv_no is used is an implementation detail subject to change. To test for it, use C. diff --git a/gnu/usr.bin/perl/pad.h b/gnu/usr.bin/perl/pad.h index 6269bdc366a..90517c65df8 100644 --- a/gnu/usr.bin/perl/pad.h +++ b/gnu/usr.bin/perl/pad.h @@ -242,7 +242,7 @@ for C. =for apidoc m|SV *|PAD_SETSV |PADOFFSET po|SV* sv Set the slot at offset C in the current pad to C -=for apidoc m|void|PAD_SV |PADOFFSET po +=for apidoc m|SV *|PAD_SV |PADOFFSET po Get the value at offset C in the current pad =for apidoc m|SV *|PAD_SVl |PADOFFSET po diff --git a/gnu/usr.bin/perl/pod/perl5184delta.pod b/gnu/usr.bin/perl/pod/perl5184delta.pod new file mode 100644 index 00000000000..3f1b3a37e5c --- /dev/null +++ b/gnu/usr.bin/perl/pod/perl5184delta.pod @@ -0,0 +1,153 @@ +=encoding utf8 + +=head1 NAME + +perl5184delta - what is new for perl v5.18.4 + +=head1 DESCRIPTION + +This document describes differences between the 5.18.4 release and the 5.18.2 +release. B This document ignores perl 5.18.3, a broken release +which existed for a few hours only. + +If you are upgrading from an earlier release such as 5.18.1, first read +L, which describes differences between 5.18.1 and 5.18.2. + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +L has been upgraded from 5.84_01 to 5.84_02. + +=item * + +L has been upgraded from version 1.39_10 to 1.39_11. + +This fixes a crash in tab completion, where available. [perl #120827] Also, +filehandle information is properly reset after a pager is run. [perl #121456] + +=back + +=head1 Platform Support + +=head2 Platform-Specific Notes + +=over 4 + +=item Win32 + +=over 4 + +=item * + +Introduced by +L, a memory +leak on every call to C and backticks (C< `` >), on most Win32 Perls +starting from 5.18.0 has been fixed. The memory leak only occurred if you +enabled psuedo-fork in your build of Win32 Perl, and were running that build on +Server 2003 R2 or newer OS. The leak does not appear on WinXP SP3. +[L] + +=back + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +The debugger now properly resets filehandles as needed. [perl #121456] + +=item * + +A segfault in Digest::SHA has been addressed. [perl #121421] + +=item * + +perl can again be built with USE_64_BIT_INT, with Visual C 2003, 32 bit. +[perl #120925] + +=item * + +A leading { (brace) in formats is properly parsed again. [perl #119973] + +=item * + +Copy the values used to perturb hash iteration when cloning an +interpreter. This was fairly harmless but caused C to +complain. [perl #121336] + +=item * + +In Perl v5.18 C and C started +crashing. This has been fixed. [perl #119949] + +=back + +=head1 Acknowledgements + +Perl 5.18.4 represents approximately 9 months of development since Perl 5.18.2 +and contains approximately 2,000 lines of changes across 53 files from 13 +authors. + +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.18.4: + +Daniel Dragan, David Mitchell, Doug Bell, Father Chrysostomos, Hiroo Hayashi, +James E Keenan, Karl Williamson, Mark Shelor, Ricardo Signes, Shlomi Fish, +Smylers, Steve Hay, Tony Cook. + +The list above is almost certainly incomplete as it is automatically generated +from version control history. In particular, it does not include the names of +the (very much appreciated) contributors who reported issues to the Perl bug +tracker. + +Many of the changes included in this version originated in the CPAN modules +included in Perl's core. We're grateful to the entire CPAN community for +helping Perl to flourish. + +For a more complete list of all of Perl's historical contributors, please see +the F 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 +http://rt.perl.org/perlbug/ . There may also be information at +http://www.perl.org/ , the Perl Home Page. + +If you believe you have an unreported bug, please run the L program +included with your release. Be sure to trim your bug down to a tiny but +sufficient test case. Your bug report, along with the output of C, +will be sent off to perlbug@perl.org to be analysed by the Perl porting team. + +If the bug you are reporting has security implications, which make it +inappropriate to send to a publicly archived mailing list, then please send it +to perl5-security-report@perl.org. This points to a closed subscription +unarchived mailing list, which includes all the core committers, who will be +able to help assess the impact of issues, figure out a resolution, and help +co-ordinate the release of patches to mitigate or fix the problem across all +platforms on which Perl is supported. Please only use this address for +security issues in the Perl core, not for modules independently distributed on +CPAN. + +=head1 SEE ALSO + +The F file for an explanation of how to view exhaustive details on +what changed. + +The F file for how to build Perl. + +The F file for general stuff. + +The F and F files for copyright information. + +=cut + diff --git a/gnu/usr.bin/perl/pod/perl5201delta.pod b/gnu/usr.bin/perl/pod/perl5201delta.pod new file mode 100644 index 00000000000..93528014ee0 --- /dev/null +++ b/gnu/usr.bin/perl/pod/perl5201delta.pod @@ -0,0 +1,410 @@ +=encoding utf8 + +=head1 NAME + +perl5201delta - what is new for perl v5.20.1 + +=head1 DESCRIPTION + +This document describes differences between the 5.20.0 release and the 5.20.1 +release. + +If you are upgrading from an earlier release such as 5.18.0, first read +L, which describes differences between 5.18.0 and 5.20.0. + +=head1 Incompatible Changes + +There are no changes intentionally incompatible with 5.20.0. If any exist, +they are bugs, and we request that you submit a report. See L +below. + +=head1 Performance Enhancements + +=over 4 + +=item * + +An optimization to avoid problems with COW and deliberately overallocated PVs +has been disabled because it interfered with another, more important, +optimization, causing a slowdown on some platforms. +L<[perl #121975]|https://rt.perl.org/Ticket/Display.html?id=121975> + +=item * + +Returning a string from a lexical variable could be slow in some cases. This +has now been fixed. +L<[perl #121977]|https://rt.perl.org/Ticket/Display.html?id=121977> + +=back + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +L has been upgraded from version 0.20 to 0.22. + +The list of Perl versions covered has been updated and some flaws in the +parsing have been fixed. + +=item * + +L has been upgraded from version 5.70 to 5.71. + +Illegal POD syntax in the documentation has been corrected. + +=item * + +L has been upgraded from version 0.280216 to 0.280217. + +Android builds now link to both B<-lperl> and C<$Config::Config{perllibs}>. + +=item * + +L has been upgraded from version 2.29 to 2.30. + +The documentation now notes that C will not overwrite read-only files. + +=item * + +L has been upgraded from version 3.11 to 5.020001. + +The list of Perl versions covered has been updated. + +=item * + +The PathTools module collection has been upgraded from version 3.47 to 3.48. + +Fallbacks are now in place when cross-compiling for Android and +C<$Config::Config{sh}> is not yet defined. +L<[perl #121963]|https://rt.perl.org/Ticket/Display.html?id=121963> + +=item * + +L has been upgraded from version 0.14 to 0.15. + +A minor portability improvement has been made to the XS implementation. + +=item * + +L has been upgraded from version 0.57 to 0.58. + +The documentation includes many clarifications and fixes. + +=item * + +L has been upgraded from version 1.13 to 1.13_01. + +The documentation has some minor formatting improvements. + +=item * + +L has been upgraded from version 0.9908 to 0.9909. + +External libraries and Perl may have different ideas of what the locale is. +This is problematic when parsing version strings if the locale's numeric +separator has been changed. Version parsing has been patched to ensure it +handles the locales correctly. +L<[perl #121930]|https://rt.perl.org/Ticket/Display.html?id=121930> + +=back + +=head1 Documentation + +=head2 Changes to Existing Documentation + +=head3 L + +=over 4 + +=item * + +C - Emphasize that this returns the highest index in the array, not the +size of the array. +L<[perl #120386]|https://rt.perl.org/Ticket/Display.html?id=120386> + +=item * + +Note that C doesn't do set magic. + +=item * + +C - Fix documentation to mention the use of C instead of +C. +L<[perl #121869]|https://rt.perl.org/Ticket/Display.html?id=121869> + +=item * + +Clarify where C may be embedded or is required to terminate a string. + +=back + +=head3 L + +=over 4 + +=item * + +Clarify the meaning of C<-B> and C<-T>. + +=item * + +C<-l> now notes that it will return false if symlinks aren't supported by the +file system. +L<[perl #121523]|https://rt.perl.org/Ticket/Display.html?id=121523> + +=item * + +Note that C, C and C may produce different orderings for +tied hashes compared to other perl hashes. +L<[perl #121404]|https://rt.perl.org/Ticket/Display.html?id=121404> + +=item * + +Note that C and C may fall back to the shell on Win32. +Only C and C indirect object syntax +will reliably avoid using the shell. This has also been noted in L. +L<[perl #122046]|https://rt.perl.org/Ticket/Display.html?id=122046> + +=item * + +Clarify the meaning of C. +L<[perl #122132]|https://rt.perl.org/Ticket/Display.html?id=122132> + +=back + +=head3 L + +=over 4 + +=item * + +Explain various ways of modifying an existing SV's buffer. +L<[perl #116925]|https://rt.perl.org/Ticket/Display.html?id=116925> + +=back + +=head3 L + +=over 4 + +=item * + +We now have a code of conduct for the I<< p5p >> mailing list, as documented in +L<< perlpolicy/STANDARDS OF CONDUCT >>. + +=back + +=head3 L + +=over 4 + +=item * + +The C modifier has been clarified to note that comments cannot be continued +onto the next line by escaping them. + +=back + +=head3 L + +=over 4 + +=item * + +Mention the use of empty conditionals in C/C loops for infinite +loops. + +=back + +=head3 L + +=over 4 + +=item * + +Added a discussion of locale issues in XS code. + +=back + +=head1 Diagnostics + +The following additions or changes have been made to diagnostic output, +including warnings and fatal error messages. For the complete list of +diagnostic messages, see L. + +=head2 Changes to Existing Diagnostics + +=over 4 + +=item * + +L%sE|perldiag/"Variable length lookbehind not implemented in regex m/%s/"> + +Information about Unicode behaviour has been added. + +=back + +=head1 Configuration and Compilation + +=over 4 + +=item * + +Building Perl no longer writes to the source tree when configured with +F's B<-Dmksymlinks> option. +L<[perl #121585]|https://rt.perl.org/Ticket/Display.html?id=121585> + +=back + +=head1 Platform Support + +=head2 Platform-Specific Notes + +=over 4 + +=item Android + +Build support has been improved for cross-compiling in general and for Android +in particular. + +=item OpenBSD + +Corrected architectures and version numbers used in configuration hints when +building Perl. + +=item Solaris + +B options have been cleaned up, hints look for B as well as +B, and support for native C has been added. + +=item VMS + +An old bug in feature checking, mainly affecting pre-7.3 systems, has been +fixed. + +=item Windows + +C<%I64d> is now being used instead of C<%lld> for MinGW. + +=back + +=head1 Internal Changes + +=over 4 + +=item * + +Added L. +Changing the program's locale should be avoided by XS code. Nevertheless, +certain non-Perl libraries called from XS, such as C do so. When this +happens, Perl needs to be told that the locale has changed. Use this function +to do so, before returning to Perl. + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +A bug has been fixed where zero-length assertions and code blocks inside of a +regex could cause C to see an incorrect value. +L<[perl #122460]|https://rt.perl.org/Ticket/Display.html?id=122460> + +=item * + +Using C on tainted utf8 strings could issue bogus "Malformed UTF-8 +character (unexpected end of string)" warnings. This has now been fixed. +L<[perl #122148]|https://rt.perl.org/Ticket/Display.html?id=122148> + +=item * + +C and friends should now work properly on more Android builds. + +Due to an oversight, the value specified through B<-Dtargetsh> to F +would end up being ignored by some of the build process. This caused perls +cross-compiled for Android to end up with defective versions of C, +C and backticks: the commands would end up looking for F instead +of F, and so would fail for the vast majority of devices, +leaving C<$!> as C. + +=item * + +Many issues have been detected by L and +fixed. + +=back + +=head1 Acknowledgements + +Perl 5.20.1 represents approximately 4 months of development since Perl 5.20.0 +and contains approximately 12,000 lines of changes across 170 files from 36 +authors. + +Excluding auto-generated files, documentation and release tools, there were +approximately 2,600 lines of changes to 110 .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.1: + +Aaron Crane, Abigail, Alberto Simões, Alexandr Ciornii, Alexandre (Midnite) +Jousset, Andrew Fresh, Andy Dougherty, Brian Fraser, Chris 'BinGOs' Williams, +Craig A. Berry, Daniel Dragan, David Golden, David Mitchell, H.Merijn Brand, +James E Keenan, Jan Dubois, Jarkko Hietaniemi, John Peacock, kafka, Karen +Etheridge, Karl Williamson, Lukas Mai, Matthew Horsfall, Michael Bunk, Peter +Martini, Rafael Garcia-Suarez, Reini Urban, Ricardo Signes, Shirakata Kentaro, +Smylers, Steve Hay, Thomas Sibley, Todd Rinaldo, Tony Cook, Vladimir Marek, +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 +the (very much appreciated) contributors who reported issues to the Perl bug +tracker. + +Many of the changes included in this version originated in the CPAN modules +included in Perl's core. We're grateful to the entire CPAN community for +helping Perl to flourish. + +For a more complete list of all of Perl's historical contributors, please see +the F file in the Perl source distribution. + +=head1 Reporting Bugs + +If you find what you think is a bug, you might check the articles recently +posted to the comp.lang.perl.misc newsgroup and the perl bug database at +https://rt.perl.org/ . There may also be information at http://www.perl.org/ , +the Perl Home Page. + +If you believe you have an unreported bug, please run the L program +included with your release. Be sure to trim your bug down to a tiny but +sufficient test case. Your bug report, along with the output of C, +will be sent off to perlbug@perl.org to be analysed by the Perl porting team. + +If the bug you are reporting has security implications, which make it +inappropriate to send to a publicly archived mailing list, then please send it +to perl5-security-report@perl.org. This points to a closed subscription +unarchived mailing list, which includes all the core committers, who will be +able to help assess the impact of issues, figure out a resolution, and help +co-ordinate the release of patches to mitigate or fix the problem across all +platforms on which Perl is supported. Please only use this address for +security issues in the Perl core, not for modules independently distributed on +CPAN. + +=head1 SEE ALSO + +The F file for an explanation of how to view exhaustive details on +what changed. + +The F file for how to build Perl. + +The F file for general stuff. + +The F and F files for copyright information. + +=cut diff --git a/gnu/usr.bin/perl/pod/perlexperiment.pod b/gnu/usr.bin/perl/pod/perlexperiment.pod index 66bd9606d0c..90539ea968a 100644 --- a/gnu/usr.bin/perl/pod/perlexperiment.pod +++ b/gnu/usr.bin/perl/pod/perlexperiment.pod @@ -91,6 +91,16 @@ C. Introduced in Perl 5.18 +=item Subroutine signatures + +Introduced in Perl 5.20.0 + +Using this feature triggers warnings in the category +C. + +The ticket for this feature is +L<[perl #121481]|https://rt.perl.org/Ticket/Display.html?id=121481>. + =item Postfix dereference syntax Introduced in Perl 5.20.0 diff --git a/gnu/usr.bin/perl/pod/perlfork.pod b/gnu/usr.bin/perl/pod/perlfork.pod index 7729444c40b..c118fb51b43 100644 --- a/gnu/usr.bin/perl/pod/perlfork.pod +++ b/gnu/usr.bin/perl/pod/perlfork.pod @@ -152,7 +152,7 @@ pseudo-child created by it that is also a pseudo-parent will only exit after their pseudo-children have exited. Starting with Perl 5.14 a parent will not wait() automatically -for any child that has been signalled with C +for any child that has been signalled with C to avoid a deadlock in case the child is blocking on I/O and never receives the signal. @@ -168,8 +168,8 @@ BEGIN block, but will not continue parsing the source stream after the BEGIN block. For example, consider the following code: BEGIN { - fork and exit; # fork child and exit the parent - print "inner\n"; + fork and exit; # fork child and exit the parent + print "inner\n"; } print "outer\n"; @@ -198,7 +198,7 @@ separately in the child. On some operating systems, notably Solaris and Unixware, calling C from a child process will flush and close open filehandles in the parent, thereby corrupting the filehandles. On these systems, calling C<_exit()> -is suggested instead. C<_exit()> is available in Perl through the +is suggested instead. C<_exit()> is available in Perl through the C module. Please consult your system's manpages for more information on this. @@ -224,63 +224,63 @@ write to a forked child: # simulate open(FOO, "|-") sub pipe_to_fork ($) { - my $parent = shift; - pipe my $child, $parent or die; - my $pid = fork(); - die "fork() failed: $!" unless defined $pid; - if ($pid) { - close $child; - } - else { - close $parent; - open(STDIN, "<&=" . fileno($child)) or die; - } - $pid; + my $parent = shift; + pipe my $child, $parent or die; + my $pid = fork(); + die "fork() failed: $!" unless defined $pid; + if ($pid) { + close $child; + } + else { + close $parent; + open(STDIN, "<&=" . fileno($child)) or die; + } + $pid; } if (pipe_to_fork('FOO')) { - # parent - print FOO "pipe_to_fork\n"; - close FOO; + # parent + print FOO "pipe_to_fork\n"; + close FOO; } else { - # child - while () { print; } - exit(0); + # child + while () { print; } + exit(0); } And this one reads from the child: # simulate open(FOO, "-|") sub pipe_from_fork ($) { - my $parent = shift; - pipe $parent, my $child or die; - my $pid = fork(); - die "fork() failed: $!" unless defined $pid; - if ($pid) { - close $child; - } - else { - close $parent; - open(STDOUT, ">&=" . fileno($child)) or die; - } - $pid; + my $parent = shift; + pipe $parent, my $child or die; + my $pid = fork(); + die "fork() failed: $!" unless defined $pid; + if ($pid) { + close $child; + } + else { + close $parent; + open(STDOUT, ">&=" . fileno($child)) or die; + } + $pid; } if (pipe_from_fork('BAR')) { - # parent - while () { print; } - close BAR; + # parent + while () { print; } + close BAR; } else { - # child - print "pipe_from_fork\n"; - exit(0); + # child + print "pipe_from_fork\n"; + exit(0); } Forking pipe open() constructs will be supported in future. -=item Global state maintained by XSUBs +=item Global state maintained by XSUBs External subroutines (XSUBs) that maintain their own global state may not work correctly. Such XSUBs will either need to maintain locks to diff --git a/gnu/usr.bin/perl/pod/perlgit.pod b/gnu/usr.bin/perl/pod/perlgit.pod index 2b00774d02b..b45faf494df 100644 --- a/gnu/usr.bin/perl/pod/perlgit.pod +++ b/gnu/usr.bin/perl/pod/perlgit.pod @@ -255,12 +255,12 @@ itself you can fix it up by editing the files once more and then issue: Now you should create a patch file for all your local changes: - % git format-patch -M origin.. + % git format-patch -M blead.. 0001-Rename-Leon-Brocard-to-Orange-Brocard.patch Or for a lot of changes, e.g. from a topic branch: - % git format-patch --stdout -M origin.. > topic-branch-changes.patch + % git format-patch --stdout -M blead.. > topic-branch-changes.patch You should now send an email to L with a description of your @@ -271,8 +271,8 @@ should only send patches to L directly if the patch is not ready to be applied, but intended for discussion. -See the next section for how to configure and use git to send these -emails for you. +Please do not use git-send-email(1) to send your patch. See L for more information. If you want to delete your temporary branch, you may do so with: @@ -326,7 +326,7 @@ output. After you've generated your patch you should sent it to perlbug@perl.org (as discussed L with a normal mail client as an +section|/"Patch workflow">) with a normal mail client as an attachment, along with a description of the patch. You B use git-send-email(1) to send patches generated with diff --git a/gnu/usr.bin/perl/pod/perlhack.pod b/gnu/usr.bin/perl/pod/perlhack.pod index dc3f3968900..8fcd618a8d2 100644 --- a/gnu/usr.bin/perl/pod/perlhack.pod +++ b/gnu/usr.bin/perl/pod/perlhack.pod @@ -125,8 +125,7 @@ are also referred to as the "Perl 5 Porters", "p5p" or just the "porters". A searchable archive of the list is available at -L. There is -also another archive at +L. There is also an archive at L. =head2 perl-changes mailing list diff --git a/gnu/usr.bin/perl/pod/perliol.pod b/gnu/usr.bin/perl/pod/perliol.pod index b01b10e6d2e..ab600bd3b2b 100644 --- a/gnu/usr.bin/perl/pod/perliol.pod +++ b/gnu/usr.bin/perl/pod/perliol.pod @@ -98,7 +98,7 @@ The basic data structure is a PerlIOl: { PerlIOl * next; /* Lower layer */ PerlIO_funcs * tab; /* Functions for this layer */ - IV flags; /* Various flags for state */ + U32 flags; /* Various flags for state */ }; A C is a pointer to the struct, and the I diff --git a/gnu/usr.bin/perl/pod/perlmodstyle.pod b/gnu/usr.bin/perl/pod/perlmodstyle.pod index 5622d3244d8..d6111d059d5 100644 --- a/gnu/usr.bin/perl/pod/perlmodstyle.pod +++ b/gnu/usr.bin/perl/pod/perlmodstyle.pod @@ -178,7 +178,9 @@ been done in Perl, and avoid re-inventing the wheel unless you have a good reason. Good places to look for pre-existing modules include -http://search.cpan.org/ and asking on modules@perl.org +L and L +and asking on C +(L). If an existing module B does what you want, consider writing a patch, writing a subclass, or otherwise extending the existing module @@ -370,7 +372,7 @@ which is visible to the user (and most things that aren't!) =item Parameter passing -Use named parameters. It's easier to use a hash like this: +Use named parameters. It's easier to use a hash like this: $obj->do_something( name => "wibble", @@ -566,7 +568,7 @@ Your module should also include a README file describing the module and giving pointers to further information (website, author email). An INSTALL file should be included, and should contain simple installation -instructions. When using ExtUtils::MakeMaker this will usually be: +instructions. When using ExtUtils::MakeMaker this will usually be: =over 4 @@ -620,23 +622,25 @@ The most common CPAN version numbering scheme looks like this: 1.00, 1.10, 1.11, 1.20, 1.30, 1.31, 1.32 A correct CPAN version number is a floating point number with at least -2 digits after the decimal. You can test whether it conforms to CPAN by +2 digits after the decimal. You can test whether it conforms to CPAN by using perl -MExtUtils::MakeMaker -le 'print MM->parse_version(shift)' 'Foo.pm' If you want to release a 'beta' or 'alpha' version of a module but don't want CPAN.pm to list it as most recent use an '_' after the -regular version number followed by at least 2 digits, eg. 1.20_01. If +regular version number followed by at least 2 digits, eg. 1.20_01. If you do this, the following idiom is recommended: - $VERSION = "1.12_01"; - $XS_VERSION = $VERSION; # only needed if you have XS code - $VERSION = eval $VERSION; + our $VERSION = "1.12_01"; # so CPAN distribution will have + # right filename + our $XS_VERSION = $VERSION; # only needed if you have XS code + $VERSION = eval $VERSION; # so "use Module 0.002" won't warn on + # underscore With that trick MakeMaker will only read the first line and thus read the underscore, while the perl interpreter will evaluate the $VERSION -and convert the string into a number. Later operations that treat +and convert the string into a number. Later operations that treat $VERSION as a number will then be able to do so without provoking a warning about $VERSION not being a number. @@ -644,6 +648,13 @@ Never release anything (even a one-word documentation patch) without incrementing the number. Even a one-word documentation patch should result in a change in version at the sub-minor level. +Once picked, it is important to stick to your version scheme, without +reducing the number of digits. This is because "downstream" packagers, +such as the FreeBSD ports system, interpret the version numbers in +various ways. If you change the number of digits in your version scheme, +you can confuse these systems so they get the versions of your module +out of order, which is obviously bad. + =head2 Pre-requisites Module authors should carefully consider whether to rely on other @@ -676,7 +687,7 @@ Specify version requirements for other Perl modules in the pre-requisites in your Makefile.PL or Build.PL. Be sure to specify Perl version requirements both in Makefile.PL or -Build.PL and with C or similar. See the section on +Build.PL and with C or similar. See the section on C of L for details. =head2 Testing @@ -687,7 +698,8 @@ and the tests should also be available to people installing the modules For Module::Build you would use the C equivalent C. The importance of these tests is proportional to the alleged stability of a -module. A module which purports to be stable or which hopes to achieve wide +module. A module which purports to be +stable or which hopes to achieve wide use should adhere to as strict a testing regime as possible. Useful modules to help you write tests (with minimum impact on your @@ -702,8 +714,9 @@ Currently you have the choice between ExtUtils::MakeMaker and the more platform independent Module::Build, allowing modules to be installed in a consistent manner. When using ExtUtils::MakeMaker, you can use "make dist" to create your -package. Tools exist to help you to build your module in a MakeMaker-friendly -style. These include ExtUtils::ModuleMaker and h2xs. See also L. +package. Tools exist to help you to build your module in a +MakeMaker-friendly style. These include ExtUtils::ModuleMaker and h2xs. +See also L. =head2 Licensing diff --git a/gnu/usr.bin/perl/pod/perlnewmod.pod b/gnu/usr.bin/perl/pod/perlnewmod.pod index 7555f974a80..26c4c139796 100644 --- a/gnu/usr.bin/perl/pod/perlnewmod.pod +++ b/gnu/usr.bin/perl/pod/perlnewmod.pod @@ -23,6 +23,9 @@ trying to do, and you've had to write the code yourself, consider packaging up the solution into a module and uploading it to CPAN so that others can benefit. +You should also take a look at L for best practices in +making a module. + =head2 Warning We're going to primarily concentrate on Perl-only modules here, rather diff --git a/gnu/usr.bin/perl/pod/perlpolicy.pod b/gnu/usr.bin/perl/pod/perlpolicy.pod index 1dcb1a5fe23..c6e0bbd755f 100644 --- a/gnu/usr.bin/perl/pod/perlpolicy.pod +++ b/gnu/usr.bin/perl/pod/perlpolicy.pod @@ -84,9 +84,9 @@ the Perl community should expect from Perl's developers: =item * -We "officially" support the two most recent stable release series. 5.12.x -and earlier are now out of support. As of the release of 5.18.0, we will -"officially" end support for Perl 5.14.x, other than providing security +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 updates as described below. =item * @@ -204,6 +204,14 @@ do our best to smooth the transition path for users of experimental features, you should contact the perl5-porters mailinglist if you find an experimental feature useful and want to help shape its future. +Experimental features must be experimental in two stable releases before being +marked non-experimental. Experimental features will only have their +experimental status revoked when they no longer have any design-changing bugs +open against them and when they have remained unchanged in behavior for the +entire length of a development cycle. In other words, a feature present in +v5.20.0 may be marked no longer experimental in v5.22.0 if and only if its +behavior is unchanged throughout all of v5.21. + =item deprecated If something in the Perl core is marked as B, we may remove it @@ -272,7 +280,8 @@ are not acceptable. =item * -Patches that fix crashing bugs that do not otherwise change Perl's +Patches that fix crashing bugs, assertion failures and +memory corruption that do not otherwise change Perl's functionality or negatively impact performance are acceptable. =item * @@ -512,10 +521,10 @@ 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. -The first removal is for one month. Subsequent removals will double in length. -After six months with no warning, a user's ban length is reset. Removals, like -warnings, are public. +Repeated unacceptable behavior will result in removal from the mailing list and +revocation of rights to update rt.perl.org. The first removal is for one +month. Subsequent removals will double in length. After six months with no +warning, a user's ban length is reset. Removals, like warnings, are public. The list of moderators will be public knowledge. At present, it is: Aaron Crane, Andy Dougherty, Ricardo Signes, Steffen Müller. diff --git a/gnu/usr.bin/perl/pod/perlport.pod b/gnu/usr.bin/perl/pod/perlport.pod index 8b71a6e3abf..a4cd831097c 100644 --- a/gnu/usr.bin/perl/pod/perlport.pod +++ b/gnu/usr.bin/perl/pod/perlport.pod @@ -542,12 +542,12 @@ them on. External tools are often named differently on different platforms, may not be available in the same location, might accept different arguments, can behave differently, and often present their results in a platform-dependent way. Thus, you should seldom depend -on them to produce consistent results. (Then again, if you're calling +on them to produce consistent results. (Then again, if you're calling I, you probably don't expect it to run on both Unix and CP/M.) One especially common bit of Perl code is opening a pipe to B: - open(MAIL, '|/usr/lib/sendmail -t') + open(MAIL, '|/usr/lib/sendmail -t') or die "cannot fork sendmail: $!"; This is fine for systems programming when sendmail is known to be @@ -760,7 +760,7 @@ problems in their code that crop up because of lack of testing on other platforms; two, to provide users with information about whether a given module works on a given platform. -Also see: +Also see: =over 4 @@ -805,7 +805,7 @@ are a few of the more popular Unix flavors: BSD/OS bsdos i386-bsdos Darwin darwin darwin DYNIX/ptx dynixptx i386-dynixptx - FreeBSD freebsd freebsd-i386 + FreeBSD freebsd freebsd-i386 Haiku haiku BePC-haiku Linux linux arm-linux Linux linux armv5tel-linux @@ -883,8 +883,8 @@ DOSish perls are as follows: OS $^O $Config{archname} ID Version -------------------------------------------------------- - MS-DOS dos ? - PC-DOS dos ? + MS-DOS dos ? + PC-DOS dos ? OS/2 os2 ? Windows 3.1 ? ? 0 3 01 Windows 95 MSWin32 MSWin32-x86 1 4 00 @@ -901,11 +901,11 @@ DOSish perls are as follows: Windows 7 MSWin32 MSWin32-x64 2 6 01 Windows 2008 MSWin32 MSWin32-x86 2 6 01 Windows 2008 MSWin32 MSWin32-x64 2 6 01 - Windows CE MSWin32 ? 3 + Windows CE MSWin32 ? 3 Cygwin cygwin cygwin The various MSWin32 Perl's can distinguish the OS they are running on -via the value of the fifth element of the list returned from +via the value of the fifth element of the list returned from Win32::GetOSVersion(). For example: if ($^O eq 'MSWin32') { @@ -937,7 +937,7 @@ L Also L. =item * Build instructions for Win32 in L, or under the Cygnus environment -in L. +in L. =item * @@ -949,7 +949,7 @@ The ActiveState Pages, L =item * -The Cygwin environment for Win32; F (installed +The Cygwin environment for Win32; F (installed as L), L =item * @@ -1099,9 +1099,9 @@ native formats. It is also now the only way that you should check to see if VMS is in a case sensitive mode. What C<\n> represents depends on the type of file opened. It usually -represents C<\012> but it could also be C<\015>, C<\012>, C<\015\012>, -C<\000>, C<\040>, or nothing depending on the file organization and -record format. The VMS::Stdio module provides access to the +represents C<\012> but it could also be C<\015>, C<\012>, C<\015\012>, +C<\000>, C<\040>, or nothing depending on the file organization and +record format. The VMS::Stdio module provides access to the special fopen() requirements of files with unusual attributes on VMS. TCP/IP stacks are optional on VMS, so socket routines might not be @@ -1245,7 +1245,7 @@ services for OS/390" (formerly known as OpenEdition), VM/ESA OpenEdition, or the BS200 POSIX-BC system (BS2000 is supported in perl 5.6 and greater). See L for details. Note that for OS/400 there is also a port of Perl 5.8.1/5.10.0 or later to the PASE which is ASCII-based (as opposed to -ILE which is EBCDIC-based), see L. +ILE which is EBCDIC-based), see L. As of R2.5 of USS for OS/390 and Version 2.3 of VM/ESA these Unix sub-systems do not support the C<#!> shebang trick for script invocation. @@ -1334,7 +1334,7 @@ as well as on CPAN in the F directory. =head2 Acorn RISC OS Because Acorns use ASCII with newlines (C<\n>) in text files as C<\012> like -Unix, and because Unix filename emulation is turned on by default, +Unix, and because Unix filename emulation is turned on by default, most simple scripts will probably work "out of the box". The native filesystem is modular, and individual filesystems are free to be case-sensitive or insensitive, and are usually case-preserving. Some @@ -1408,7 +1408,7 @@ assume that they can spawn a child process which can change the current directory without affecting its parent (and everyone else for that matter). -Because native operating system filehandles are global and are currently +Because native operating system filehandles are global and are currently allocated down from 255, with 0 being a reserved value, the Unix emulation library emulates Unix filehandles. Consequently, you can't rely on passing C, C, or C to your children. @@ -1538,9 +1538,9 @@ Due to issues with various CPUs, math libraries, compilers, and standards, results for C may vary depending on any combination of the above. Perl attempts to conform to the Open Group/IEEE standards for the results returned from C, but cannot force the issue if the system Perl is -run on does not allow it. (Tru64, HP-UX 10.20) +run on does not allow it. (Tru64, HP-UX 10.20) -The current version of the standards for C is available at +The current version of the standards for C is available at L. =item binmode @@ -1628,8 +1628,8 @@ enabled, a generic number will be encoded in a method compatible with the C library _POSIX_EXIT macro so that it can be decoded by other programs, particularly ones written in C, like the GNV package. (VMS) -C resets file pointers, which is a problem when called -from a child process (created by C) in C. +C resets file pointers, which is a problem when called +from a child process (created by C) in C. A workaround is to use C. (Solaris) exit unless $Config{archname} =~ /\bsolaris\b/; @@ -2022,7 +2022,7 @@ Does not automatically flush output handles on some platforms. The return value is POSIX-like (shifted up by 8 bits), which only allows room for a made-up value derived from the severity bits of the native -32-bit condition code (unless overridden by C). +32-bit condition code (unless overridden by C). If the native condition code is one that has a POSIX value encoded, the POSIX value will be decoded to extract the expected exit value. For more details see L. (VMS) @@ -2195,7 +2195,7 @@ ensure you have that library installed when building perl. =back -=head1 EOL Platforms +=head1 EOL Platforms =head2 (Perl 5.20) diff --git a/gnu/usr.bin/perl/pod/perlrecharclass.pod b/gnu/usr.bin/perl/pod/perlrecharclass.pod index ba49ba0d0e8..5e823323d21 100644 --- a/gnu/usr.bin/perl/pod/perlrecharclass.pod +++ b/gnu/usr.bin/perl/pod/perlrecharclass.pod @@ -772,9 +772,9 @@ Unicode considers symbols. =item [6] -C<\p{SpacePerl}> and C<\p{Space}> match identically starting with Perl +C<\p{XPerlSpace}> and C<\p{Space}> match identically starting with Perl v5.18. In earlier versions, these differ only in that in non-locale -matching, C<\p{SpacePerl}> does not match the vertical tab, C<\cK>. +matching, C<\p{XPerlSpace}> does not match the vertical tab, C<\cK>. Same for the two ASCII-only range forms. =back diff --git a/gnu/usr.bin/perl/pod/perlunicook.pod b/gnu/usr.bin/perl/pod/perlunicook.pod new file mode 100644 index 00000000000..44a45712879 --- /dev/null +++ b/gnu/usr.bin/perl/pod/perlunicook.pod @@ -0,0 +1,857 @@ + +=encoding utf8 + +=head1 NAME + +perlunicook - cookbookish examples of handling Unicode in Perl + +=head1 DESCRIPTION + +This manpage contains short recipes demonstrating how to handle common Unicode +operations in Perl, plus one complete program at the end. Any undeclared +variables in individual recipes are assumed to have a previous appropriate +value in them. + +=head1 EXAMPLES + +=head2 ℞ 0: Standard preamble + +Unless otherwise notes, all examples below require this standard preamble +to work correctly, with the C<#!> adjusted to work on your system: + + #!/usr/bin/env perl + + use utf8; # so literals and identifiers can be in UTF-8 + use v5.12; # or later to get "unicode_strings" feature + use strict; # quote strings, declare variables + use warnings; # on by default + use warnings qw(FATAL utf8); # fatalize encoding glitches + use open qw(:std :utf8); # undeclared streams in UTF-8 + use charnames qw(:full :short); # unneeded in v5.16 + +This I make even Unix programmers C your binary streams, +or open them with C<:raw>, but that's the only way to get at them +portably anyway. + +B: C and C do not get along with each other. + +=head2 ℞ 1: Generic Unicode-savvy filter + +Always decompose on the way in, then recompose on the way out. + + use Unicode::Normalize; + + while (<>) { + $_ = NFD($_); # decompose + reorder canonically + ... + } continue { + print NFC($_); # recompose (where possible) + reorder canonically + } + +=head2 ℞ 2: Fine-tuning Unicode warnings + +As of v5.14, Perl distinguishes three subclasses of UTF‑8 warnings. + + use v5.14; # subwarnings unavailable any earlier + no warnings "nonchar"; # the 66 forbidden non-characters + no warnings "surrogate"; # UTF-16/CESU-8 nonsense + no warnings "non_unicode"; # for codepoints over 0x10_FFFF + +=head2 ℞ 3: Declare source in utf8 for identifiers and literals + +Without the all-critical C declaration, putting UTF‑8 in your +literals and identifiers won’t work right. If you used the standard +preamble just given above, this already happened. If you did, you can +do things like this: + + use utf8; + + my $measure = "Ångström"; + my @μsoft = qw( cp852 cp1251 cp1252 ); + my @ὑπέρμεγας = qw( ὑπέρ μεγας ); + my @鯉 = qw( koi8-f koi8-u koi8-r ); + my $motto = "👪 💗 🐪"; # FAMILY, GROWING HEART, DROMEDARY CAMEL + +If you forget C, high bytes will be misunderstood as +separate characters, and nothing will work right. + +=head2 ℞ 4: Characters and their numbers + +The C and C functions work transparently on all codepoints, +not just on ASCII alone — nor in fact, not even just on Unicode alone. + + # ASCII characters + ord("A") + chr(65) + + # characters from the Basic Multilingual Plane + ord("Σ") + chr(0x3A3) + + # beyond the BMP + ord("𝑛") # MATHEMATICAL ITALIC SMALL N + chr(0x1D45B) + + # beyond Unicode! (up to MAXINT) + ord("\x{20_0000}") + chr(0x20_0000) + +=head2 ℞ 5: Unicode literals by character number + +In an interpolated literal, whether a double-quoted string or a +regex, you may specify a character by its number using the +C<\x{I}> escape. + + String: "\x{3a3}" + Regex: /\x{3a3}/ + + String: "\x{1d45b}" + Regex: /\x{1d45b}/ + + # even non-BMP ranges in regex work fine + /[\x{1D434}-\x{1D467}]/ + +=head2 ℞ 6: Get character name by number + + use charnames (); + my $name = charnames::viacode(0x03A3); + +=head2 ℞ 7: Get character number by name + + use charnames (); + my $number = charnames::vianame("GREEK CAPITAL LETTER SIGMA"); + +=head2 ℞ 8: Unicode named characters + +Use the C<< \N{I} >> notation to get the character +by that name for use in interpolated literals (double-quoted +strings and regexes). In v5.16, there is an implicit + + use charnames qw(:full :short); + +But prior to v5.16, you must be explicit about which set of charnames you +want. The C<:full> names are the official Unicode character name, alias, or +sequence, which all share a namespace. + + use charnames qw(:full :short latin greek); + + "\N{MATHEMATICAL ITALIC SMALL N}" # :full + "\N{GREEK CAPITAL LETTER SIGMA}" # :full + +Anything else is a Perl-specific convenience abbreviation. Specify one or +more scripts by names if you want short names that are script-specific. + + "\N{Greek:Sigma}" # :short + "\N{ae}" # latin + "\N{epsilon}" # greek + +The v5.16 release also supports a C<:loose> import for loose matching of +character names, which works just like loose matching of property names: +that is, it disregards case, whitespace, and underscores: + + "\N{euro sign}" # :loose (from v5.16) + +=head2 ℞ 9: Unicode named sequences + +These look just like character names but return multiple codepoints. +Notice the C<%vx> vector-print functionality in C. + + use charnames qw(:full); + my $seq = "\N{LATIN CAPITAL LETTER A WITH MACRON AND GRAVE}"; + printf "U+%v04X\n", $seq; + U+0100.0300 + +=head2 ℞ 10: Custom named characters + +Use C<:alias> to give your own lexically scoped nicknames to existing +characters, or even to give unnamed private-use characters useful names. + + use charnames ":full", ":alias" => { + ecute => "LATIN SMALL LETTER E WITH ACUTE", + "APPLE LOGO" => 0xF8FF, # private use character + }; + + "\N{ecute}" + "\N{APPLE LOGO}" + +=head2 ℞ 11: Names of CJK codepoints + +Sinograms like “東京” come back with character names of +C and C, +because their “names” vary. The CPAN C module +has a large database for decoding these (and a whole lot more), provided you +know how to understand its output. + + # cpan -i Unicode::Unihan + use Unicode::Unihan; + my $str = "東京"; + my $unhan = new Unicode::Unihan; + for my $lang (qw(Mandarin Cantonese Korean JapaneseOn JapaneseKun)) { + printf "CJK $str in %-12s is ", $lang; + say $unhan->$lang($str); + } + +prints: + + CJK 東京 in Mandarin is DONG1JING1 + CJK 東京 in Cantonese is dung1ging1 + CJK 東京 in Korean is TONGKYENG + CJK 東京 in JapaneseOn is TOUKYOU KEI KIN + CJK 東京 in JapaneseKun is HIGASHI AZUMAMIYAKO + +If you have a specific romanization scheme in mind, +use the specific module: + + # cpan -i Lingua::JA::Romanize::Japanese + use Lingua::JA::Romanize::Japanese; + my $k2r = new Lingua::JA::Romanize::Japanese; + my $str = "東京"; + say "Japanese for $str is ", $k2r->chars($str); + +prints + + Japanese for 東京 is toukyou + +=head2 ℞ 12: Explicit encode/decode + +On rare occasion, such as a database read, you may be +given encoded text you need to decode. + + use Encode qw(encode decode); + + my $chars = decode("shiftjis", $bytes, 1); + # OR + my $bytes = encode("MIME-Header-ISO_2022_JP", $chars, 1); + +For streams all in the same encoding, don't use encode/decode; instead +set the file encoding when you open the file or immediately after with +C as described later below. + +=head2 ℞ 13: Decode program arguments as utf8 + + $ perl -CA ... + or + $ export PERL_UNICODE=A + or + use Encode qw(decode_utf8); + @ARGV = map { decode_utf8($_, 1) } @ARGV; + +=head2 ℞ 14: Decode program arguments as locale encoding + + # cpan -i Encode::Locale + use Encode qw(locale); + use Encode::Locale; + + # use "locale" as an arg to encode/decode + @ARGV = map { decode(locale => $_, 1) } @ARGV; + +=head2 ℞ 15: Declare STD{IN,OUT,ERR} to be utf8 + +Use a command-line option, an environment variable, or else +call C explicitly: + + $ perl -CS ... + or + $ export PERL_UNICODE=S + or + use open qw(:std :utf8); + or + binmode(STDIN, ":utf8"); + binmode(STDOUT, ":utf8"); + binmode(STDERR, ":utf8"); + +=head2 ℞ 16: Declare STD{IN,OUT,ERR} to be in locale encoding + + # cpan -i Encode::Locale + use Encode; + use Encode::Locale; + + # or as a stream for binmode or open + binmode STDIN, ":encoding(console_in)" if -t STDIN; + binmode STDOUT, ":encoding(console_out)" if -t STDOUT; + binmode STDERR, ":encoding(console_out)" if -t STDERR; + +=head2 ℞ 17: Make file I/O default to utf8 + +Files opened without an encoding argument will be in UTF-8: + + $ perl -CD ... + or + $ export PERL_UNICODE=D + or + use open qw(:utf8); + +=head2 ℞ 18: Make all I/O and args default to utf8 + + $ perl -CSDA ... + or + $ export PERL_UNICODE=SDA + or + use open qw(:std :utf8); + use Encode qw(decode_utf8); + @ARGV = map { decode_utf8($_, 1) } @ARGV; + +=head2 ℞ 19: Open file with specific encoding + +Specify stream encoding. This is the normal way +to deal with encoded text, not by calling low-level +functions. + + # input file + open(my $in_file, "< :encoding(UTF-16)", "wintext"); + OR + open(my $in_file, "<", "wintext"); + binmode($in_file, ":encoding(UTF-16)"); + THEN + my $line = <$in_file>; + + # output file + open($out_file, "> :encoding(cp1252)", "wintext"); + OR + open(my $out_file, ">", "wintext"); + binmode($out_file, ":encoding(cp1252)"); + THEN + print $out_file "some text\n"; + +More layers than just the encoding can be specified here. For example, +the incantation C<":raw :encoding(UTF-16LE) :crlf"> includes implicit +CRLF handling. + +=head2 ℞ 20: Unicode casing + +Unicode casing is very different from ASCII casing. + + uc("henry ⅷ") # "HENRY Ⅷ" + uc("tschüß") # "TSCHÜSS" notice ß => SS + + # both are true: + "tschüß" =~ /TSCHÜSS/i # notice ß => SS + "Σίσυφος" =~ /ΣΊΣΥΦΟΣ/i # notice Σ,σ,ς sameness + +=head2 ℞ 21: Unicode case-insensitive comparisons + +Also available in the CPAN L module, +the new C “foldcase” function from v5.16 grants +access to the same Unicode casefolding as the C +pattern modifier has always used: + + use feature "fc"; # fc() function is from v5.16 + + # sort case-insensitively + my @sorted = sort { fc($a) cmp fc($b) } @list; + + # both are true: + fc("tschüß") eq fc("TSCHÜSS") + fc("Σίσυφος") eq fc("ΣΊΣΥΦΟΣ") + +=head2 ℞ 22: Match Unicode linebreak sequence in regex + +A Unicode linebreak matches the two-character CRLF +grapheme or any of seven vertical whitespace characters. +Good for dealing with textfiles coming from different +operating systems. + + \R + + s/\R/\n/g; # normalize all linebreaks to \n + +=head2 ℞ 23: Get character category + +Find the general category of a numeric codepoint. + + use Unicode::UCD qw(charinfo); + my $cat = charinfo(0x3A3)->{category}; # "Lu" + +=head2 ℞ 24: Disabling Unicode-awareness in builtin charclasses + +Disable C<\w>, C<\b>, C<\s>, C<\d>, and the POSIX +classes from working correctly on Unicode either in this +scope, or in just one regex. + + use v5.14; + use re "/a"; + + # OR + + my($num) = $str =~ /(\d+)/a; + +Or use specific un-Unicode properties, like C<\p{ahex}> +and C<\p{POSIX_Digit>}. Properties still work normally +no matter what charset modifiers (C) +should be effect. + +=head2 ℞ 25: Match Unicode properties in regex with \p, \P + +These all match a single codepoint with the given +property. Use C<\P> in place of C<\p> to match +one codepoint lacking that property. + + \pL, \pN, \pS, \pP, \pM, \pZ, \pC + \p{Sk}, \p{Ps}, \p{Lt} + \p{alpha}, \p{upper}, \p{lower} + \p{Latin}, \p{Greek} + \p{script=Latin}, \p{script=Greek} + \p{East_Asian_Width=Wide}, \p{EA=W} + \p{Line_Break=Hyphen}, \p{LB=HY} + \p{Numeric_Value=4}, \p{NV=4} + +=head2 ℞ 26: Custom character properties + +Define at compile-time your own custom character +properties for use in regexes. + + # using private-use characters + sub In_Tengwar { "E000\tE07F\n" } + + if (/\p{In_Tengwar}/) { ... } + + # blending existing properties + sub Is_GraecoRoman_Title {<<'END_OF_SET'} + +utf8::IsLatin + +utf8::IsGreek + &utf8::IsTitle + END_OF_SET + + if (/\p{Is_GraecoRoman_Title}/ { ... } + +=head2 ℞ 27: Unicode normalization + +Typically render into NFD on input and NFC on output. Using NFKC or NFKD +functions improves recall on searches, assuming you've already done to the +same text to be searched. Note that this is about much more than just pre- +combined compatibility glyphs; it also reorders marks according to their +canonical combining classes and weeds out singletons. + + use Unicode::Normalize; + my $nfd = NFD($orig); + my $nfc = NFC($orig); + my $nfkd = NFKD($orig); + my $nfkc = NFKC($orig); + +=head2 ℞ 28: Convert non-ASCII Unicode numerics + +Unless you’ve used C or C, C<\d> matches more than +ASCII digits only, but Perl’s implicit string-to-number +conversion does not current recognize these. Here’s how to +convert such strings manually. + + use v5.14; # needed for num() function + use Unicode::UCD qw(num); + my $str = "got Ⅻ and ४५६७ and ⅞ and here"; + my @nums = (); + while (/$str =~ (\d+|\N)/g) { # not just ASCII! + push @nums, num($1); + } + say "@nums"; # 12 4567 0.875 + + use charnames qw(:full); + my $nv = num("\N{RUMI DIGIT ONE}\N{RUMI DIGIT TWO}"); + +=head2 ℞ 29: Match Unicode grapheme cluster in regex + +Programmer-visible “characters” are codepoints matched by C, +but user-visible “characters” are graphemes matched by C. + + # Find vowel *plus* any combining diacritics,underlining,etc. + my $nfd = NFD($orig); + $nfd =~ / (?=[aeiou]) \X /xi + +=head2 ℞ 30: Extract by grapheme instead of by codepoint (regex) + + # match and grab five first graphemes + my($first_five) = $str =~ /^ ( \X{5} ) /x; + +=head2 ℞ 31: Extract by grapheme instead of by codepoint (substr) + + # cpan -i Unicode::GCString + use Unicode::GCString; + my $gcs = Unicode::GCString->new($str); + my $first_five = $gcs->substr(0, 5); + +=head2 ℞ 32: Reverse string by grapheme + +Reversing by codepoint messes up diacritics, mistakenly converting +C into C<éel̂urb em̀erc> instead of into C; +so reverse by grapheme instead. Both these approaches work +right no matter what normalization the string is in: + + $str = join("", reverse $str =~ /\X/g); + + # OR: cpan -i Unicode::GCString + use Unicode::GCString; + $str = reverse Unicode::GCString->new($str); + +=head2 ℞ 33: String length in graphemes + +The string C has six graphemes but up to eight codepoints. +This counts by grapheme, not by codepoint: + + my $str = "brûlée"; + my $count = 0; + while ($str =~ /\X/g) { $count++ } + + # OR: cpan -i Unicode::GCString + use Unicode::GCString; + my $gcs = Unicode::GCString->new($str); + my $count = $gcs->length; + +=head2 ℞ 34: Unicode column-width for printing + +Perl’s C, C, and C think all +codepoints take up 1 print column, but many take 0 or 2. +Here to show that normalization makes no difference, +we print out both forms: + + use Unicode::GCString; + use Unicode::Normalize; + + my @words = qw/crème brûlée/; + @words = map { NFC($_), NFD($_) } @words; + + for my $str (@words) { + my $gcs = Unicode::GCString->new($str); + my $cols = $gcs->columns; + my $pad = " " x (10 - $cols); + say str, $pad, " |"; + } + +generates this to show that it pads correctly no matter +the normalization: + + crème | + crème | + brûlée | + brûlée | + +=head2 ℞ 35: Unicode collation + +Text sorted by numeric codepoint follows no reasonable alphabetic order; +use the UCA for sorting text. + + use Unicode::Collate; + my $col = Unicode::Collate->new(); + my @list = $col->sort(@old_list); + +See the I program from the L CPAN module +for a convenient command-line interface to this module. + +=head2 ℞ 36: Case- I accent-insensitive Unicode sort + +Specify a collation strength of level 1 to ignore case and +diacritics, only looking at the basic character. + + use Unicode::Collate; + my $col = Unicode::Collate->new(level => 1); + my @list = $col->sort(@old_list); + +=head2 ℞ 37: Unicode locale collation + +Some locales have special sorting rules. + + # either use v5.12, OR: cpan -i Unicode::Collate::Locale + use Unicode::Collate::Locale; + my $col = Unicode::Collate::Locale->new(locale => "de__phonebook"); + my @list = $col->sort(@old_list); + +The I program mentioned above accepts a C<--locale> parameter. + +=head2 ℞ 38: Making C work on text instead of codepoints + +Instead of this: + + @srecs = sort { + $b->{AGE} <=> $a->{AGE} + || + $a->{NAME} cmp $b->{NAME} + } @recs; + +Use this: + + my $coll = Unicode::Collate->new(); + for my $rec (@recs) { + $rec->{NAME_key} = $coll->getSortKey( $rec->{NAME} ); + } + @srecs = sort { + $b->{AGE} <=> $a->{AGE} + || + $a->{NAME_key} cmp $b->{NAME_key} + } @recs; + +=head2 ℞ 39: Case- I accent-insensitive comparisons + +Use a collator object to compare Unicode text by character +instead of by codepoint. + + use Unicode::Collate; + my $es = Unicode::Collate->new( + level => 1, + normalization => undef + ); + + # now both are true: + $es->eq("García", "GARCIA" ); + $es->eq("Márquez", "MARQUEZ"); + +=head2 ℞ 40: Case- I accent-insensitive locale comparisons + +Same, but in a specific locale. + + my $de = Unicode::Collate::Locale->new( + locale => "de__phonebook", + ); + + # now this is true: + $de->eq("tschüß", "TSCHUESS"); # notice ü => UE, ß => SS + +=head2 ℞ 41: Unicode linebreaking + +Break up text into lines according to Unicode rules. + + # cpan -i Unicode::LineBreak + use Unicode::LineBreak; + use charnames qw(:full); + + my $para = "This is a super\N{HYPHEN}long string. " x 20; + my $fmt = new Unicode::LineBreak; + print $fmt->break($para), "\n"; + +=head2 ℞ 42: Unicode text in DBM hashes, the tedious way + +Using a regular Perl string as a key or value for a DBM +hash will trigger a wide character exception if any codepoints +won’t fit into a byte. Here’s how to manually manage the translation: + + use DB_File; + use Encode qw(encode decode); + tie %dbhash, "DB_File", "pathname"; + + # STORE + + # assume $uni_key and $uni_value are abstract Unicode strings + my $enc_key = encode("UTF-8", $uni_key, 1); + my $enc_value = encode("UTF-8", $uni_value, 1); + $dbhash{$enc_key} = $enc_value; + + # FETCH + + # 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); + +=head2 ℞ 43: Unicode text in DBM hashes, the easy way + +Here’s how to implicitly manage the translation; all encoding +and decoding is done automatically, just as with streams that +have a particular encoding attached to them: + + use DB_File; + use DBM_Filter; + + my $dbobj = tie %dbhash, "DB_File", "pathname"; + $dbobj->Filter_Value("utf8"); # this is the magic bit + + # STORE + + # assume $uni_key and $uni_value are abstract Unicode strings + $dbhash{$uni_key} = $uni_value; + + # FETCH + + # $uni_key holds a normal Perl string (abstract Unicode) + my $uni_value = $dbhash{$uni_key}; + +=head2 ℞ 44: PROGRAM: Demo of Unicode collation and printing + +Here’s a full program showing how to make use of locale-sensitive +sorting, Unicode casing, and managing print widths when some of the +characters take up zero or two columns, not just one column each time. +When run, the following program produces this nicely aligned output: + + Crème Brûlée....... €2.00 + Éclair............. €1.60 + Fideuà............. €4.20 + Hamburger.......... €6.00 + Jamón Serrano...... €4.45 + Linguiça........... €7.00 + Pâté............... €4.15 + Pears.............. €2.00 + Pêches............. €2.25 + Smørbrød........... €5.75 + Spätzle............ €5.50 + Xoriço............. €3.00 + Γύρος.............. €6.50 + 막걸리............. €4.00 + おもち............. €2.65 + お好み焼き......... €8.00 + シュークリーム..... €1.85 + 寿司............... €9.99 + 包子............... €7.50 + +Here's that program; tested on v5.14. + + #!/usr/bin/env perl + # umenu - demo sorting and printing of Unicode food + # + # (obligatory and increasingly long preamble) + # + use utf8; + use v5.14; # for locale sorting + use strict; + use warnings; + use warnings qw(FATAL utf8); # fatalize encoding faults + use open qw(:std :utf8); # undeclared streams in UTF-8 + use charnames qw(:full :short); # unneeded in v5.16 + + # std modules + use Unicode::Normalize; # std perl distro as of v5.8 + use List::Util qw(max); # std perl distro as of v5.10 + use Unicode::Collate::Locale; # std perl distro as of v5.14 + + # cpan modules + use Unicode::GCString; # from CPAN + + # forward defs + sub pad($$$); + sub colwidth(_); + sub entitle(_); + + my %price = ( + "γύρος" => 6.50, # gyros + "pears" => 2.00, # like um, pears + "linguiça" => 7.00, # spicy sausage, Portuguese + "xoriço" => 3.00, # chorizo sausage, Catalan + "hamburger" => 6.00, # burgermeister meisterburger + "éclair" => 1.60, # dessert, French + "smørbrød" => 5.75, # sandwiches, Norwegian + "spätzle" => 5.50, # Bayerisch noodles, little sparrows + "包子" => 7.50, # bao1 zi5, steamed pork buns, Mandarin + "jamón serrano" => 4.45, # country ham, Spanish + "pêches" => 2.25, # peaches, French + "シュークリーム" => 1.85, # cream-filled pastry like eclair + "막걸리" => 4.00, # makgeolli, Korean rice wine + "寿司" => 9.99, # sushi, Japanese + "おもち" => 2.65, # omochi, rice cakes, Japanese + "crème brûlée" => 2.00, # crema catalana + "fideuà" => 4.20, # more noodles, Valencian + # (Catalan=fideuada) + "pâté" => 4.15, # gooseliver paste, French + "お好み焼き" => 8.00, # okonomiyaki, Japanese + ); + + my $width = 5 + max map { colwidth } keys %price; + + # So the Asian stuff comes out in an order that someone + # who reads those scripts won't freak out over; the + # CJK stuff will be in JIS X 0208 order that way. + my $coll = new Unicode::Collate::Locale locale => "ja"; + + for my $item ($coll->sort(keys %price)) { + print pad(entitle($item), $width, "."); + printf " €%.2f\n", $price{$item}; + } + + sub pad($$$) { + my($str, $width, $padchar) = @_; + return $str . ($padchar x ($width - colwidth($str))); + } + + sub colwidth(_) { + my($str) = @_; + return Unicode::GCString->new($str)->columns; + } + + sub entitle(_) { + my($str) = @_; + $str =~ s{ (?=\pL)(\S) (\S*) } + { ucfirst($1) . lc($2) }xge; + return $str; + } + +=head1 SEE ALSO + +See these manpages, some of which are CPAN modules: +L, L, +L, L, +L, L, L, +L, L, L, L, +L, L, +L, +L, +L, L, +L, L, +L, +L, +L, +L, +L, +L. + +The L CPAN module includes many programs +to help with working with Unicode, including +these programs to fully or partly replace standard utilities: +I instead of I, +I instead of I or I, +I instead of I, +I instead of I, +I instead of I, +and +I instead of I. +For exploring Unicode character names and character properties, +see its I, I, and I programs. +It also supplies these programs, all of which are general filters that do Unicode-y things: +I and I; +I and I; +I and I; +I, I, I, and I; +and I, I, and I. + +Finally, see the published Unicode Standard (page numbers are from version +6.0.0), including these specific annexes and technical reports: + +=over + +=item §3.13 Default Case Algorithms, page 113; +§4.2 Case, pages 120–122; +Case Mappings, page 166–172, especially Caseless Matching starting on page 170. + +=item UAX #44: Unicode Character Database + +=item UTS #18: Unicode Regular Expressions + +=item UAX #15: Unicode Normalization Forms + +=item UTS #10: Unicode Collation Algorithm + +=item UAX #29: Unicode Text Segmentation + +=item UAX #14: Unicode Line Breaking Algorithm + +=item UAX #11: East Asian Width + +=back + +=head1 AUTHOR + +Tom Christiansen Etchrist@perl.comE wrote this, with occasional +kibbitzing from Larry Wall and Jeffrey Friedl in the background. + +=head1 COPYRIGHT AND LICENCE + +Copyright © 2012 Tom Christiansen. + +This program is free software; you may redistribute it and/or modify it +under the same terms as Perl itself. + +Most of these examples taken from the current edition of the “Camel Book”; +that is, from the 4ᵗʰ Edition of I, Copyright © 2012 Tom +Christiansen , 2012-02-13 by O’Reilly Media. The code itself is +freely redistributable, and you are encouraged to transplant, fold, +spindle, and mutilate any of the examples in this manpage however you please +for inclusion into your own programs without any encumbrance whatsoever. +Acknowledgement via code comment is polite but not required. + +=head1 REVISION HISTORY + +v1.0.0 – first public release, 2012-02-27 + diff --git a/gnu/usr.bin/perl/pod/perluniintro.pod b/gnu/usr.bin/perl/pod/perluniintro.pod index 4348663e3f0..244cd38cb3a 100644 --- a/gnu/usr.bin/perl/pod/perluniintro.pod +++ b/gnu/usr.bin/perl/pod/perluniintro.pod @@ -473,13 +473,13 @@ its argument so that Unicode characters with code points greater than displayed as C<\x..>, and the rest of the characters as themselves: sub nice_string { - join("", - map { $_ > 255 ? # if wide character... - sprintf("\\x{%04X}", $_) : # \x{...} - chr($_) =~ /[[:cntrl:]]/ ? # else if control character... - sprintf("\\x%02X", $_) : # \x.. - quotemeta(chr($_)) # else quoted or as themselves - } unpack("W*", $_[0])); # unpack Unicode characters + join("", + map { $_ > 255 # if wide character... + ? sprintf("\\x{%04X}", $_) # \x{...} + : chr($_) =~ /[[:cntrl:]]/ # else if control character... + ? sprintf("\\x%02X", $_) # \x.. + : quotemeta(chr($_)) # else quoted or as themselves + } unpack("W*", $_[0])); # unpack Unicode characters } For example, diff --git a/gnu/usr.bin/perl/regen/feature.pl b/gnu/usr.bin/perl/regen/feature.pl index fccfc2da166..cb2fc40ea0f 100644 --- a/gnu/usr.bin/perl/regen/feature.pl +++ b/gnu/usr.bin/perl/regen/feature.pl @@ -361,7 +361,7 @@ read_only_bottom_close_and_rename($h); __END__ package feature; -our $VERSION = '1.36'; +our $VERSION = '1.36_01'; FEATURES @@ -561,6 +561,27 @@ and C syntax. See L for details. This feature is available from Perl 5.18 onwards. +=head2 The 'postderef' and 'postderef_qq' features + +B: This feature is still experimental and the implementation may +change in future versions of Perl. For this reason, Perl will +warn when you use the feature, unless you have explicitly disabled the +warning: + + no warnings "experimental::postderef"; + +The 'postderef' feature allows the use of L. For example, it will make the +following two statements equivalent: + + my @x = @{ $h->{a} }; + my @x = $h->{a}->@*; + +The 'postderef_qq' feature extends this, for array and scalar dereference, to +working inside of double-quotish interpolations. + +This feature is available from Perl 5.20 onwards. + =head2 The 'signatures' feature B: This feature is still experimental and the implementation may diff --git a/gnu/usr.bin/perl/t/comp/parser.t b/gnu/usr.bin/perl/t/comp/parser.t index 7caa116c7d2..584a473f62b 100644 --- a/gnu/usr.bin/perl/t/comp/parser.t +++ b/gnu/usr.bin/perl/t/comp/parser.t @@ -499,6 +499,9 @@ eval 'for my a1b $i (1) {}'; # ng: 'Missing $ on loop variable' like $@, "^No such class a1b at ", 'TYPE of my of for statement'; +# Used to crash [perl #123542] +eval 's /${<>{}) //'; + # Add new tests HERE (above this line) # bug #74022: Loop on characters in \p{OtherIDContinue} diff --git a/gnu/usr.bin/perl/t/io/eintr.t b/gnu/usr.bin/perl/t/io/eintr.t index 9ea9cc7879d..32f109dd225 100644 --- a/gnu/usr.bin/perl/t/io/eintr.t +++ b/gnu/usr.bin/perl/t/io/eintr.t @@ -95,11 +95,16 @@ alarm(0); ok(!$st, 'read/die: read status'); ok(close($in), 'read/die: close status'); +# This used to be 1_000_000, but on Linux/ppc64 (POWER7) this kept +# consistently failing. At exactly 0x100000 it started passing +# again. We're hoping this number is bigger than any pipe buffer. +my $surely_this_arbitrary_number_is_fine = 0x100000; + # close during print fresh_io; $SIG{ALRM} = sub { $sigst = close($out) ? "ok" : "nok" }; -$buf = "a" x 1_000_000 . "\n"; # bigger than any pipe buffer hopefully +$buf = "a" x $surely_this_arbitrary_number_is_fine . "\n"; select $out; $| = 1; select STDOUT; alarm(1); $st = print $out $buf; @@ -112,7 +117,7 @@ ok(!close($out), 'print/close: close status'); fresh_io; $SIG{ALRM} = sub { die }; -$buf = "a" x 1_000_000 . "\n"; # bigger than any pipe buffer hopefully +$buf = "a" x $surely_this_arbitrary_number_is_fine . "\n"; select $out; $| = 1; select STDOUT; alarm(1); $st = eval { print $out $buf }; diff --git a/gnu/usr.bin/perl/t/lib/warnings/pp_sys b/gnu/usr.bin/perl/t/lib/warnings/pp_sys index 0891a393bea..69993275a2d 100644 --- a/gnu/usr.bin/perl/t/lib/warnings/pp_sys +++ b/gnu/usr.bin/perl/t/lib/warnings/pp_sys @@ -105,6 +105,10 @@ Non-string passed as bitmask [pp_sselect] + %s too large [pp_gmtime] + + %s failed [pp_gmtime] + __END__ # pp_sys.c [pp_untie] use warnings 'untie' ; @@ -893,3 +897,23 @@ telldir() attempted on invalid dirhandle $foo at - line 20. seekdir() attempted on invalid dirhandle $foo at - line 21. rewinddir() attempted on invalid dirhandle $foo at - line 22. closedir() attempted on invalid dirhandle $foo at - line 23. +######## +# pp_sys.c [pp_gmtime] +BEGIN { + print < \&quire } + ok "quires" =~ bless([], o::), 'state sub used as overload method'; +} +{ + local $ENV{PERL5DB} = 'sub DB::DB{}'; + is( + runperl( + switches => [ '-d' ], + progs => [ split "\n", + 'use feature qw - lexical_subs state -; + no warnings q-experimental::lexical_subs-; + sub DB::sub{ print qq|4\n|; goto $DB::sub } + state sub foo {print qq|2\n|} + foo(); + ' + ], + stderr => 1 + ), + "4\n2\n", + 'state subs and DB::sub under -d' + ); +} # -------------------- my -------------------- # @@ -606,6 +639,40 @@ like runperl( ), qr/syntax error/, 'referencing a my sub after a syntax error does not crash'; +{ + state $stuff; + package A { + my sub foo{ $stuff .= our $AUTOLOAD } + *A::AUTOLOAD = \&foo; + } + A::bar(); + is $stuff, 'A::bar', 'my sub assigned to *AUTOLOAD can autoload'; +} +{ + my sub quire{qr "quires"} + package mo { use overload qr => \&quire } + ok "quires" =~ bless([], mo::), 'my sub used as overload method'; +} + +{ + local $ENV{PERL5DB} = 'sub DB::DB{}'; + is( + runperl( + switches => [ '-d' ], + progs => [ split "\n", + 'use feature qw - lexical_subs state -; + no warnings q-experimental::lexical_subs-; + sub DB::sub{ print qq|4\n|; goto $DB::sub } + my sub foo {print qq|2\n|} + foo(); + ' + ], + stderr => 1 + ), + "4\n2\n", + 'my subs and DB::sub under -d' + ); +} # -------------------- Interactions (and misc tests) -------------------- # diff --git a/gnu/usr.bin/perl/t/op/state.t b/gnu/usr.bin/perl/t/op/state.t index b4542e1352d..81e5486867a 100644 --- a/gnu/usr.bin/perl/t/op/state.t +++ b/gnu/usr.bin/perl/t/op/state.t @@ -9,7 +9,7 @@ BEGIN { use strict; -plan tests => 136; +plan tests => 137; # Before loading feature.pm, test it with CORE:: ok eval 'CORE::state $x = 1;', 'CORE::state outside of feature.pm scope'; @@ -446,6 +446,14 @@ foreach my $forbidden () { thing2(6); } +# [perl #123029] regression in "state" under PERL_NO_COW +sub rt_123029 { + state $s; + $s = 'foo'x500; + my $c = $s; + return defined $s; +} +ok(rt_123029(), "state variables don't surprisingly disappear when accessed"); __DATA__ state ($a) = 1; diff --git a/gnu/usr.bin/perl/t/op/svleak.t b/gnu/usr.bin/perl/t/op/svleak.t index 3b8df477f8d..74a8338dae9 100644 --- a/gnu/usr.bin/perl/t/op/svleak.t +++ b/gnu/usr.bin/perl/t/op/svleak.t @@ -15,7 +15,7 @@ BEGIN { use Config; -plan tests => 127; +plan tests => 128; # run some code N times. If the number of SVs at the end of loop N is # greater than (N-1)*delta at the end of loop 1, we've got a leak @@ -256,6 +256,7 @@ eleak(2,0,'/[pp]/'); eleak(2,0,'/[[:ascii:]]/'); eleak(2,0,'/[[.zog.]]/'); eleak(2,0,'/[.zog.]/'); +eleak(2,0,'/|\W/', '/|\W/ [perl #123198]'); eleak(2,0,'no warnings; /(?[])/'); eleak(2,0,'no warnings; /(?[[a]+[b]])/'); eleak(2,0,'no warnings; /(?[[a]-[b]])/'); diff --git a/gnu/usr.bin/perl/t/op/yadayada.t b/gnu/usr.bin/perl/t/op/yadayada.t index 770a51ea90f..a213bec2beb 100755 --- a/gnu/usr.bin/perl/t/op/yadayada.t +++ b/gnu/usr.bin/perl/t/op/yadayada.t @@ -8,14 +8,39 @@ BEGIN { use strict; -plan 5; +plan 9; -my $err = "Unimplemented at $0 line " . ( __LINE__ + 2 ) . ".\n"; +my $err; +my $err1 = "Unimplemented at $0 line "; +my $err2 = ".\n"; +$err = $err1 . ( __LINE__ + 1 ) . $err2; eval { ... }; +is $@, $err, "Execution of ellipsis statement reported 'Unimplemented' code"; +$@ = ''; -is $@, $err; +note("RT #122661: Semicolon before ellipsis statement disambiguates to indicate block rather than hash reference"); +my @input = (3..5); +my @transformed; +$err = $err1 . ( __LINE__ + 1 ) . $err2; +eval { @transformed = map {; ... } @input; }; +is $@, $err, "Disambiguation case 1"; +$@ = ''; +$err = $err1 . ( __LINE__ + 1 ) . $err2; +eval { @transformed = map {;...} @input; }; +is $@, $err, "Disambiguation case 2"; +$@ = ''; + +$err = $err1 . ( __LINE__ + 1 ) . $err2; +eval { @transformed = map {; ...} @input; }; +is $@, $err, "Disambiguation case 3"; +$@ = ''; + +$err = $err1 . ( __LINE__ + 1 ) . $err2; +eval { @transformed = map {;... } @input; }; +is $@, $err, "Disambiguation case 4"; +$@ = ''; # # Regression tests, making sure ... is still parsable as an operator. diff --git a/gnu/usr.bin/perl/t/porting/corelist.t b/gnu/usr.bin/perl/t/porting/corelist.t index bff1b69bc1c..251a2603cc1 100644 --- a/gnu/usr.bin/perl/t/porting/corelist.t +++ b/gnu/usr.bin/perl/t/porting/corelist.t @@ -8,10 +8,11 @@ use Config; require 't/test.pl'; -plan(tests => 5); +plan(tests => 6); use_ok('Module::CoreList'); use_ok('Module::CoreList::Utils'); +use_ok('Module::CoreList::TieHashDelta'); { no warnings 'once'; diff --git a/gnu/usr.bin/perl/t/porting/diag.t b/gnu/usr.bin/perl/t/porting/diag.t index d3e0021b7a7..e7df6ec67a1 100755 --- a/gnu/usr.bin/perl/t/porting/diag.t +++ b/gnu/usr.bin/perl/t/porting/diag.t @@ -483,7 +483,6 @@ Can't fix broken locale name "%s" Can't get short module name from a handle Can't load DLL `%s', possible problematic module `%s' Can't locate %s: %s -Can't locate object method "%s" via package "%s" (perhaps you forgot to load "%s"?) Can't pipe "%s": %s Can't set type on DOS Can't spawn: %s diff --git a/gnu/usr.bin/perl/t/porting/known_pod_issues.dat b/gnu/usr.bin/perl/t/porting/known_pod_issues.dat index 34fd676df4a..b2a8a2b4b09 100644 --- a/gnu/usr.bin/perl/t/porting/known_pod_issues.dat +++ b/gnu/usr.bin/perl/t/porting/known_pod_issues.dat @@ -85,7 +85,10 @@ IPC::Signal kill(3) langinfo(3) LaTeX::Encode +Lingua::JA::Romanize::Japanese Lingua::KO::Hangul::Util +Lingua::KO::Romanize::Hangul +Lingua::ZH::Romanize::Pinyin List::Gather local::lib Log::Message @@ -190,10 +193,13 @@ Time::Object Tk Tk::Pod tty(1) +Unicode::CaseFold Unicode::Casing +Unicode::GCString Unicode::LineBreak Unicode::Regex::Set Unicode::Semantics +Unicode::Tussle Unicode::Unihan unzip(1) Version::Requirements diff --git a/gnu/usr.bin/perl/t/porting/podcheck.t b/gnu/usr.bin/perl/t/porting/podcheck.t index cd9057d7c6c..625d9c81708 100755 --- a/gnu/usr.bin/perl/t/porting/podcheck.t +++ b/gnu/usr.bin/perl/t/porting/podcheck.t @@ -22,6 +22,10 @@ BEGIN { print "1..0 # Not all files are available during cross-compilation\n"; exit 0; } + if ($^O eq 'dec_osf') { + print "1..0 # $^O cannot handle this test\n"; + exit 0; + } require '../regen/regen_lib.pl'; } diff --git a/gnu/usr.bin/perl/t/porting/regen.t b/gnu/usr.bin/perl/t/porting/regen.t index f57b8da690e..048a0c0e7d1 100644 --- a/gnu/usr.bin/perl/t/porting/regen.t +++ b/gnu/usr.bin/perl/t/porting/regen.t @@ -15,6 +15,9 @@ $::NO_ENDING = $::NO_ENDING = 1; if ( $^O eq "VMS" ) { skip_all( "- regen.pl needs porting." ); } +if ($^O eq 'dec_osf') { + skip_all("$^O cannot handle this test"); +} use Config; if ( $Config{usecrosscompile} ) { skip_all( "Not all files are available during cross-compilation" ); diff --git a/gnu/usr.bin/perl/t/re/fold_grind.t b/gnu/usr.bin/perl/t/re/fold_grind.t index a7a846cb8bd..74372958557 100644 --- a/gnu/usr.bin/perl/t/re/fold_grind.t +++ b/gnu/usr.bin/perl/t/re/fold_grind.t @@ -8,6 +8,9 @@ BEGIN { require './test.pl'; require Config; import Config; skip_all_if_miniperl("no dynamic loading on miniperl, no Encode nor POSIX"); + if ($^O eq 'dec_osf') { + skip_all("$^O cannot handle this test"); + } require './loc_tools.pl'; } diff --git a/gnu/usr.bin/perl/t/re/pat_psycho.t b/gnu/usr.bin/perl/t/re/pat_psycho.t index 55c8776e115..fada30293f1 100755 --- a/gnu/usr.bin/perl/t/re/pat_psycho.t +++ b/gnu/usr.bin/perl/t/re/pat_psycho.t @@ -21,10 +21,14 @@ BEGIN { chdir 't' if -d 't'; @INC = ('../lib','.'); require './test.pl'; + if ($^O eq 'dec_osf') { + skip_all("$^O cannot handle this test"); + } } skip_all('$PERL_SKIP_PSYCHO_TEST set') if $ENV{PERL_SKIP_PSYCHO_TEST}; + plan tests => 15; # Update this when adding/deleting tests. run_tests() unless caller; diff --git a/gnu/usr.bin/perl/t/re/re_tests b/gnu/usr.bin/perl/t/re/re_tests index d6a8b1204ab..d883add8f0f 100644 --- a/gnu/usr.bin/perl/t/re/re_tests +++ b/gnu/usr.bin/perl/t/re/re_tests @@ -1885,6 +1885,7 @@ A+(*PRUNE)BC(?{}) AAABC y $& AAABC [bcd].{2,3}aaaa Xb\x{100}aaaaa y - - '\Awibble\z'm wibble y - - /(alias|status)es$/i Statuses y $1 Status # [perl #121778] +(.)(?{$~=$^N}) \x{100} y $~ \x{100} # [perl #123135] # Keep these lines at the end of the file # vim: softtabstop=0 noexpandtab diff --git a/gnu/usr.bin/perl/t/re/rt122747.t b/gnu/usr.bin/perl/t/re/rt122747.t new file mode 100644 index 00000000000..b839edd899e --- /dev/null +++ b/gnu/usr.bin/perl/t/re/rt122747.t @@ -0,0 +1,29 @@ +#!./perl +use strict; +use warnings; + +$| = 1; + + +BEGIN { + chdir 't' if -d 't'; + @INC = ('../lib','.','../ext/re'); + require './test.pl'; +} + +plan tests => 3; +use strict; + +my(@body) = ( + "", + "A\x{B9}ker\x{E8}eva xxxx.xxxx\@outlook.com \x{201D}", +); + +for (@body) { + s{ | \s{1,10} (?!phone) [a-z]{2,11} : ) }{ }xgi; + my $got= $1; + is( $got, '.xxxx@outlook.com' ); +} +ok("got to the end without dieing (note without DEBUGGING passing this test means nothing)"); + diff --git a/gnu/usr.bin/perl/t/re/rxcode.t b/gnu/usr.bin/perl/t/re/rxcode.t index 19a859ba390..42cece59f3c 100755 --- a/gnu/usr.bin/perl/t/re/rxcode.t +++ b/gnu/usr.bin/perl/t/re/rxcode.t @@ -6,7 +6,7 @@ BEGIN { require './test.pl'; } -plan tests => 40; +plan tests => 42; $^R = undef; like( 'a', qr/^a(?{1})(?:b(?{2}))?/, 'a =~ ab?' ); @@ -95,3 +95,10 @@ cmp_ok( scalar(@var), '==', 0, '..still nothing pushed (package)' ); # [perl #78194] $_ in code block aliasing op return values "$_" =~ /(?{ is \$_, \$_, '[perl #78194] \$_ == \$_ when $_ aliases "$x"' })/; + +@a = 1..3; +like eval { qr/@a(?{})/ }, qr/1 2 3\(\?\{\}\)/, 'qr/@a(?{})/'; + +# Not a code block, but looks a bit like one. (Failed an assertion from +# 5.17.1 to 5.21.6.) +ok "(?{" =~ qr/\Q(?{/, 'qr/\Q(?{/'; diff --git a/gnu/usr.bin/perl/t/re/uniprops.t b/gnu/usr.bin/perl/t/re/uniprops.t index 927f8a7ce12..2f1cb441da3 100755 --- a/gnu/usr.bin/perl/t/re/uniprops.t +++ b/gnu/usr.bin/perl/t/re/uniprops.t @@ -2,6 +2,11 @@ use strict; use warnings; no warnings 'once'; +if ($^O eq 'dec_osf') { + print "1..0 # $^O cannot handle this test\n"; + exit(0); +} + # This is a wrapper for a generated file. Assumes being run from 't' # directory. diff --git a/gnu/usr.bin/perl/t/run/switchd.t b/gnu/usr.bin/perl/t/run/switchd.t index b5d4d42f9a3..d24d98b54b8 100644 --- a/gnu/usr.bin/perl/t/run/switchd.t +++ b/gnu/usr.bin/perl/t/run/switchd.t @@ -9,7 +9,7 @@ BEGIN { require "./test.pl"; } # This test depends on t/lib/Devel/switchd*.pm. -plan(tests => 18); +plan(tests => 19); my $r; @@ -275,3 +275,13 @@ is( "42\n", 'UTF8 length caches on $DB::sub are flushed' ); + +# [perl #122771] -d conflicting with sort optimisations +is( + runperl( + switches => [ '-Ilib', '-d:switchd_empty' ], + prog => 'BEGIN { $^P &= ~0x4 } sort { $$b <=> $$a } (); print qq-42\n-', + ), + "42\n", + '-d does not conflict with sort optimisations' +); diff --git a/gnu/usr.bin/perl/utf8.c b/gnu/usr.bin/perl/utf8.c index e97115f4c9c..d0767990ae5 100644 --- a/gnu/usr.bin/perl/utf8.c +++ b/gnu/usr.bin/perl/utf8.c @@ -2509,6 +2509,14 @@ Perl_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 minbits SV* Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 minbits, I32 none, SV* invlist, U8* const flags_p) { + + /*NOTE NOTE NOTE - If you want to use "return" in this routine you MUST + * use the following define */ + +#define CORE_SWASH_INIT_RETURN(x) \ + PL_curpm= old_PL_curpm; \ + return x + /* Initialize and return a swash, creating it if necessary. It does this * by calling utf8_heavy.pl in the general case. The returned value may be * the swash's inversion list instead if the input parameters allow it. @@ -2554,6 +2562,8 @@ Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 m * is only valid for binary properties */ dVAR; + PMOP *old_PL_curpm= PL_curpm; /* save away the old PL_curpm */ + SV* retval = &PL_sv_undef; HV* swash_hv = NULL; const int invlist_swash_boundary = @@ -2565,6 +2575,10 @@ Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 m assert(listsv != &PL_sv_undef || strNE(name, "") || invlist); assert(! invlist || minbits == 1); + PL_curpm= NULL; /* reset PL_curpm so that we dont get confused between the regex + that triggered the swash init and the swash init perl logic itself. + See perl #122747 */ + /* If data was passed in to go out to utf8_heavy to find the swash of, do * so */ if (listsv != &PL_sv_undef || strNE(name, "")) { @@ -2653,7 +2667,7 @@ Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 m /* If caller wants to handle missing properties, let them */ if (flags_p && *flags_p & _CORE_SWASH_INIT_RETURN_IF_UNDEF) { - return NULL; + CORE_SWASH_INIT_RETURN(NULL); } Perl_croak(aTHX_ "Can't find Unicode property definition \"%"SVf"\"", @@ -2755,7 +2769,8 @@ Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 m } } - return retval; + CORE_SWASH_INIT_RETURN(retval); +#undef CORE_SWASH_INIT_RETURN } diff --git a/gnu/usr.bin/perl/vms/descrip_mms.template b/gnu/usr.bin/perl/vms/descrip_mms.template index 69a898cc914..309ffab4736 100644 --- a/gnu/usr.bin/perl/vms/descrip_mms.template +++ b/gnu/usr.bin/perl/vms/descrip_mms.template @@ -319,7 +319,7 @@ x2p : [.x2p]$(DBG)a2p$(E) [.x2p]s2p.com [.x2p]find2perl.com extra.pods : miniperl @ @extra_pods.com -PERLDELTA_CURRENT = [.pod]perl5201delta.pod +PERLDELTA_CURRENT = [.pod]perl5202delta.pod $(PERLDELTA_CURRENT) : [.pod]perldelta.pod Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT) diff --git a/gnu/usr.bin/perl/win32/config_H.ce b/gnu/usr.bin/perl/win32/config_H.ce index e2837a60021..196f419ab7f 100644 --- a/gnu/usr.bin/perl/win32/config_H.ce +++ b/gnu/usr.bin/perl/win32/config_H.ce @@ -227,7 +227,7 @@ * This symbol, if defined, indicates that the localeconv routine is * available for numeric and monetary formatting conventions. */ -#define HAS_LOCALECONV /**/ +/*#define HAS_LOCALECONV /**/ /* HAS_LOCKF: * This symbol, if defined, indicates that the lockf routine is -- 2.20.1