From 954e324cd185fdfac1d70cd2e41e43d6877a6185 Mon Sep 17 00:00:00 2001 From: DongHun Kwak Date: Wed, 28 Jun 2017 10:49:13 +0900 Subject: [PATCH] Imported Upstream version 5.25.6 Change-Id: Ia399c5f3926f6d1fee6c79138b57111cf20edd0f Signed-off-by: DongHun Kwak --- AUTHORS | 1 + Configure | 20 +- Cross/config.sh-arm-linux | 40 +- Cross/config.sh-arm-linux-n770 | 40 +- INSTALL | 28 +- MANIFEST | 32 +- META.json | 2 +- META.yml | 2 +- Makefile.SH | 8 +- NetWare/Makefile | 4 +- NetWare/config_H.wc | 10 +- Porting/Glossary | 3 + Porting/Maintainers.pl | 37 +- Porting/README.pod | 5 + Porting/bench.pl | 7 +- Porting/config.sh | 42 +- Porting/config_H | 18 +- Porting/deparse-skips.txt | 1 - Porting/epigraphs.pod | 85 ++ Porting/exec-bit.txt | 1 + Porting/harness-timer-report.pl | 239 +++ Porting/release_schedule.pod | 2 +- Porting/todo.pod | 4 +- README.haiku | 4 +- README.macosx | 8 +- README.os2 | 2 +- README.vms | 4 +- amigaos4/amigaio.c | 2 +- autodoc.pl | 7 +- av.c | 23 +- charclass_invlists.h | 2 +- config_h.SH | 6 + cpan/Archive-Tar/bin/ptar | 8 +- cpan/Archive-Tar/lib/Archive/Tar.pm | 2 +- cpan/Archive-Tar/lib/Archive/Tar/Constant.pm | 2 +- cpan/Archive-Tar/lib/Archive/Tar/File.pm | 2 +- cpan/Archive-Tar/t/09_roundtrip.t | 139 +- cpan/B-Debug/t/debug.t | 6 +- cpan/HTTP-Tiny/lib/HTTP/Tiny.pm | 50 +- cpan/Scalar-List-Utils/ListUtil.xs | 10 + cpan/Scalar-List-Utils/lib/List/Util.pm | 10 +- cpan/Scalar-List-Utils/lib/List/Util/XS.pm | 2 +- cpan/Scalar-List-Utils/lib/Scalar/Util.pm | 2 +- cpan/Scalar-List-Utils/lib/Sub/Util.pm | 2 +- cpan/Scalar-List-Utils/t/00version.t | 9 +- cpan/Scalar-List-Utils/t/min.t | 20 +- cpan/Test-Simple/lib/Test/Builder.pm | 7 +- cpan/Test-Simple/lib/Test/Builder/Formatter.pm | 2 +- cpan/Test-Simple/lib/Test/Builder/Module.pm | 2 +- cpan/Test-Simple/lib/Test/Builder/Tester.pm | 11 +- cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm | 2 +- cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm | 2 +- cpan/Test-Simple/lib/Test/More.pm | 6 +- cpan/Test-Simple/lib/Test/Simple.pm | 2 +- cpan/Test-Simple/lib/Test/Tester.pm | 5 +- cpan/Test-Simple/lib/Test/Tester/Capture.pm | 2 +- cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm | 2 +- cpan/Test-Simple/lib/Test/Tester/Delegate.pm | 2 +- cpan/Test-Simple/lib/Test/use/ok.pm | 2 +- cpan/Test-Simple/lib/Test2.pm | 2 +- cpan/Test-Simple/lib/Test2/API.pm | 10 +- cpan/Test-Simple/lib/Test2/API/Breakage.pm | 2 +- cpan/Test-Simple/lib/Test2/API/Context.pm | 15 +- cpan/Test-Simple/lib/Test2/API/Instance.pm | 2 +- cpan/Test-Simple/lib/Test2/API/Stack.pm | 2 +- cpan/Test-Simple/lib/Test2/Event.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Bail.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Diag.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Exception.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Generic.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Info.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Note.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Ok.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Plan.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Skip.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Subtest.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Waiting.pm | 2 +- cpan/Test-Simple/lib/Test2/Formatter.pm | 2 +- cpan/Test-Simple/lib/Test2/Formatter/TAP.pm | 2 +- cpan/Test-Simple/lib/Test2/Hub.pm | 2 +- cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm | 2 +- .../lib/Test2/Hub/Interceptor/Terminator.pm | 2 +- cpan/Test-Simple/lib/Test2/Hub/Subtest.pm | 2 +- cpan/Test-Simple/lib/Test2/IPC.pm | 2 +- cpan/Test-Simple/lib/Test2/IPC/Driver.pm | 2 +- cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm | 2 +- cpan/Test-Simple/lib/Test2/Util.pm | 2 +- cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm | 2 +- cpan/Test-Simple/lib/Test2/Util/HashBase.pm | 2 +- cpan/Test-Simple/lib/Test2/Util/Trace.pm | 2 +- cpan/Test-Simple/lib/ok.pm | 2 +- cpan/Test-Simple/t/Legacy/is_deeply_fail.t | 10 +- cpan/Test-Simple/t/Test2/behavior/special_names.t | 32 - cpan/Test-Simple/t/Test2/legacy/TAP.t | 32 - .../Test-Simple/t/Test2/modules/IPC/Driver/Files.t | 20 +- .../t/regression/721-nested-streamed-subtest.t | 96 ++ cpan/Test-Simple/t/tools.pl | 34 +- cpan/parent/lib/parent.pm | 6 +- cpan/parent/t/parent-pmc.t | 24 +- cpan/parent/t/rt62341.t.disabled | 101 ++ cpan/podlators/lib/Pod/Man.pm | 58 +- cpan/podlators/lib/Pod/ParseLink.pm | 2 +- cpan/podlators/lib/Pod/Text.pm | 2 +- cpan/podlators/lib/Pod/Text/Color.pm | 2 +- cpan/podlators/lib/Pod/Text/Overstrike.pm | 2 +- cpan/podlators/lib/Pod/Text/Termcap.pm | 2 +- cpan/podlators/scripts/pod2man.PL | 37 +- cpan/podlators/t/data/basic.cap | 2 - cpan/podlators/t/data/basic.clr | 2 - cpan/podlators/t/data/basic.man | 2 - cpan/podlators/t/data/basic.ovr | 2 - cpan/podlators/t/data/basic.pod | 2 - cpan/podlators/t/data/basic.txt | 2 - .../t/data/snippets/man/bullet-after-nonbullet | 25 + cpan/podlators/t/data/snippets/man/error-die | 27 + cpan/podlators/t/data/snippets/man/error-none | 21 + cpan/podlators/t/data/snippets/man/error-normal | 24 + cpan/podlators/t/data/snippets/man/error-pod | 27 + cpan/podlators/t/data/snippets/man/error-stderr | 24 + .../podlators/t/data/snippets/man/error-stderr-opt | 24 + cpan/podlators/t/data/snippets/man/fixed-font | 18 + cpan/podlators/t/data/snippets/man/long-quote | 16 + .../podlators/t/data/snippets/man/lquote-and-quote | 17 + cpan/podlators/t/data/snippets/man/lquote-rquote | 17 + cpan/podlators/t/data/snippets/man/nourls | 15 + cpan/podlators/t/data/snippets/man/rquote-none | 16 + cpan/podlators/t/lib/Test/Podlators.pm | 2 +- cpan/podlators/t/lib/Test/RRA.pm | 2 +- cpan/podlators/t/lib/Test/RRA/Config.pm | 26 +- cpan/podlators/t/lib/Test/RRA/ModuleVersion.pm | 2 +- cpan/podlators/t/man/basic.t | 25 +- cpan/podlators/t/man/devise-title.t | 6 +- cpan/podlators/t/man/options.t | 268 +--- dist/Data-Dumper/Dumper.pm | 4 +- dist/Data-Dumper/Dumper.xs | 4 +- dist/Module-CoreList/Changes | 3 + dist/Module-CoreList/corelist | 8 +- dist/Module-CoreList/lib/Module/CoreList.pm | 99 +- .../lib/Module/CoreList/TieHashDelta.pm | 2 +- dist/Module-CoreList/lib/Module/CoreList/Utils.pm | 9 +- dist/Net-Ping/Changes | 69 +- dist/Net-Ping/lib/Net/Ping.pm | 1012 ++++++++++--- dist/Net-Ping/t/000_load.t | 16 + dist/Net-Ping/t/001_new.t | 64 + dist/Net-Ping/t/010_pingecho.t | 8 + dist/Net-Ping/t/100_load.t | 12 - dist/Net-Ping/t/110_icmp_inst.t | 13 +- dist/Net-Ping/t/500_ping_icmp.t | 12 +- dist/Net-Ping/t/520_icmp_ttl.t | 13 +- dist/PathTools/Makefile.PL | 8 +- dist/Safe/t/safeops.t | 1 - dist/Storable/Storable.pm | 2 +- dist/Storable/Storable.xs | 4 +- dist/Tie-File/t/29_downcopy.t | 5 + dist/Time-HiRes/Changes | 8 + dist/Time-HiRes/HiRes.pm | 2 +- dist/Time-HiRes/HiRes.xs | 14 +- dist/Time-HiRes/Makefile.PL | 26 + dist/Time-HiRes/t/utime.t | 43 +- doio.c | 12 +- doop.c | 4 +- dump.c | 23 +- embed.fnc | 80 +- embed.h | 26 +- ext/B/B.pm | 2 +- ext/B/B.xs | 27 +- ext/B/B/Concise.pm | 121 +- ext/B/t/b.t | 3 +- ext/B/t/optree_concise.t | 4 +- ext/B/t/optree_misc.t | 40 +- ext/B/t/optree_samples.t | 4 +- ext/B/t/optree_varinit.t | 4 +- ext/B/t/walkoptree.t | 6 +- ext/Devel-Peek/Peek.pm | 2 +- ext/Devel-Peek/Peek.xs | 28 +- ext/Opcode/Opcode.pm | 4 +- ext/POSIX/Makefile.PL | 14 +- ext/POSIX/POSIX.xs | 84 +- ext/POSIX/lib/POSIX.pm | 2 +- ext/POSIX/t/math.t | 170 ++- ext/PerlIO-encoding/encoding.pm | 2 +- ext/PerlIO-encoding/encoding.xs | 2 +- ext/VMS-Stdio/Stdio.pm | 2 +- ext/VMS-Stdio/Stdio.xs | 6 +- ext/XS-APItest/APItest.pm | 2 +- ext/XS-APItest/APItest.xs | 241 ++- ext/XS-APItest/t/utf8.t | 1453 +++++++++++++----- ext/attributes/attributes.pm | 2 +- ext/attributes/attributes.xs | 8 +- ext/mro/mro.pm | 2 +- ext/mro/mro.xs | 6 +- ext/re/t/regop.t | 2 +- gv.c | 108 +- handy.h | 29 +- hints/catamount.sh | 4 +- hints/darwin.sh | 13 +- hv.c | 2 +- hv.h | 20 + inline.h | 523 ++++++- intrpvar.h | 14 +- lib/B/Deparse.pm | 91 +- lib/B/Deparse.t | 26 + lib/B/Op_private.pm | 31 +- lib/overload.pm | 8 +- lib/unicore/mktables | 60 +- lib/utf8.t | 2 +- locale.c | 4 +- mg.c | 12 +- mro_core.c | 14 +- numeric.c | 29 +- op.c | 364 +++-- op.h | 8 +- opcode.h | 435 +++--- opnames.h | 769 +++++----- os2/OS2/OS2-REXX/DLL/DLL.pm | 2 +- os2/OS2/OS2-REXX/DLL/DLL.xs | 2 +- os2/os2.c | 18 +- pad.c | 124 +- pad.h | 8 +- patchlevel.h | 4 +- perl.c | 25 +- perl.h | 252 ++-- perly.act | 1579 +++++++++++--------- perly.h | 299 ++-- perly.tab | 1448 ++++++++---------- perly.y | 78 +- plan9/config.plan9 | 10 +- plan9/config_sh.sample | 38 +- pod/.gitignore | 2 +- pod/perl.pod | 1 + pod/perl5255delta.pod | 326 ++++ pod/perldelta.pod | 339 +++-- pod/perldiag.pod | 24 +- pod/perlguts.pod | 2 +- pod/perlhacktut.pod | 2 +- pod/perlhist.pod | 3 + pod/perlrun.pod | 2 +- pod/perlsec.pod | 14 +- pp.c | 82 +- pp_ctl.c | 33 +- pp_hot.c | 39 +- pp_pack.c | 2 +- pp_proto.h | 1 - pp_sys.c | 16 +- proto.h | 78 +- regcharclass.h | 2 +- regcomp.c | 299 ++-- regen/embed.pl | 14 +- regen/op_private | 27 +- regen/opcodes | 7 +- regexec.c | 129 +- regexp.h | 5 +- scope.h | 12 +- sv.c | 70 +- sv.h | 10 +- t/io/utf8.t | 2 +- t/lib/warnings/9uninit | 8 + t/lib/warnings/utf8 | 6 +- t/op/gv.t | 19 +- t/op/lex.t | 16 +- t/op/pack.t | 2 +- t/op/split.t | 89 +- t/op/utf8decode.t | 92 +- t/perf/benchmarks | 40 + t/perf/opcount.t | 27 +- t/perf/optree.t | 7 +- t/porting/customized.dat | 5 - t/porting/known_pod_issues.dat | 4 +- t/porting/libperl.t | 2 +- t/porting/podcheck.t | 1 + t/re/fold_grind.t | 1 + t/re/pat_psycho.t | 1 + t/re/re_tests | 3 + t/re/regex_sets.t | 5 + t/re/{uniprops.t => uniprops01.t} | 9 +- t/re/uniprops02.t | 40 + t/re/uniprops03.t | 40 + t/re/uniprops04.t | 40 + t/re/uniprops05.t | 40 + t/re/uniprops06.t | 40 + t/re/uniprops07.t | 40 + t/re/uniprops08.t | 40 + t/re/uniprops09.t | 40 + t/re/uniprops10.t | 40 + toke.c | 110 +- uconfig.h | 8 +- universal.c | 6 +- utf8.c | 1214 ++++++++++----- utf8.h | 95 +- vms/descrip_mms.template | 2 +- vms/vms.c | 2 +- vutil.c | 8 +- vxs.inc | 2 +- win32/GNUmakefile | 6 +- win32/Makefile | 6 +- win32/makefile.mk | 6 +- win32/pod.mak | 4 + win32/wince.c | 2 +- 298 files changed, 10665 insertions(+), 5507 deletions(-) create mode 100755 Porting/harness-timer-report.pl create mode 100644 cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t create mode 100644 cpan/parent/t/rt62341.t.disabled create mode 100644 cpan/podlators/t/data/snippets/man/bullet-after-nonbullet create mode 100644 cpan/podlators/t/data/snippets/man/error-die create mode 100644 cpan/podlators/t/data/snippets/man/error-none create mode 100644 cpan/podlators/t/data/snippets/man/error-normal create mode 100644 cpan/podlators/t/data/snippets/man/error-pod create mode 100644 cpan/podlators/t/data/snippets/man/error-stderr create mode 100644 cpan/podlators/t/data/snippets/man/error-stderr-opt create mode 100644 cpan/podlators/t/data/snippets/man/fixed-font create mode 100644 cpan/podlators/t/data/snippets/man/long-quote create mode 100644 cpan/podlators/t/data/snippets/man/lquote-and-quote create mode 100644 cpan/podlators/t/data/snippets/man/lquote-rquote create mode 100644 cpan/podlators/t/data/snippets/man/nourls create mode 100644 cpan/podlators/t/data/snippets/man/rquote-none create mode 100644 dist/Net-Ping/t/000_load.t create mode 100644 dist/Net-Ping/t/001_new.t create mode 100644 dist/Net-Ping/t/010_pingecho.t delete mode 100644 dist/Net-Ping/t/100_load.t create mode 100644 pod/perl5255delta.pod rename t/re/{uniprops.t => uniprops01.t} (76%) create mode 100644 t/re/uniprops02.t create mode 100644 t/re/uniprops03.t create mode 100644 t/re/uniprops04.t create mode 100644 t/re/uniprops05.t create mode 100644 t/re/uniprops06.t create mode 100644 t/re/uniprops07.t create mode 100644 t/re/uniprops08.t create mode 100644 t/re/uniprops09.t create mode 100644 t/re/uniprops10.t diff --git a/AUTHORS b/AUTHORS index d1b87fc..818a359 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1154,6 +1154,7 @@ Steve Purkis Steve Vinoski Stevan Little Steven Hirsch +Steven Humphrey Steven Knight Steven Morlock Steven N. Hirsch diff --git a/Configure b/Configure index 818ab8e..7c598e9 100755 --- a/Configure +++ b/Configure @@ -10161,6 +10161,11 @@ int main() { printf("9\n"); exit(0); } + if (b[0] == 0xC0 && b[3] == 0x9A) { + /* IBM single 32-bit */ + printf("12\n"); + exit(0); + } #endif #if DOUBLESIZE == 8 if (b[0] == 0x9A && b[7] == 0xBF) { @@ -10197,6 +10202,16 @@ int main() { printf("11\n"); exit(0); } + if (b[0] == 0xC0 && b[7] == 0x9A) { + /* IBM double 64-bit */ + printf("13\n"); + exit(0); + } + if (b[0] == 0xBF && b[7] == 0xCD) { + /* CRAY single 64-bit */ + printf("14\n"); + exit(0); + } #endif #if DOUBLESIZE == 16 if (b[0] == 0x9A && b[15] == 0xBF) { @@ -10234,7 +10249,10 @@ case "$doublekind" in 9) echo "You have VAX format F 32-bit PDP-style mixed endian doubles." >&4 ;; 10) echo "You have VAX format D 64-bit PDP-style mixed endian doubles." >&4 ;; 11) echo "You have VAX format G 64-bit PDP-style mixed endian doubles." >&4 ;; -*) echo "Cannot figure out your double. You CRAY, or something?" >&4 ;; +12) echo "You have IBM short 32-bit doubles." >&4 ;; +13) echo "You have IBM long 64-bit doubles." >&4 ;; +14) echo "You have Cray single 64-bit doubles." >&4 ;; +*) echo "Cannot figure out your double. You Cyber, or something?" >&4 ;; esac $rm_try diff --git a/Cross/config.sh-arm-linux b/Cross/config.sh-arm-linux index 08f262a..5a5babe 100644 --- a/Cross/config.sh-arm-linux +++ b/Cross/config.sh-arm-linux @@ -32,12 +32,12 @@ alignbytes='4' ansi2knr='' aphostname='/bin/hostname' api_revision='5' -api_subversion='5' +api_subversion='6' api_version='25' -api_versionstring='5.25.5' +api_versionstring='5.25.6' ar='ar' -archlib='/usr/lib/perl5/5.25.5/armv4l-linux' -archlibexp='/usr/lib/perl5/5.25.5/armv4l-linux' +archlib='/usr/lib/perl5/5.25.6/armv4l-linux' +archlibexp='/usr/lib/perl5/5.25.6/armv4l-linux' archname64='' archname='armv4l-linux' archobjs='' @@ -56,7 +56,7 @@ castflags='0' cat='cat' cc='cc' cccdlflags='-fpic' -ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.5/armv4l-linux/CORE' +ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.6/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' @@ -812,7 +812,7 @@ inc_version_list=' ' inc_version_list_init='0' incpath='' inews='' -installarchlib='./install_me_here/usr/lib/perl5/5.25.5/armv4l-linux' +installarchlib='./install_me_here/usr/lib/perl5/5.25.6/armv4l-linux' installbin='./install_me_here/usr/bin' installhtml1dir='' installhtml3dir='' @@ -820,13 +820,13 @@ installman1dir='./install_me_here/usr/share/man/man1' installman3dir='./install_me_here/usr/share/man/man3' installprefix='./install_me_here/usr' installprefixexp='./install_me_here/usr' -installprivlib='./install_me_here/usr/lib/perl5/5.25.5' +installprivlib='./install_me_here/usr/lib/perl5/5.25.6' installscript='./install_me_here/usr/bin' -installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.25.5/armv4l-linux' +installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.25.6/armv4l-linux' installsitebin='./install_me_here/usr/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.25.5' +installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.25.6' installsiteman1dir='./install_me_here/usr/share/man/man1' installsiteman3dir='./install_me_here/usr/share/man/man3' installsitescript='./install_me_here/usr/bin' @@ -960,8 +960,8 @@ pmake='' pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/lib/perl5/5.25.5' -privlibexp='/usr/lib/perl5/5.25.5' +privlib='/usr/lib/perl5/5.25.6' +privlibexp='/usr/lib/perl5/5.25.6' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='4' @@ -1026,17 +1026,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0' sig_size='68' signal_t='void' -sitearch='/usr/lib/perl5/site_perl/5.25.5/armv4l-linux' -sitearchexp='/usr/lib/perl5/site_perl/5.25.5/armv4l-linux' +sitearch='/usr/lib/perl5/site_perl/5.25.6/armv4l-linux' +sitearchexp='/usr/lib/perl5/site_perl/5.25.6/armv4l-linux' sitebin='/usr/bin' sitebinexp='/usr/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/lib/perl5/site_perl/5.25.5' +sitelib='/usr/lib/perl5/site_perl/5.25.6' sitelib_stem='/usr/lib/perl5/site_perl' -sitelibexp='/usr/lib/perl5/site_perl/5.25.5' +sitelibexp='/usr/lib/perl5/site_perl/5.25.6' siteman1dir='/usr/share/man/man1' siteman1direxp='/usr/share/man/man1' siteman3dir='/usr/share/man/man3' @@ -1075,7 +1075,7 @@ stdio_stream_array='' strerror_r_proto='0' strings='/usr/include/string.h' submit='' -subversion='5' +subversion='6' sysman='/usr/share/man/man1' tail='' tar='' @@ -1167,8 +1167,8 @@ vendorprefix='' vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.25.5' -version_patchlevel_string='version 25 subversion 5' +version='5.25.6' +version_patchlevel_string='version 25 subversion 6' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1182,9 +1182,9 @@ config_args='' config_argc=0 PERL_REVISION=5 PERL_VERSION=25 -PERL_SUBVERSION=5 +PERL_SUBVERSION=6 PERL_API_REVISION=5 PERL_API_VERSION=25 -PERL_API_SUBVERSION=5 +PERL_API_SUBVERSION=6 PERL_PATCHLEVEL= PERL_CONFIG_SH=true diff --git a/Cross/config.sh-arm-linux-n770 b/Cross/config.sh-arm-linux-n770 index 05f0e0e..f38baa2 100644 --- a/Cross/config.sh-arm-linux-n770 +++ b/Cross/config.sh-arm-linux-n770 @@ -32,12 +32,12 @@ alignbytes='4' ansi2knr='' aphostname='/bin/hostname' api_revision='5' -api_subversion='5' +api_subversion='6' api_version='25' -api_versionstring='5.25.5' +api_versionstring='5.25.6' ar='ar' -archlib='/usr/lib/perl5/5.25.5/armv4l-linux' -archlibexp='/usr/lib/perl5/5.25.5/armv4l-linux' +archlib='/usr/lib/perl5/5.25.6/armv4l-linux' +archlibexp='/usr/lib/perl5/5.25.6/armv4l-linux' archname64='' archname='armv4l-linux' archobjs='' @@ -55,7 +55,7 @@ castflags='0' cat='cat' cc='arm-none-linux-gnueabi-gcc' cccdlflags='-fpic' -ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.5/armv4l-linux/CORE' +ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.6/armv4l-linux/CORE' ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='arm-linux-gcc' @@ -699,7 +699,7 @@ inc_version_list=' ' inc_version_list_init='0' incpath='' inews='' -installarchlib='./install_me_here/usr/lib/perl5/5.25.5/armv4l-linux' +installarchlib='./install_me_here/usr/lib/perl5/5.25.6/armv4l-linux' installbin='./install_me_here/usr/bin' installhtml1dir='' installhtml3dir='' @@ -707,13 +707,13 @@ installman1dir='./install_me_here/usr/share/man/man1' installman3dir='./install_me_here/usr/share/man/man3' installprefix='./install_me_here/usr' installprefixexp='./install_me_here/usr' -installprivlib='./install_me_here/usr/lib/perl5/5.25.5' +installprivlib='./install_me_here/usr/lib/perl5/5.25.6' installscript='./install_me_here/usr/bin' -installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.25.5/armv4l-linux' +installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.25.6/armv4l-linux' installsitebin='./install_me_here/usr/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.25.5' +installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.25.6' installsiteman1dir='./install_me_here/usr/share/man/man1' installsiteman3dir='./install_me_here/usr/share/man/man3' installsitescript='./install_me_here/usr/bin' @@ -841,8 +841,8 @@ pmake='' pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/lib/perl5/5.25.5' -privlibexp='/usr/lib/perl5/5.25.5' +privlib='/usr/lib/perl5/5.25.6' +privlibexp='/usr/lib/perl5/5.25.6' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='4' @@ -903,17 +903,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0' sig_size='68' signal_t='void' -sitearch='/usr/lib/perl5/site_perl/5.25.5/armv4l-linux' -sitearchexp='/usr/lib/perl5/site_perl/5.25.5/armv4l-linux' +sitearch='/usr/lib/perl5/site_perl/5.25.6/armv4l-linux' +sitearchexp='/usr/lib/perl5/site_perl/5.25.6/armv4l-linux' sitebin='/usr/bin' sitebinexp='/usr/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/lib/perl5/site_perl/5.25.5' +sitelib='/usr/lib/perl5/site_perl/5.25.6' sitelib_stem='/usr/lib/perl5/site_perl' -sitelibexp='/usr/lib/perl5/site_perl/5.25.5' +sitelibexp='/usr/lib/perl5/site_perl/5.25.6' 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='5' +subversion='6' sysman='/usr/share/man/man1' tail='' tar='' @@ -1035,8 +1035,8 @@ vendorprefix='' vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.25.5' -version_patchlevel_string='version 25 subversion 5' +version='5.25.6' +version_patchlevel_string='version 25 subversion 6' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1050,9 +1050,9 @@ config_args='' config_argc=0 PERL_REVISION=5 PERL_VERSION=25 -PERL_SUBVERSION=5 +PERL_SUBVERSION=6 PERL_API_REVISION=5 PERL_API_VERSION=25 -PERL_API_SUBVERSION=5 +PERL_API_SUBVERSION=6 PERL_PATCHLEVEL= PERL_CONFIG_SH=true diff --git a/INSTALL b/INSTALL index d4a8b51..09b810c 100644 --- a/INSTALL +++ b/INSTALL @@ -581,7 +581,7 @@ The directories set up by Configure fall into three broad categories. =item Directories for the perl distribution -By default, Configure will use the following directories for 5.25.5. +By default, Configure will use the following directories for 5.25.6. $version is the full perl version number, including subversion, e.g. 5.12.3, and $archname is a string like sun4-sunos, determined by Configure. The full definitions of all Configure @@ -2436,7 +2436,7 @@ http://www.chiark.greenend.org.uk/~sgtatham/bugs.html =head1 Coexistence with earlier versions of perl 5 -Perl 5.25.5 is not binary compatible with earlier versions of Perl. +Perl 5.25.6 is not binary compatible with earlier versions of Perl. In other words, you will have to recompile your XS modules. In general, you can usually safely upgrade from one version of Perl @@ -2511,9 +2511,9 @@ won't interfere with another version. (The defaults guarantee this for libraries after 5.6.0, but not for executables. TODO?) One convenient way to do this is by using a separate prefix for each version, such as - sh Configure -Dprefix=/opt/perl5.25.5 + sh Configure -Dprefix=/opt/perl5.25.6 -and adding /opt/perl5.25.5/bin to the shell PATH variable. Such users +and adding /opt/perl5.25.6/bin to the shell PATH variable. Such users may also wish to add a symbolic link /usr/local/bin/perl so that scripts can still start with #!/usr/local/bin/perl. @@ -2528,11 +2528,11 @@ yet. =head2 Upgrading from 5.25.2 or earlier -B Perl modules having binary parts (meaning that a C compiler is used) will have to be recompiled to be -used with 5.25.5. If you find you do need to rebuild an extension with -5.25.5, you may safely do so without disturbing the older +used with 5.25.6. If you find you do need to rebuild an extension with +5.25.6, you may safely do so without disturbing the older installations. (See L<"Coexistence with earlier versions of perl 5"> above.) @@ -2565,15 +2565,15 @@ Firstly, the bare minimum to run this script print("$f\n"); } -in Linux with perl-5.25.5 is as follows (under $Config{prefix}): +in Linux with perl-5.25.6 is as follows (under $Config{prefix}): ./bin/perl - ./lib/perl5/5.25.5/strict.pm - ./lib/perl5/5.25.5/warnings.pm - ./lib/perl5/5.25.5/i686-linux/File/Glob.pm - ./lib/perl5/5.25.5/feature.pm - ./lib/perl5/5.25.5/XSLoader.pm - ./lib/perl5/5.25.5/i686-linux/auto/File/Glob/Glob.so + ./lib/perl5/5.25.6/strict.pm + ./lib/perl5/5.25.6/warnings.pm + ./lib/perl5/5.25.6/i686-linux/File/Glob.pm + ./lib/perl5/5.25.6/feature.pm + ./lib/perl5/5.25.6/XSLoader.pm + ./lib/perl5/5.25.6/i686-linux/auto/File/Glob/Glob.so Secondly, for perl-5.10.1, the Debian perl-base package contains 591 files, (of which 510 are for lib/unicore) totaling about 3.5MB in its diff --git a/MANIFEST b/MANIFEST index f37157f..710a81b 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1890,6 +1890,7 @@ cpan/parent/t/parent-classfromclassfile.t tests for parent.pm cpan/parent/t/parent-classfromfile.t tests for parent.pm cpan/parent/t/parent-pmc.t tests for parent.pm cpan/parent/t/parent-returns-false.t tests for parent.pm +cpan/parent/t/rt62341.t.disabled test files for parent.pm cpan/Perl-OSType/lib/Perl/OSType.pm Perl::OSType cpan/Perl-OSType/t/OSType.t Perl::OSType cpan/perlfaq/lib/perlfaq.pm Perl frequently asked questions @@ -2220,7 +2221,20 @@ cpan/podlators/t/data/basic.ovr podlators test cpan/podlators/t/data/basic.pod podlators test cpan/podlators/t/data/basic.txt podlators test cpan/podlators/t/data/perl.conf podlators test +cpan/podlators/t/data/snippets/man/bullet-after-nonbullet cpan/podlators/t/data/snippets/man/cpp podlators test +cpan/podlators/t/data/snippets/man/error-die +cpan/podlators/t/data/snippets/man/error-none +cpan/podlators/t/data/snippets/man/error-normal +cpan/podlators/t/data/snippets/man/error-pod +cpan/podlators/t/data/snippets/man/error-stderr +cpan/podlators/t/data/snippets/man/error-stderr-opt +cpan/podlators/t/data/snippets/man/fixed-font +cpan/podlators/t/data/snippets/man/long-quote +cpan/podlators/t/data/snippets/man/lquote-and-quote +cpan/podlators/t/data/snippets/man/lquote-rquote +cpan/podlators/t/data/snippets/man/nourls +cpan/podlators/t/data/snippets/man/rquote-none cpan/podlators/t/data/snippets/man/utf8-nonbreaking podlators test cpan/podlators/t/data/snippets/man/utf8-verbatim podlators test cpan/podlators/t/data/snippets/README podlators test @@ -2734,6 +2748,7 @@ cpan/Test-Simple/t/regression/662-tbt-no-plan.t cpan/Test-Simple/t/regression/684-nested_todo_diag.t cpan/Test-Simple/t/regression/694_note_diag_return_values.t cpan/Test-Simple/t/regression/696-intercept_skip_all.t +cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t cpan/Test-Simple/t/regression/no_name_in_subtest.t cpan/Test-Simple/t/Test2/acceptance/try_it_done_testing.t cpan/Test-Simple/t/Test2/acceptance/try_it_fork.t @@ -3453,7 +3468,9 @@ dist/Module-CoreList/t/pod.t Module::CoreList tests dist/Module-CoreList/t/utils.t Module::CoreList tests dist/Net-Ping/Changes Net::Ping dist/Net-Ping/lib/Net/Ping.pm Hello, anybody home? -dist/Net-Ping/t/100_load.t Ping Net::Ping +dist/Net-Ping/t/000_load.t +dist/Net-Ping/t/001_new.t +dist/Net-Ping/t/010_pingecho.t dist/Net-Ping/t/110_icmp_inst.t Ping Net::Ping dist/Net-Ping/t/120_udp_inst.t Ping Net::Ping dist/Net-Ping/t/130_tcp_inst.t Ping Net::Ping @@ -4830,6 +4847,7 @@ pod/perl5251delta.pod Perl changes in version 5.25.1 pod/perl5252delta.pod Perl changes in version 5.25.2 pod/perl5253delta.pod Perl changes in version 5.25.3 pod/perl5254delta.pod Perl changes in version 5.25.4 +pod/perl5255delta.pod Perl changes in version 5.25.5 pod/perl561delta.pod Perl changes in version 5.6.1 pod/perl56delta.pod Perl changes in version 5.6 pod/perl581delta.pod Perl changes in version 5.8.1 @@ -4972,6 +4990,7 @@ Porting/git-find-p4-change Find the change for a p4 change number Porting/git-make-p4-refs Output git refs for each p4 change number, suitable for appending to .git/packed-refs Porting/GitUtils.pm Generate the contents of a .patch file Porting/Glossary Glossary of config.sh variables +Porting/harness-timer-report.pl Analyze the timings from the test harness Porting/how_to_write_a_perldelta.pod Bluffer's guide to writing a perldelta. Porting/leakfinder.pl Hacky script for finding memory leaks Porting/Maintainers Program to pretty print info in Maintainers.pl @@ -5694,7 +5713,16 @@ t/re/subst.t See if substitution works t/re/subst_amp.t See if $&-related substitution works t/re/subst_wamp.t See if substitution works with $& present t/re/substT.t See if substitution works with -T -t/re/uniprops.t Test unicode \p{} regex constructs +t/re/uniprops01.t Test unicode \p{} regex constructs +t/re/uniprops02.t Test unicode \p{} regex constructs +t/re/uniprops03.t Test unicode \p{} regex constructs +t/re/uniprops04.t Test unicode \p{} regex constructs +t/re/uniprops05.t Test unicode \p{} regex constructs +t/re/uniprops06.t Test unicode \p{} regex constructs +t/re/uniprops07.t Test unicode \p{} regex constructs +t/re/uniprops08.t Test unicode \p{} regex constructs +t/re/uniprops09.t Test unicode \p{} regex constructs +t/re/uniprops10.t Test unicode \p{} regex constructs t/README Instructions for regression tests t/run/cloexec.t Test close-on-exec. t/run/dtrace.pl For dtrace.t diff --git a/META.json b/META.json index a994467..c0c6a07 100644 --- a/META.json +++ b/META.json @@ -124,6 +124,6 @@ "url" : "http://perl5.git.perl.org/" } }, - "version" : "5.025005", + "version" : "5.025006", "x_serialization_backend" : "JSON::PP version 2.27400_01" } diff --git a/META.yml b/META.yml index 0644402..49d936c 100644 --- a/META.yml +++ b/META.yml @@ -111,5 +111,5 @@ resources: homepage: http://www.perl.org/ license: http://dev.perl.org/licenses/ repository: http://perl5.git.perl.org/ -version: '5.025005' +version: '5.025006' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff --git a/Makefile.SH b/Makefile.SH index 42beb81..511d6e3 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -522,7 +522,7 @@ miniperl_objs = $(miniperl_objs_nodt) $(DTRACE_MINI_O) perllib_objs = $(perllib_objs_nodt) $(DTRACE_PERLLIB_O) perlmain_objs = perlmain$(OBJ_EXT) $(DTRACE_MAIN_O) -perltoc_pod_prereqs = extra.pods pod/perl5255delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod +perltoc_pod_prereqs = extra.pods pod/perl5256delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs) generated_headers = uudmap.h bitcount.h mg_data.h @@ -1085,9 +1085,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST $(MINIPERL) pod/perlmodlib.PL -q -pod/perl5255delta.pod: pod/perldelta.pod - $(RMS) pod/perl5255delta.pod - $(LNS) perldelta.pod pod/perl5255delta.pod +pod/perl5256delta.pod: pod/perldelta.pod + $(RMS) pod/perl5256delta.pod + $(LNS) perldelta.pod pod/perl5256delta.pod extra.pods: $(MINIPERL_EXE) -@test ! -f extra.pods || rm -f `cat extra.pods` diff --git a/NetWare/Makefile b/NetWare/Makefile index b4fe532..6f96c0a 100644 --- a/NetWare/Makefile +++ b/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.25.5 for NetWare" +MODULE_DESC = "Perl 5.25.6 for NetWare" CCTYPE = CodeWarrior C_COMPILER = mwccnlm -c CPP_COMPILER = mwccnlm @@ -462,7 +462,7 @@ INST_NW_TOP2 = $(INST_NW_DRV)\perl # versioned installation can be obtained by setting INST_TOP above to a # path that includes an arbitrary version string. # -INST_VER = \5.25.5 +INST_VER = \5.25.6 # # Comment this out if you DON'T want your perl installation to have diff --git a/NetWare/config_H.wc b/NetWare/config_H.wc index 8ac56ea..ca96a2d 100644 --- a/NetWare/config_H.wc +++ b/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.25.5\\lib\\NetWare-x86-multi-thread" /**/ +#define ARCHLIB "c:\\perl\\5.25.6\\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.25.5\\bin\\NetWare-x86-multi-thread" /**/ -#define BIN_EXP "c:\\perl\\5.25.5\\bin\\NetWare-x86-multi-thread" /**/ +#define BIN "c:\\perl\\5.25.6\\bin\\NetWare-x86-multi-thread" /**/ +#define BIN_EXP "c:\\perl\\5.25.6\\bin\\NetWare-x86-multi-thread" /**/ /* BYTEORDER: * This symbol holds the hexadecimal constant defined in byteorder, @@ -3047,7 +3047,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.25.5\\lib\\NetWare-x86-multi-thread" /**/ +#define SITEARCH "c:\\perl\\site\\5.25.6\\lib\\NetWare-x86-multi-thread" /**/ /*#define SITEARCH_EXP "" /**/ /* SITELIB: @@ -3070,7 +3070,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.25.5\\lib" /**/ +#define SITELIB "c:\\perl\\site\\5.25.6\\lib" /**/ /*#define SITELIB_EXP "" /**/ #define SITELIB_STEM "" /**/ diff --git a/Porting/Glossary b/Porting/Glossary index 39a17b8..06b80a8 100644 --- a/Porting/Glossary +++ b/Porting/Glossary @@ -2933,6 +2933,9 @@ doublekind (longdblfio.U): 9 = VAX 32bit little endian F float format 10 = VAX 64bit little endian D float format 11 = VAX 64bit little endian G float format + 12 = IBM 32bit format + 13 = IBM 64bit format + 14 = Cray 64bit format -1 = unknown format. doublemantbits (mantbits.U): diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index bc30939..322e6d4 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -120,7 +120,7 @@ use File::Glob qw(:case); %Modules = ( 'Archive::Tar' => { - 'DISTRIBUTION' => 'BINGOS/Archive-Tar-2.10.tar.gz', + 'DISTRIBUTION' => 'BINGOS/Archive-Tar-2.14.tar.gz', 'FILES' => q[cpan/Archive-Tar], 'BUGS' => 'bug-archive-tar@rt.cpan.org', 'EXCLUDED' => [ @@ -591,7 +591,7 @@ use File::Glob qw(:case); }, 'HTTP::Tiny' => { - 'DISTRIBUTION' => 'DAGOLDEN/HTTP-Tiny-0.064.tar.gz', + 'DISTRIBUTION' => 'DAGOLDEN/HTTP-Tiny-0.070.tar.gz', 'FILES' => q[cpan/HTTP-Tiny], 'EXCLUDED' => [ 't/00-report-prereqs.t', @@ -845,7 +845,7 @@ use File::Glob qw(:case); }, 'Module::CoreList' => { - 'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20160820.tar.gz', + 'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20160920.tar.gz', 'FILES' => q[dist/Module-CoreList], }, @@ -876,8 +876,14 @@ use File::Glob qw(:case); }, 'Net::Ping' => { - 'DISTRIBUTION' => 'SMPETERS/Net-Ping-2.41.tar.gz', + 'DISTRIBUTION' => 'RURBAN/Net-Ping-2.51.tar.gz', 'FILES' => q[dist/Net-Ping], + 'EXCLUDED' => [ + qw(t/020_external.t), + qw(t/600_pod.t), + qw(t/601_pod-coverage.t), + ], + }, 'NEXT' => { @@ -892,8 +898,11 @@ use File::Glob qw(:case); }, 'parent' => { - 'DISTRIBUTION' => 'CORION/parent-0.234.tar.gz', + 'DISTRIBUTION' => 'CORION/parent-0.236.tar.gz', 'FILES' => q[cpan/parent], + 'EXCLUDED' => [ + qr{^xt} + ], }, 'PathTools' => { @@ -978,7 +987,7 @@ use File::Glob qw(:case); }, 'podlators' => { - 'DISTRIBUTION' => 'RRA/podlators-4.07.tar.gz', + 'DISTRIBUTION' => 'RRA/podlators-4.08.tar.gz', 'FILES' => q[cpan/podlators pod/perlpodstyle.pod], 'MAP' => { @@ -994,18 +1003,8 @@ use File::Glob qw(:case); }, 'Scalar-List-Utils' => { - 'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.45.tar.gz', + 'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.46.tar.gz', 'FILES' => q[cpan/Scalar-List-Utils], - # Waiting to be merged upstream - # https://github.com/Scalar-List-Utils/Scalar-List-Utils/pull/42 - 'CUSTOMIZED' => [ - qw( ListUtil.xs - lib/List/Util.pm - lib/List/Util/XS.pm - lib/Scalar/Util.pm - lib/Sub/Util.pm - ) - ], }, 'Search::Dict' => { @@ -1153,7 +1152,7 @@ use File::Glob qw(:case); }, 'Test::Simple' => { - 'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302056.tar.gz', + 'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302059.tar.gz', 'FILES' => q[cpan/Test-Simple], 'EXCLUDED' => [ qr{^examples/}, @@ -1266,7 +1265,7 @@ use File::Glob qw(:case); }, 'Time::HiRes' => { - 'DISTRIBUTION' => 'JHI/Time-HiRes-1.9739.tar.gz', + 'DISTRIBUTION' => 'JHI/Time-HiRes-1.9740.tar.gz', 'FILES' => q[dist/Time-HiRes], }, diff --git a/Porting/README.pod b/Porting/README.pod index 21a0414..af78bbf 100644 --- a/Porting/README.pod +++ b/Porting/README.pod @@ -186,6 +186,11 @@ This file is built by F. This file contains a description of all the shell variables whose value is determined by the Configure script. It later gets incorporated into the pod for F. +=head2 F + +For analyzing the output of "env HARNESS_TIMER=1 make test", to find +outliers of test execution times. + =head2 F This file contains a specification as to how to write a perldelta pod. diff --git a/Porting/bench.pl b/Porting/bench.pl index fb06040..a2875a1 100755 --- a/Porting/bench.pl +++ b/Porting/bench.pl @@ -546,7 +546,8 @@ sub select_a_perl { # Validate the list of perl=label (+ cmdline options) on the command line. -# Return a list of [ exe, label, cmdline-options ] tuples, ie PUTs +# Return a list of [ exe, label, cmdline-options ] tuples, i.e. +# 'perl-under-test's (PUTs) sub process_puts { my @res_puts; # returned, each item is [ perlexe, label, @putargs ] @@ -559,7 +560,7 @@ sub process_puts { my ($perl, $label, $env) = split /[=:,]/, $p, 3; $label //= $perl; $label = $perl.$label if $label =~ /^\+/; - die "$label cannot be used on 2 different PUTs\n" if $seen{$label}++; + die "$label cannot be used on 2 different perls under test\n" if $seen{$label}++; my %env; if ($env) { @@ -572,7 +573,7 @@ sub process_puts { warn "Added Perl-Under-Test: [ @{[@{$res_puts[-1]}]} ]\n" if $OPTS{verbose}; } else { - warn "PUT-args: @putargs + a not-perl: $p $r\n" + warn "perl-under-test args: @putargs + a not-perl: $p $r\n" if $OPTS{verbose}; push @putargs, $p; # not-perl } diff --git a/Porting/config.sh b/Porting/config.sh index ac9fba1..b72d9fd 100644 --- a/Porting/config.sh +++ b/Porting/config.sh @@ -39,12 +39,12 @@ alignbytes='8' ansi2knr='' aphostname='/bin/hostname' api_revision='5' -api_subversion='5' +api_subversion='6' api_version='25' -api_versionstring='5.25.5' +api_versionstring='5.25.6' ar='ar' -archlib='/tmp/mblead/lib/perl5/5.25.5/darwin-2level' -archlibexp='/tmp/mblead/lib/perl5/5.25.5/darwin-2level' +archlib='/tmp/mblead/lib/perl5/5.25.6/darwin-2level' +archlibexp='/tmp/mblead/lib/perl5/5.25.6/darwin-2level' archname64='' archname='darwin-2level' archobjs='' @@ -832,7 +832,7 @@ incpath='' incpth='/usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include' inews='' initialinstalllocation='/tmp/mblead/bin' -installarchlib='/tmp/mblead/lib/perl5/5.25.5/darwin-2level' +installarchlib='/tmp/mblead/lib/perl5/5.25.6/darwin-2level' installbin='/tmp/mblead/bin' installhtml1dir='' installhtml3dir='' @@ -840,13 +840,13 @@ installman1dir='/tmp/mblead/man/man1' installman3dir='/tmp/mblead/man/man3' installprefix='/tmp/mblead' installprefixexp='/tmp/mblead' -installprivlib='/tmp/mblead/lib/perl5/5.25.5' +installprivlib='/tmp/mblead/lib/perl5/5.25.6' installscript='/tmp/mblead/bin' -installsitearch='/tmp/mblead/lib/perl5/site_perl/5.25.5/darwin-2level' +installsitearch='/tmp/mblead/lib/perl5/site_perl/5.25.6/darwin-2level' installsitebin='/tmp/mblead/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/tmp/mblead/lib/perl5/site_perl/5.25.5' +installsitelib='/tmp/mblead/lib/perl5/site_perl/5.25.6' installsiteman1dir='/tmp/mblead/man/man1' installsiteman3dir='/tmp/mblead/man/man3' installsitescript='/tmp/mblead/bin' @@ -971,7 +971,7 @@ perl_patchlevel='' perl_static_inline='static __inline__' perladmin='aaron@daybreak.nonet' perllibs='-lpthread -ldl -lm -lutil -lc' -perlpath='/tmp/mblead/bin/perl5.25.5' +perlpath='/tmp/mblead/bin/perl5.25.6' pg='pg' phostname='hostname' pidtype='pid_t' @@ -980,8 +980,8 @@ pmake='' pr='' prefix='/tmp/mblead' prefixexp='/tmp/mblead' -privlib='/tmp/mblead/lib/perl5/5.25.5' -privlibexp='/tmp/mblead/lib/perl5/5.25.5' +privlib='/tmp/mblead/lib/perl5/5.25.6' +privlibexp='/tmp/mblead/lib/perl5/5.25.6' procselfexe='' prototype='define' ptrsize='8' @@ -1047,17 +1047,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 6, 0' sig_size='33' signal_t='void' -sitearch='/tmp/mblead/lib/perl5/site_perl/5.25.5/darwin-2level' -sitearchexp='/tmp/mblead/lib/perl5/site_perl/5.25.5/darwin-2level' +sitearch='/tmp/mblead/lib/perl5/site_perl/5.25.6/darwin-2level' +sitearchexp='/tmp/mblead/lib/perl5/site_perl/5.25.6/darwin-2level' sitebin='/tmp/mblead/bin' sitebinexp='/tmp/mblead/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/tmp/mblead/lib/perl5/site_perl/5.25.5' +sitelib='/tmp/mblead/lib/perl5/site_perl/5.25.6' sitelib_stem='/tmp/mblead/lib/perl5/site_perl' -sitelibexp='/tmp/mblead/lib/perl5/site_perl/5.25.5' +sitelibexp='/tmp/mblead/lib/perl5/site_perl/5.25.6' siteman1dir='/tmp/mblead/man/man1' siteman1direxp='/tmp/mblead/man/man1' siteman3dir='/tmp/mblead/man/man3' @@ -1083,7 +1083,7 @@ src='.' ssizetype='ssize_t' st_ino_sign='1' st_ino_size='8' -startperl='#!/tmp/mblead/bin/perl5.25.5' +startperl='#!/tmp/mblead/bin/perl5.25.6' startsh='#!/bin/sh' static_ext=' ' stdchar='char' @@ -1096,7 +1096,7 @@ stdio_stream_array='' strerror_r_proto='0' strings='/usr/include/string.h' submit='' -subversion='5' +subversion='6' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1195,8 +1195,8 @@ vendorprefix='' vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.25.5' -version_patchlevel_string='version 25 subversion 5' +version='5.25.6' +version_patchlevel_string='version 25 subversion 6' versiononly='define' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1206,9 +1206,9 @@ zcat='' zip='zip' PERL_REVISION=5 PERL_VERSION=25 -PERL_SUBVERSION=5 +PERL_SUBVERSION=6 PERL_API_REVISION=5 PERL_API_VERSION=25 -PERL_API_SUBVERSION=5 +PERL_API_SUBVERSION=6 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true diff --git a/Porting/config_H b/Porting/config_H index dcab832..c81c690 100644 --- a/Porting/config_H +++ b/Porting/config_H @@ -960,8 +960,8 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define ARCHLIB "/pro/lib/perl5/5.25.5/i686-linux-64int-ld" /**/ -#define ARCHLIB_EXP "/pro/lib/perl5/5.25.5/i686-linux-64int-ld" /**/ +#define ARCHLIB "/pro/lib/perl5/5.25.6/i686-linux-64int-ld" /**/ +#define ARCHLIB_EXP "/pro/lib/perl5/5.25.6/i686-linux-64int-ld" /**/ /* ARCHNAME: * This symbol holds a string representing the architecture name. @@ -2068,8 +2068,8 @@ * This symbol contains the ~name expanded version of PRIVLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define PRIVLIB "/pro/lib/perl5/5.25.5" /**/ -#define PRIVLIB_EXP "/pro/lib/perl5/5.25.5" /**/ +#define PRIVLIB "/pro/lib/perl5/5.25.6" /**/ +#define PRIVLIB_EXP "/pro/lib/perl5/5.25.6" /**/ /* PTRSIZE: * This symbol contains the size of a pointer, so that the C preprocessor @@ -2119,8 +2119,8 @@ * This symbol contains the ~name expanded version of SITEARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define SITEARCH "/pro/lib/perl5/site_perl/5.25.5/i686-linux-64int-ld" /**/ -#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.25.5/i686-linux-64int-ld" /**/ +#define SITEARCH "/pro/lib/perl5/site_perl/5.25.6/i686-linux-64int-ld" /**/ +#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.25.6/i686-linux-64int-ld" /**/ /* SITELIB: * This symbol contains the name of the private library for this package. @@ -2142,8 +2142,8 @@ * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "/pro/lib/perl5/site_perl/5.25.5" /**/ -#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.25.5" /**/ +#define SITELIB "/pro/lib/perl5/site_perl/5.25.6" /**/ +#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.25.6" /**/ #define SITELIB_STEM "/pro/lib/perl5/site_perl" /**/ /* SSize_t: @@ -4282,7 +4282,7 @@ * script to make sure (one hopes) that it runs with perl and not * some shell. */ -#define STARTPERL "#!/pro/bin/perl5.25.5" /**/ +#define STARTPERL "#!/pro/bin/perl5.25.6" /**/ /* HAS_STDIO_STREAM_ARRAY: * This symbol, if defined, tells that there is an array diff --git a/Porting/deparse-skips.txt b/Porting/deparse-skips.txt index 7e77d71..efac18f 100644 --- a/Porting/deparse-skips.txt +++ b/Porting/deparse-skips.txt @@ -175,7 +175,6 @@ op/pack.t op/postfixderef.t op/range.t op/readline.t -op/split.t op/srand.t op/sub.t op/sub_lval.t diff --git a/Porting/epigraphs.pod b/Porting/epigraphs.pod index b7c7b36..e574755d 100644 --- a/Porting/epigraphs.pod +++ b/Porting/epigraphs.pod @@ -17,6 +17,19 @@ Consult your favorite dictionary for details. =head1 EPIGRAPHS +=head2 v5.25.5 - Philip K. Dick, VALIS + +L + + We hypostatize information into objects. Rearrangement of objects is + change in the content of the information; the message has changed. + This is a language which we have lost the ability to read. We ourselves + are a part of this language; changes in us are changes in the content + of the information. We ourselves are information-rich; information + enters us, is processed and is then projected outward once more, now + in an altered form. We are not aware that we are doing this, that in + fact this is all we are doing + =head2 v5.25.4 - Terry Pratchett, "Truckers" L @@ -125,6 +138,40 @@ L + + Before the gates there sat + On either side a formidable shape; + The one seemed woman to the waste, and fair, + But ended foul in many a scaly fold, + Voluminous and vast -- a serpent armed + With mortal sting; about her middle round + A cry of hell hounds never ceasing barked + With wide Cerberean mouths full loud, and rung + A hideous peal; yet, when they list, would creep, + If aught disturbed their noise, into her womb, + And kennel there; yet there still barked and howled + Within unseen. Far less abhorred than these + Vexed Scylla, bathing in the sea that parts + Calabria from the hoarse Trinacrian shore; + Nor uglier follow the night-hag, when, called + In secret, riding through the air she comes, + Lured with the smell of infant blood, to dance + With Lapland witches, while the labouring moon + Eclipses at their charms. The other shape -- + If shape it might be called that shape had none + Distinguishable in member, joint, or limb; + Or substance might be called that shadow seemed, + For each seemed either -- black it stood as night, + Fierce as ten Furies, terrible as hell, + And shook a dreadful dart: what seemed his head + The likeness of a kingly crown had on. + Satan was now at hand, and from his seat + The monster moving onward came as fast + With horrid strides; hell trembled as he strode. + =head2 v5.24.1-RC3 - Dante Alighieri, trans. Dorothy L. Sayers and Barbara Reynolds, "The Divine Comedy", Cantica III: Paradise, Canto XXIII L @@ -561,6 +608,44 @@ L + + Far off from these, a slow and silent stream, + Lethe, the river of oblivion, rolls + Her watery labyrinth, whereof who drinks + Forthwith his former state and being forgets -- + Forgets both joy and grief, pleasure and pain. + Beyond this flood a frozen continent + Lies dark and wild, beat with perpetual storms + Of Whirlwind and dire hail, which on firm land + Thaws not, but gathers heap, and ruin seems + Of ancient pile; all else deep snow and ice, + A gulf profound as that Serbonian bog + Betwixt Damiata and Mount Casius old, + Where armies whole have sunk: the parching air + Burns frore, and cold performs the effect of fire. + Thither, by harpy-footed Furies haled, + At certain revolutions all the damned + Are brought; and feel by turns the bitter change + Of fierce extremes, extremes by change more fierce, + From beds of raging fire to starve in ice + Their soft ethereal warmth, and there to pine + Immovable, infixed, and frozen round + Periods of time -- thence hurried back to fire. + They ferry over this Lethean sound + Both to and fro, their sorrow to augment, + And wish and struggle, as they pass, to reach + The tempting stream, with one small drop to lose + In sweet forgetfulness all pain and woe, + All in one moment, and so near the brink; + But fate withstands, and, to oppose the attempt, + Medusa with Gorgonian terror guards + The ford, and of itself the water flies + All taste of living wight, as once it fled + The lip of Tantalus. + =head2 v5.22.3-RC3 - Dante Alighieri, trans. Dorothy L. Sayers and Barbara Reynolds, "The Divine Comedy", Cantica III: Paradise, Canto IV L diff --git a/Porting/exec-bit.txt b/Porting/exec-bit.txt index 4504c52..bf79b62 100644 --- a/Porting/exec-bit.txt +++ b/Porting/exec-bit.txt @@ -47,6 +47,7 @@ Porting/corecpan.pl Porting/corelist-perldelta.pl Porting/corelist.pl Porting/expand-macro.pl +Porting/harness-timer-report.pl Porting/findrfuncs Porting/makerel Porting/make_dot_patch.pl diff --git a/Porting/harness-timer-report.pl b/Porting/harness-timer-report.pl new file mode 100755 index 0000000..899af86 --- /dev/null +++ b/Porting/harness-timer-report.pl @@ -0,0 +1,239 @@ +#!perl -w +# +# harness-timer-report.pl +# +# - read in the HARNESS_TIMER=1 output of "make test" +# - convert the milliseconds to seconds +# - compute a couple of derived values +# - cpu: the sum of 'self' and 'kids' +# - ratio of the wallclock and the cpu +# - optionally show header, the sum, or the max of each colum +# - sort the rows in various ways +# - default ordering by 'cpu' seconds +# - optionally scale the column values by either the sum or the max +# - optionally display only rows that have rows of at least / at most a limit +# +# The --sort option has a few canned sorting rules. If those are +# not to your liking, there is always sort(1). +# +# Example usages: +# +# perl harness-timer-report.pl log +# perl harness-timer-report.pl --sort=wall log +# perl harness-timer-report.pl --scale=sum log +# perl harness-timer-report.pl --scale=sum --min=0.01 log +# perl harness-timer-report.pl --show=header,max,sum log +# perl harness-timer-report.pl --min=wall=10 log + +use strict; +use warnings; + +use File::Basename qw[basename]; + +our $ME = basename($0); + +use Getopt::Long; + +sub usage { + die <<__EOF__; +$ME: Usage: +$ME [--scale=[sum|max]] + [--sort=[cpu|wall|ratio|self|kids|test|name]] + [--show=header,sum,max] + [--min=[[cpu|wall|ratio|self|kids]=value,...]] + [--max=[[cpu|wall|ratio|self|kids]=value,...]] + [--order] + logfile + +The --order includes the original test order as the last column. +__EOF__ +} + +my %Opt; +usage() + unless + GetOptions( + 'scale=s' => \$Opt{scale}, + 'sort=s' => \$Opt{sort}, + 'show=s' => \$Opt{show}, + 'min=s' => \$Opt{min}, + 'max=s' => \$Opt{max}, + 'order' => \$Opt{order}, + ); + +my %SHOW; +if (defined $Opt{show}) { + for my $s (split(/,/, $Opt{show})) { + if ($s =~ /^(header|sum|max)$/) { + $SHOW{$s}++; + } else { + die "$ME: Unexpected --show='$s'\n"; + } + } +} +my %MIN; +if (defined $Opt{min}) { + for my $s (split(/,/, $Opt{min})) { + if ($s =~ /^(wall|cpu|kids|self|ratio)=(\d+(?:\.\d+)?)$/) { + $MIN{$1} = $2; + } else { + die "$ME: Unexpected --min='$s'\n"; + } + } +} +my %MAX; +if (defined $Opt{max}) { + for my $s (split(/,/, $Opt{max})) { + if ($s =~ /^(wall|cpu|kids|self|ratio)=(\d+(?:\.\d+)?)$/) { + $MAX{$1} = $2; + } else { + die "$ME: Unexpected --max='$s'\n"; + } + } +} + +use List::Util qw[max]; + +my ($sa, $sb, $sc, $sd, $se); +my ($ma, $mb, $mc, $md, $me); + +my $order = 0; +my @t; +while (<>) { + # t/re/pat ....................................................... ok 2876 ms 2660 ms 210 ms + if (m{(.+)\s+\.+\s+ok\s+(\d+)\s+ms\s+(\d+)\s+ms\s+(\d+)\s+ms$}) { + my ($test, $wall, $self, $kids) = ($1, $2, $3, $4); + next unless $wall > 0; + # Milliseconds to seconds. + $wall /= 1000; + $self /= 1000; + $kids /= 1000; + my $cpu = $self + $kids; + my $ratio = $cpu / $wall; + push @t, [ $test, $wall, $self, $kids, $cpu, $ratio, $order++ ]; + $sa += $wall; + $sb += $self; + $sc += $kids; + $sd += $cpu; + $ma = max($wall, $ma // $wall); + $mb = max($self, $mb // $self); + $mc = max($kids, $mc // $kids); + $md = max($cpu, $md // $cpu); + $me = max($ratio, $md // $ratio); + } +} + +die "$ME: No input found\n" unless @t; + +# Compute the sum for the ratio only after the loop. +$se = $sd / $sa; + +my %SORTER = + ( + 'cpu' => + sub { $b->[4] <=> $a->[4] || + $b->[1] <=> $a->[1] || + $a->[0] cmp $b->[0] }, + 'wall' => + sub { $b->[1] <=> $a->[1] || + $b->[4] <=> $a->[4] || + $a->[0] cmp $b->[0] }, + 'ratio' => + sub { $b->[5] <=> $a->[5] || + $b->[4] <=> $a->[4] || + $b->[1] <=> $a->[1] || + $a->[0] cmp $b->[0] }, + 'self' => + sub { $b->[2] <=> $a->[2] || + $b->[3] <=> $a->[3] || + $a->[0] cmp $b->[0] }, + 'kids' => + sub { $b->[3] <=> $a->[3] || + $b->[2] <=> $a->[2] || + $a->[0] cmp $b->[0] }, + 'test' => + sub { $a->[6] <=> $b->[6] }, + 'name' => + sub { $a->[0] cmp $b->[0] }, + ); +my $sorter; + +$Opt{sort} //= 'cpu'; + +die "$ME: Unexpected --sort='$Opt{sort}'\n" + unless defined $SORTER{$Opt{sort}}; + +@t = sort { $SORTER{$Opt{sort}}->() } @t; + +if (defined $Opt{scale}) { + my ($ta, $tb, $tc, $td, $te) = + $Opt{scale} eq 'sum' ? + ($sa, $sb, $sc, $sd, $se) : + $Opt{scale} eq 'max' ? + ($ma, $mb, $mc, $md, $me) : + die "$ME: Unexpected --scale='$Opt{scale}'"; + + my @u; + for my $t (@t) { + push @u, [ $t->[0], + $t->[1] / $ta, $t->[2] / $tb, + $t->[3] / $tc, $t->[4] / $td, + $t->[5] / $te, $t->[6] ]; + } + @t = @u; +} + +if ($SHOW{header}) { + my @header = qw[TEST WALL SELF KIDS CPU RATIO]; + if ($Opt{order}) { + push @header, 'ORDER'; + } + print join(" ", @header), "\n"; +} +if ($SHOW{sum}) { + print join(" ", "SUM", + map { sprintf("%.6f", $_) } $sa, $sb, $sc, $sd, $se), + "\n"; +} +if ($SHOW{max}) { + print join(" ", "MAX", + map { sprintf("%.6f", $_) } $ma, $mb, $mc, $md, $me), + "\n"; +} + +my %N2I = (wall => 1, + self => 2, + kids => 3, + cpu => 4, + ratio => 5); + +sub row_is_skippable { + my ($t) = @_; + if (scalar keys %MIN) { + for my $k (grep { exists $MIN{$_} } keys %N2I) { + if ($t->[$N2I{$k}] < $MIN{$k}) { + return 1; + } + } + } + if (scalar keys %MAX) { + for my $k (grep { exists $MAX{$_} } keys %N2I) { + if ($t->[$N2I{$k}] > $MAX{$k}) { + return 1; + } + } + } + return 0; +} + +for my $t (@t) { + next if row_is_skippable($t); + my $out = sprintf("%s %.6f %.6f %.6f %.6f %.6f", + $t->[0], $t->[1], $t->[2], $t->[3], $t->[4], $t->[5]); + if ($Opt{order}) { + $out .= " $t->[6]"; + } + print $out, "\n"; +} + +exit(0); diff --git a/Porting/release_schedule.pod b/Porting/release_schedule.pod index ec2bb17..add9e69 100644 --- a/Porting/release_schedule.pod +++ b/Porting/release_schedule.pod @@ -53,7 +53,7 @@ you should reset the version numbers to the next blead series. 2016-06-20 5.25.2 ✓ Matthew Horsfall 2016-07-20 5.25.3 ✓ Steve Hay 2016-08-20 5.25.4 ✓ BinGOs - 2016-09-20 5.25.5 Stevan Little + 2016-09-20 5.25.5 ✓ Stevan Little 2016-10-20 5.25.6 Aaron Crane 2016-11-20 5.25.7 Chad Granum 2016-12-20 5.25.8 Sawyer X diff --git a/Porting/todo.pod b/Porting/todo.pod index f3bdff3..7d0c3dd 100644 --- a/Porting/todo.pod +++ b/Porting/todo.pod @@ -485,7 +485,7 @@ Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall. On these systems, it might be the default compilation mode, and there is currently no guarantee that passing no use64bitall option to the Configure process will build a 32bit perl. Implementing -Duse32bit* -options would be nice for perl 5.25.5. +options would be nice for perl 5.25.6. =head2 Profile Perl - am I hot or not? @@ -1205,7 +1205,7 @@ L =head1 Big projects Tasks that will get your name mentioned in the description of the "Highlights -of 5.25.5" +of 5.25.6" =head2 make ithreads more robust diff --git a/README.haiku b/README.haiku index f4004c5..f8d80c3 100644 --- a/README.haiku +++ b/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.25.5/BePC-haiku/CORE/libperl.so . + cd /boot/common/lib; ln -s perl5/5.25.6/BePC-haiku/CORE/libperl.so . -Replace C<5.25.5> with your respective version of Perl. +Replace C<5.25.6> with your respective version of Perl. =head1 KNOWN PROBLEMS diff --git a/README.macosx b/README.macosx index d18ce0d..f365151 100644 --- a/README.macosx +++ b/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.25.5.tar.gz - tar -xzf perl-5.25.5.tar.gz - cd perl-5.25.5 + curl -O http://www.cpan.org/src/perl-5.25.6.tar.gz + tar -xzf perl-5.25.6.tar.gz + cd perl-5.25.6 ./Configure -des -Dprefix=/usr/local/ make make test @@ -20,7 +20,7 @@ This document briefly describes Perl under Mac OS X. =head1 DESCRIPTION -The latest Perl release (5.25.5 as of this writing) builds without changes +The latest Perl release (5.25.6 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/README.os2 b/README.os2 index 9bb0ac7..05c82b2 100644 --- a/README.os2 +++ b/README.os2 @@ -619,7 +619,7 @@ C in F, see L">. =item Additional Perl modules - unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.25.5/ + unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.25.6/ Same remark as above applies. Additionally, if this directory is not one of directories on @INC (and @INC is influenced by C), you diff --git a/README.vms b/README.vms index a016654..1eb5850 100644 --- a/README.vms +++ b/README.vms @@ -142,11 +142,11 @@ You may need to set up a foreign symbol for the unpacking utility of choice. Once you have done so, use a command like the following to unpack the archive: - vmstar -xvf perl-5^.25^.5.tar + vmstar -xvf perl-5^.25^.6.tar Then set default to the top-level source directory like so: - set default [.perl-5^.25^.5] + set default [.perl-5^.25^.6] and proceed with configuration as described in the next section. diff --git a/amigaos4/amigaio.c b/amigaos4/amigaio.c index 205e3d5..b50dd9b 100644 --- a/amigaos4/amigaio.c +++ b/amigaos4/amigaio.c @@ -668,7 +668,7 @@ static I32 S_do_amigaos_exec3(pTHX_ const char *incmd, int fd, int do_report) if (*cmd == '.' && isSPACE(cmd[1])) goto doshell; - if (strnEQ(cmd, "exec", 4) && isSPACE(cmd[4])) + if (strEQs(cmd, "exec") && isSPACE(cmd[4])) goto doshell; s = cmd; diff --git a/autodoc.pl b/autodoc.pl index 161310d..ce4846e 100644 --- a/autodoc.pl +++ b/autodoc.pl @@ -110,11 +110,14 @@ HDR_DOC: my $docs = ""; DOC: while (defined($doc = $get_next_line->())) { - last DOC if $doc =~ /^=\w+/; + + # Other pod commands are considered part of the current + # function's docs, so can have lists, etc. + last DOC if $doc =~ /^=(cut|for\s+apidoc|head)/; if ($doc =~ m:^\*/$:) { warn "=cut missing? $file:$line:$doc";; last DOC; - } + } $docs .= $doc; } $docs = "\n$docs" if $docs and $docs !~ /^\n/; diff --git a/av.c b/av.c index 21828a9..882be18 100644 --- a/av.c +++ b/av.c @@ -210,7 +210,7 @@ value is non-null before dereferencing it to a C. See L for more information on how to use this function on tied arrays. -The rough perl equivalent is C<$myarray[$idx]>. +The rough perl equivalent is C<$myarray[$key]>. =cut */ @@ -305,7 +305,7 @@ Note that the caller is responsible for suitably incrementing the reference count of C before the call, and decrementing it if the function returned C. -Approximate Perl equivalent: C<$myarray[$key] = $val;>. +Approximate Perl equivalent: C. See L for more information on how to use this function on tied arrays. @@ -573,7 +573,7 @@ Perl_av_create_and_push(pTHX_ AV **const avp, SV *const val) Pushes an SV (transferring control of one reference count) onto the end of the array. The array will grow automatically to accommodate the addition. -Perl equivalent: C. +Perl equivalent: C. =cut */ @@ -661,10 +661,9 @@ Perl_av_create_and_unshift_one(pTHX_ AV **const avp, SV *const val) =for apidoc av_unshift Unshift the given number of C values onto the beginning of the -array. The array will grow automatically to accommodate the addition. You -must then use C to assign values to these new elements. +array. The array will grow automatically to accommodate the addition. -Perl equivalent: S> +Perl equivalent: S> =cut */ @@ -848,11 +847,13 @@ Perl_av_fill(pTHX_ AV *av, SSize_t fill) /* =for apidoc av_delete -Deletes the element indexed by C from the array, makes the element mortal, -and returns it. If C equals C, the element is freed and null -is returned. Perl equivalent: S> for the -non-C version and a void-context S> for the -C version. +Deletes the element indexed by C from the array, makes the element +mortal, and returns it. If C equals C, the element is +freed and NULL is returned. NULL is also returned if C is out of +range. + +Perl equivalent: S> (with the +C in void context if C is present). =cut */ diff --git a/charclass_invlists.h b/charclass_invlists.h index 390e8a0..1613dda 100644 --- a/charclass_invlists.h +++ b/charclass_invlists.h @@ -91558,7 +91558,7 @@ static const U8 WB_table[24][24] = { * 37f6186253da9824bdb27f4ad867bfe8c25d4dc6bdb2f05585e40a034675a348 lib/unicore/extracted/DLineBreak.txt * ef24061b5a5dc93d7e90c2e34530ec757180ee75d872cba65ffc946e52624ae8 lib/unicore/extracted/DNumType.txt * a197371fec9a1b517058b440841f60f9378d81682084eef8db22a88cb2f96e90 lib/unicore/extracted/DNumValues.txt - * 5c7eb94310e2aaa15702fd6bed24ff0e7ab5448f9a8231d8c49ca96c9e941089 lib/unicore/mktables + * 421444fcd83fcdfecffa743c8888c3a1a8e88bcde472a80fca57d199ec5db10a lib/unicore/mktables * cdecb300baad839a6f62791229f551a4fa33f3cbdca08e378dc976466354e778 lib/unicore/version * 913d2f93f3cb6cdf1664db888bf840bc4eb074eef824e082fceda24a9445e60c regen/charset_translations.pl * 11011bc761487f5a63c8135e67248394d4cdff6f8f204a41cdfbdc8131e79406 regen/mk_invlists.pl diff --git a/config_h.SH b/config_h.SH index 099f92a..fbf6d32 100755 --- a/config_h.SH +++ b/config_h.SH @@ -3982,6 +3982,9 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * DOUBLE_IS_VAX_F_FLOAT * DOUBLE_IS_VAX_D_FLOAT * DOUBLE_IS_VAX_G_FLOAT + * DOUBLE_IS_IBM_SINGLE_32_BIT + * DOUBLE_IS_IBM_DOUBLE_64_BIT + * DOUBLE_IS_CRAY_SINGLE_64_BIT * DOUBLE_IS_UNKNOWN_FORMAT */ #define DOUBLEKIND $doublekind /**/ @@ -3996,6 +3999,9 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un #define DOUBLE_IS_VAX_F_FLOAT 9 #define DOUBLE_IS_VAX_D_FLOAT 10 #define DOUBLE_IS_VAX_G_FLOAT 11 +#define DOUBLE_IS_IBM_SINGLE_32_BIT 12 +#define DOUBLE_IS_IBM_DOUBLE_64_BIT 13 +#define DOUBLE_IS_CRAY_SINGLE_64_BIT 14 #define DOUBLE_IS_UNKNOWN_FORMAT -1 #$d_PRIfldbl PERL_PRIfldbl $sPRIfldbl /**/ #$d_PRIgldbl PERL_PRIgldbl $sPRIgldbl /**/ diff --git a/cpan/Archive-Tar/bin/ptar b/cpan/Archive-Tar/bin/ptar index 9dc6402..67d4130 100644 --- a/cpan/Archive-Tar/bin/ptar +++ b/cpan/Archive-Tar/bin/ptar @@ -94,12 +94,12 @@ sub usage { =head1 NAME - ptar - a tar-like program written in perl +ptar - a tar-like program written in perl =head1 DESCRIPTION - ptar is a small, tar look-alike program that uses the perl module - Archive::Tar to extract, create and list tar archives. +ptar is a small, tar look-alike program that uses the perl module +Archive::Tar to extract, create and list tar archives. =head1 SYNOPSIS @@ -123,7 +123,7 @@ sub usage { =head1 SEE ALSO - tar(1), L. +L, L. =cut diff --git a/cpan/Archive-Tar/lib/Archive/Tar.pm b/cpan/Archive-Tar/lib/Archive/Tar.pm index 1158270..858696f 100644 --- a/cpan/Archive-Tar/lib/Archive/Tar.pm +++ b/cpan/Archive-Tar/lib/Archive/Tar.pm @@ -31,7 +31,7 @@ use vars qw[$DEBUG $error $VERSION $WARN $FOLLOW_SYMLINK $CHOWN $CHMOD $DEBUG = 0; $WARN = 1; $FOLLOW_SYMLINK = 0; -$VERSION = "2.10"; +$VERSION = "2.14"; $CHOWN = 1; $CHMOD = 1; $SAME_PERMISSIONS = $> == 0 ? 1 : 0; diff --git a/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm b/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm index 3727bc3..b7d19d9 100644 --- a/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm +++ b/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm @@ -3,7 +3,7 @@ package Archive::Tar::Constant; BEGIN { require Exporter; - $VERSION = '2.10'; + $VERSION = '2.14'; @ISA = qw[Exporter]; require Time::Local if $^O eq "MacOS"; diff --git a/cpan/Archive-Tar/lib/Archive/Tar/File.pm b/cpan/Archive-Tar/lib/Archive/Tar/File.pm index 3acc4f8..22aadc1 100644 --- a/cpan/Archive-Tar/lib/Archive/Tar/File.pm +++ b/cpan/Archive-Tar/lib/Archive/Tar/File.pm @@ -13,7 +13,7 @@ use Archive::Tar::Constant; use vars qw[@ISA $VERSION]; #@ISA = qw[Archive::Tar]; -$VERSION = '2.10'; +$VERSION = '2.14'; ### set value to 1 to oct() it during the unpack ### diff --git a/cpan/Archive-Tar/t/09_roundtrip.t b/cpan/Archive-Tar/t/09_roundtrip.t index 82cf444..7e0120c 100644 --- a/cpan/Archive-Tar/t/09_roundtrip.t +++ b/cpan/Archive-Tar/t/09_roundtrip.t @@ -9,35 +9,70 @@ use File::Temp qw( tempfile ); use Archive::Tar; -# tarballs available for testing -my @archives = ( +BEGIN { + eval { require IPC::Cmd; }; + unless ( $@ ) { + diag('Using IPC::Cmd'); + *can_run = \&IPC::Cmd::can_run; + } + else { + diag('Using fallback'); + *can_run = sub { + require ExtUtils::MakeMaker; + my $cmd = shift; + my $_cmd = $cmd; + return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd)); + require Config; + for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') { + next if $dir eq ''; + require File::Spec; + my $abs = File::Spec->catfile($dir, $cmd); + return $abs if (-x $abs or $abs = MM->maybe_command($abs)); + } + return; + }; + } +} + +# Identify tarballs available for testing +# Some contain only files +# Others contain both files and directories + +my @file_only_archives = ( [qw( src short bar.tar )], - [qw( src long bar.tar )], - [qw( src linktest linktest_with_dir.tar )], ); -push @archives, - [qw( src short foo.tgz )], - [qw( src long foo.tgz )] +push @file_only_archives, [qw( src short foo.tgz )] + if Archive::Tar->has_zlib_support; +push @file_only_archives, [qw( src short foo.tbz )] + if Archive::Tar->has_bzip2_support; + +@file_only_archives = map File::Spec->catfile(@$_), @file_only_archives; + + +my @file_and_directory_archives = ( + [qw( src long bar.tar )], + [qw( src linktest linktest_with_dir.tar )], +); +push @file_and_directory_archives, [qw( src long foo.tgz )] if Archive::Tar->has_zlib_support; -push @archives, - [qw( src short foo.tbz )], - [qw( src long foo.tbz )] +push @file_and_directory_archives, [qw( src long foo.tbz )] if Archive::Tar->has_bzip2_support; -@archives = map File::Spec->catfile(@$_), @archives; +@file_and_directory_archives = map File::Spec->catfile(@$_), @file_and_directory_archives; +my @archives = (@file_only_archives, @file_and_directory_archives); plan tests => scalar @archives; # roundtrip test -for my $archive (@archives) { +for my $archive_name (@file_only_archives) { # create a new tarball with the same content as the old one - my $old = Archive::Tar->new($archive); + my $old = Archive::Tar->new($archive_name); my $new = Archive::Tar->new(); $new->add_files( $old->get_files ); # save differently if compressed - my $ext = ( split /\./, $archive )[-1]; + my $ext = ( split /\./, $archive_name )[-1]; my @compress = $ext =~ /t?gz$/ ? (COMPRESS_GZIP) : $ext =~ /(tbz|bz2?)$/ ? (COMPRESS_BZIP) @@ -49,14 +84,80 @@ for my $archive (@archives) { # read the archive again from disk $new = Archive::Tar->new($filename); - TODO: { - local $TODO = 'Need to work out why no trailing slash'; - # compare list of files is_deeply( [ $new->list_files ], [ $old->list_files ], - "$archive roundtrip on file names" + "$archive_name roundtrip on file names" ); - }; +} + +# rt.cpan.org #115160 +# t/09_roundtrip.t was added with all 7 then existent tests marked TODO even +# though 3 of them were passing. So what was really TODO was to figure out +# why the other 4 were not passing. +# +# It turns out that the tests are expecting behavior which, though on the face +# of it plausible and desirable, is not Archive::Tar::write()'s current +# behavior. write() -- which is used in the unit tests in this file -- relies +# on Archive::Tar::File::_prefix_and_file(). Since at least 2006 this helper +# method has had the effect of removing a trailing slash from archive entries +# which are in fact directories. So we have to adjust our expectations for +# what we'll get when round-tripping on an archive which contains one or more +# entries for directories. + +SKIP: { + skip 'No tar command found', scalar @file_and_directory_archives unless can_run('tar'); + + for my $archive_name (@file_and_directory_archives) { + my @contents; + if ($archive_name =~ m/\.tar$/) { + @contents = qx{tar tvf $archive_name}; + } + elsif ($archive_name =~ m/\.tgz$/) { + @contents = qx{tar tzvf $archive_name}; + } + elsif ($archive_name =~ m/\.tbz$/) { + @contents = qx{tar tjvf $archive_name}; + } + chomp(@contents); + my @directory_or_not; + for my $entry (@contents) { + my $perms = (split(/\s+/ => $entry))[0]; + my @chars = split('' => $perms); + push @directory_or_not, + ($chars[0] eq 'd' ? 1 : 0); + } + + # create a new tarball with the same content as the old one + my $old = Archive::Tar->new($archive_name); + my $new = Archive::Tar->new(); + $new->add_files( $old->get_files ); + + # save differently if compressed + my $ext = ( split /\./, $archive_name )[-1]; + my @compress = + $ext =~ /t?gz$/ ? (COMPRESS_GZIP) + : $ext =~ /(tbz|bz2?)$/ ? (COMPRESS_BZIP) + : (); + + my ( $fh, $filename ) = tempfile( UNLINK => 1 ); + $new->write( $filename, @compress ); + + # read the archive again from disk + $new = Archive::Tar->new($filename); + + # Adjust our expectations of + my @oldfiles = $old->list_files; + for (my $i = 0; $i <= $#oldfiles; $i++) { + chop $oldfiles[$i] if $directory_or_not[$i]; + } + + # compare list of files + is_deeply( + [ $new->list_files ], + [ @oldfiles ], + "$archive_name roundtrip on file names" + ); + } } diff --git a/cpan/B-Debug/t/debug.t b/cpan/B-Debug/t/debug.t index f4f0a10..0c79adb 100644 --- a/cpan/B-Debug/t/debug.t +++ b/cpan/B-Debug/t/debug.t @@ -56,19 +56,19 @@ my $is_thread = $Config{use5005threads} && $Config{use5005threads} eq 'define'; if ($is_thread) { $b=<= 5.021005) { $b=<$sub_name(URL, [HASHREF])/ . "\n"); + or _croak(q/Usage: \$http->$sub_name(URL, [HASHREF])/ . "\n"); return \$self->request('$req_method', \$url, \$args || {}); } HERE @@ -236,7 +236,7 @@ HERE sub post_form { my ($self, $url, $data, $args) = @_; (@_ == 3 || @_ == 4 && ref $args eq 'HASH') - or Carp::croak(q/Usage: $http->post_form(URL, DATAREF, [HASHREF])/ . "\n"); + or _croak(q/Usage: $http->post_form(URL, DATAREF, [HASHREF])/ . "\n"); my $headers = {}; while ( my ($key, $value) = each %{$args->{headers} || {}} ) { @@ -281,7 +281,7 @@ sub post_form { sub mirror { my ($self, $url, $file, $args) = @_; @_ == 3 || (@_ == 4 && ref $args eq 'HASH') - or Carp::croak(q/Usage: $http->mirror(URL, FILE, [HASHREF])/ . "\n"); + or _croak(q/Usage: $http->mirror(URL, FILE, [HASHREF])/ . "\n"); if ( exists $args->{headers} ) { my $headers = {}; @@ -298,16 +298,16 @@ sub mirror { require Fcntl; sysopen my $fh, $tempfile, Fcntl::O_CREAT()|Fcntl::O_EXCL()|Fcntl::O_WRONLY() - or Carp::croak(qq/Error: Could not create temporary file $tempfile for downloading: $!\n/); + or _croak(qq/Error: Could not create temporary file $tempfile for downloading: $!\n/); binmode $fh; $args->{data_callback} = sub { print {$fh} $_[0] }; my $response = $self->request('GET', $url, $args); close $fh - or Carp::croak(qq/Error: Caught error closing temporary file $tempfile: $!\n/); + or _croak(qq/Error: Caught error closing temporary file $tempfile: $!\n/); if ( $response->{success} ) { rename $tempfile, $file - or Carp::croak(qq/Error replacing $file with $tempfile: $!\n/); + or _croak(qq/Error replacing $file with $tempfile: $!\n/); my $lm = $response->{headers}{'last-modified'}; if ( $lm and my $mtime = $self->_parse_http_date($lm) ) { utime $mtime, $mtime, $file; @@ -417,7 +417,7 @@ my %idempotent = map { $_ => 1 } qw/GET HEAD PUT DELETE OPTIONS TRACE/; sub request { my ($self, $method, $url, $args) = @_; @_ == 3 || (@_ == 4 && ref $args eq 'HASH') - or Carp::croak(q/Usage: $http->request(METHOD, URL, [HASHREF])/ . "\n"); + or _croak(q/Usage: $http->request(METHOD, URL, [HASHREF])/ . "\n"); $args ||= {}; # we keep some state in this during _request # RFC 2616 Section 8.1.4 mandates a single retry on broken socket @@ -431,6 +431,7 @@ sub request { if (my $e = $@) { # maybe we got a response hash thrown from somewhere deep if ( ref $e eq 'HASH' && exists $e->{status} ) { + $e->{redirects} = delete $args->{_redirects} if @{ $args->{_redirects} || []}; return $e; } @@ -445,7 +446,8 @@ sub request { headers => { 'content-type' => 'text/plain', 'content-length' => length $e, - } + }, + ( @{$args->{_redirects} || []} ? (redirects => delete $args->{_redirects}) : () ), }; } return $response; @@ -468,13 +470,13 @@ sub request { sub www_form_urlencode { my ($self, $data) = @_; (@_ == 2 && ref $data) - or Carp::croak(q/Usage: $http->www_form_urlencode(DATAREF)/ . "\n"); + or _croak(q/Usage: $http->www_form_urlencode(DATAREF)/ . "\n"); (ref $data eq 'HASH' || ref $data eq 'ARRAY') - or Carp::croak("form data must be a hash or array reference\n"); + or _croak("form data must be a hash or array reference\n"); my @params = ref $data eq 'HASH' ? %$data : @$data; @params % 2 == 0 - or Carp::croak("form data reference must have an even number of terms\n"); + or _croak("form data reference must have an even number of terms\n"); my @terms; while( @params ) { @@ -692,14 +694,14 @@ sub _proxy_connect { my @proxy_vars; if ( $request->{scheme} eq 'https' ) { - Carp::croak(qq{No https_proxy defined}) unless $self->{https_proxy}; + _croak(qq{No https_proxy defined}) unless $self->{https_proxy}; @proxy_vars = $self->_split_proxy( https_proxy => $self->{https_proxy} ); if ( $proxy_vars[0] eq 'https' ) { - Carp::croak(qq{Can't proxy https over https: $request->{uri} via $self->{https_proxy}}); + _croak(qq{Can't proxy https over https: $request->{uri} via $self->{https_proxy}}); } } else { - Carp::croak(qq{No http_proxy defined}) unless $self->{http_proxy}; + _croak(qq{No http_proxy defined}) unless $self->{http_proxy}; @proxy_vars = $self->_split_proxy( http_proxy => $self->{http_proxy} ); } @@ -731,7 +733,7 @@ sub _split_proxy { defined($scheme) && length($scheme) && length($host) && length($port) && $path_query eq '/' ) { - Carp::croak(qq{$type URL must be in format http[s]://[auth@]:/\n}); + _croak(qq{$type URL must be in format http[s]://[auth@]:/\n}); } return ($scheme, $host, $port, $auth); @@ -880,7 +882,7 @@ sub _validate_cookie_jar { # duck typing for my $method ( qw/add cookie_header/ ) { - Carp::croak(qq/Cookie jar must provide the '$method' method\n/) + _croak(qq/Cookie jar must provide the '$method' method\n/) unless ref($jar) && ref($jar)->can($method); } @@ -1656,7 +1658,7 @@ HTTP::Tiny - A small, simple, correct HTTP/1.1 client =head1 VERSION -version 0.064 +version 0.070 =head1 SYNOPSIS @@ -2279,7 +2281,7 @@ David Golden =head1 CONTRIBUTORS -=for stopwords Alan Gardner Alessandro Ghedini A. Sinan Unur Brad Gilbert brian m. carlson Chris Nehren Weyl Claes Jakobsson Clinton Gormley David Golden Dean Pearce Edward Zborowski James Raspass Jeremy Mates Jess Robinson Karen Etheridge Lukas Eklund Martin J. Evans Martin-Louis Bright Mike Doherty Olaf Alders Olivier Mengué Petr Písař SkyMarshal Sören Kornetzki Steve Grazzini Syohei YOSHIDA Tatsuhiko Miyagawa Tom Hukins Tony Cook +=for stopwords Alan Gardner Alessandro Ghedini A. Sinan Unur Brad Gilbert brian m. carlson Chris Nehren Weyl Claes Jakobsson Clinton Gormley Craig Berry David Golden Dean Pearce Edward Zborowski James Raspass Jeremy Mates Jess Robinson Karen Etheridge Lukas Eklund Martin J. Evans Martin-Louis Bright Mike Doherty Nicolas Rochelemagne Olaf Alders Olivier Mengué Petr Písař SkyMarshal Sören Kornetzki Steve Grazzini Syohei YOSHIDA Tatsuhiko Miyagawa Tom Hukins Tony Cook =over 4 @@ -2321,6 +2323,10 @@ Clinton Gormley =item * +Craig A. Berry + +=item * + David Golden =item * @@ -2365,6 +2371,10 @@ Mike Doherty =item * +Nicolas Rochelemagne + +=item * + Olaf Alders =item * diff --git a/cpan/Scalar-List-Utils/ListUtil.xs b/cpan/Scalar-List-Utils/ListUtil.xs index cd84770..79e74d9 100644 --- a/cpan/Scalar-List-Utils/ListUtil.xs +++ b/cpan/Scalar-List-Utils/ListUtil.xs @@ -114,6 +114,7 @@ CODE: XSRETURN_UNDEF; retsv = ST(0); + SvGETMAGIC(retsv); magic = SvAMAGIC(retsv); if(!magic) retval = slu_sv_value(retsv); @@ -121,6 +122,7 @@ CODE: for(index = 1 ; index < items ; index++) { SV *stacksv = ST(index); SV *tmpsv; + SvGETMAGIC(stacksv); if((magic || SvAMAGIC(stacksv)) && (tmpsv = amagic_call(retsv, stacksv, gt_amg, 0))) { if(SvTRUE(tmpsv) ? !ix : ix) { retsv = stacksv; @@ -174,6 +176,7 @@ CODE: } sv = ST(0); + SvGETMAGIC(sv); switch((accum = accum_type(sv))) { case ACC_SV: retsv = TARG; @@ -189,6 +192,7 @@ CODE: for(index = 1 ; index < items ; index++) { sv = ST(index); + SvGETMAGIC(sv); if(accum < ACC_SV && SvAMAGIC(sv)){ if(!retsv) retsv = TARG; @@ -389,6 +393,7 @@ CODE: GvSV(agv) = ret; SvSetMagicSV(ret, args[1]); #ifdef dMULTICALL + assert(cv); if(!CvISXSUB(cv)) { dMULTICALL; I32 gimme = G_SCALAR; @@ -444,6 +449,7 @@ CODE: SAVESPTR(GvSV(PL_defgv)); #ifdef dMULTICALL + assert(cv); if(!CvISXSUB(cv)) { dMULTICALL; I32 gimme = G_SCALAR; @@ -515,6 +521,7 @@ PPCODE: SAVESPTR(GvSV(PL_defgv)); #ifdef dMULTICALL + assert(cv); if(!CvISXSUB(cv)) { dMULTICALL; I32 gimme = G_SCALAR; @@ -697,6 +704,7 @@ PPCODE: SAVESPTR(GvSV(agv)); SAVESPTR(GvSV(bgv)); #ifdef dMULTICALL + assert(cv); if(!CvISXSUB(cv)) { /* Since MULTICALL is about to move it */ SV **stack = PL_stack_base + ax; @@ -781,6 +789,7 @@ PPCODE: SAVESPTR(GvSV(agv)); SAVESPTR(GvSV(bgv)); #ifdef dMULTICALL + assert(cv); if(!CvISXSUB(cv)) { /* Since MULTICALL is about to move it */ SV **stack = PL_stack_base + ax; @@ -871,6 +880,7 @@ PPCODE: * Skip it on those versions (RT#87857) */ #if defined(dMULTICALL) && (PERL_BCDVERSION > 0x5010000 || PERL_BCDVERSION < 0x5008009) + assert(cv); if(!CvISXSUB(cv)) { /* Since MULTICALL is about to move it */ SV **stack = PL_stack_base + ax; diff --git a/cpan/Scalar-List-Utils/lib/List/Util.pm b/cpan/Scalar-List-Utils/lib/List/Util.pm index d537053..1f7d4c0 100644 --- a/cpan/Scalar-List-Utils/lib/List/Util.pm +++ b/cpan/Scalar-List-Utils/lib/List/Util.pm @@ -15,7 +15,7 @@ our @EXPORT_OK = qw( all any first min max minstr maxstr none notall product reduce sum sum0 shuffle uniq uniqnum uniqstr pairs unpairs pairkeys pairvalues pairmap pairgrep pairfirst ); -our $VERSION = "1.45_01"; +our $VERSION = "1.46"; our $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @@ -50,9 +50,9 @@ List::Util - A selection of general-utility list subroutines max maxstr min minstr product sum sum0 - pairs pairkeys pairvalues pairfirst pairgrep pairmap + pairs unpairs pairkeys pairvalues pairfirst pairgrep pairmap - shuffle uniqnum uniqstr + shuffle uniq uniqnum uniqstr ); =head1 DESCRIPTION @@ -517,6 +517,10 @@ are enabled (C). In addition, an C in the returned list is coerced into a numerical zero, so that the entire list of values returned by C are well-behaved as numbers. +Note also that multiple IEEE C values are treated as duplicates of +each other, regardless of any differences in their payloads, and despite +the fact that C<< 0+'NaN' == 0+'NaN' >> yields false. + =head2 uniqstr my @subset = uniqstr @values diff --git a/cpan/Scalar-List-Utils/lib/List/Util/XS.pm b/cpan/Scalar-List-Utils/lib/List/Util/XS.pm index 67093bd..0c397ea 100644 --- a/cpan/Scalar-List-Utils/lib/List/Util/XS.pm +++ b/cpan/Scalar-List-Utils/lib/List/Util/XS.pm @@ -3,7 +3,7 @@ use strict; use warnings; use List::Util; -our $VERSION = "1.45_01"; # FIXUP +our $VERSION = "1.46"; # FIXUP $VERSION = eval $VERSION; # FIXUP 1; diff --git a/cpan/Scalar-List-Utils/lib/Scalar/Util.pm b/cpan/Scalar-List-Utils/lib/Scalar/Util.pm index eb430cd..1aec9f8 100644 --- a/cpan/Scalar-List-Utils/lib/Scalar/Util.pm +++ b/cpan/Scalar-List-Utils/lib/Scalar/Util.pm @@ -17,7 +17,7 @@ our @EXPORT_OK = qw( dualvar isdual isvstring looks_like_number openhandle readonly set_prototype tainted ); -our $VERSION = "1.45_01"; +our $VERSION = "1.46"; $VERSION = eval $VERSION; require List::Util; # List::Util loads the XS diff --git a/cpan/Scalar-List-Utils/lib/Sub/Util.pm b/cpan/Scalar-List-Utils/lib/Sub/Util.pm index 79e80fc..1f90c50 100644 --- a/cpan/Scalar-List-Utils/lib/Sub/Util.pm +++ b/cpan/Scalar-List-Utils/lib/Sub/Util.pm @@ -15,7 +15,7 @@ our @EXPORT_OK = qw( subname set_subname ); -our $VERSION = "1.45_01"; +our $VERSION = "1.46"; $VERSION = eval $VERSION; require List::Util; # as it has the XS diff --git a/cpan/Scalar-List-Utils/t/00version.t b/cpan/Scalar-List-Utils/t/00version.t index b04bd33..2aa25cf 100644 --- a/cpan/Scalar-List-Utils/t/00version.t +++ b/cpan/Scalar-List-Utils/t/00version.t @@ -6,10 +6,13 @@ use warnings; use Scalar::Util (); use List::Util (); use List::Util::XS (); -use Test::More tests => 2; +use Sub::Util (); +use Test::More tests => 4; -is( $Scalar::Util::VERSION, $List::Util::VERSION, "VERSION mismatch"); +is( $Scalar::Util::VERSION, $List::Util::VERSION, "VERSION mismatch between Scalar/List"); my $has_xs = eval { Scalar::Util->import('dualvar'); 1 }; my $xs_version = $has_xs ? $List::Util::VERSION : undef; -is( $List::Util::XS::VERSION, $xs_version, "XS VERSION"); +is( $List::Util::XS::VERSION, $xs_version, "VERSION mismatch between LU::XS and LU"); +is( $Sub::Util::VERSION, $Scalar::Util::VERSION, "VERSION mistmatch between Sub/Scalar"); +is( $Sub::Util::VERSION, $List::Util::VERSION, "VERSION mistmatch between Sub/List"); diff --git a/cpan/Scalar-List-Utils/t/min.t b/cpan/Scalar-List-Utils/t/min.t index a7dfb10..2b85b41 100644 --- a/cpan/Scalar-List-Utils/t/min.t +++ b/cpan/Scalar-List-Utils/t/min.t @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 10; +use Test::More tests => 22; use List::Util qw(min); my $v; @@ -62,3 +62,21 @@ is($v, 1, 'bigint and normal int'); $v = min(1, 2, $v1, 3); is($v, 1, 'bigint and normal int'); +{ + # test that min/max and sum call GETMAGIC properly + # note, in my tests how this fails depends on exactly + # which List::Util subs are called and in what order. + my @list; + for my $size (10, 20, 10, 30) { + @list = ( 1 ) x $size; + + my $sum= List::Util::sum( 0, $#list ); + ok( $sum == $size-1, "sum(\$#list, 0) == $size-1"); + + my $min= List::Util::min( 15, $#list ); + ok( $min <= 15, "min(15,$size)" ); + + my $max= List::Util::max( 0, $#list ); + ok( $max == $size-1, "max(\$#list, 0) == $size-1"); + } +} diff --git a/cpan/Test-Simple/lib/Test/Builder.pm b/cpan/Test-Simple/lib/Test/Builder.pm index f0e7598..d3febbc 100644 --- a/cpan/Test-Simple/lib/Test/Builder.pm +++ b/cpan/Test-Simple/lib/Test/Builder.pm @@ -4,7 +4,7 @@ use 5.006; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { if( $] < 5.008 ) { @@ -197,6 +197,7 @@ sub child { $meta->{Test_Results} = []; $meta->{subevents} = $subevents; $meta->{subtest_id} = $hub->id; + $meta->{subtest_buffered} = $parent->format ? 0 : 1; $self->_add_ts_hooks; @@ -269,6 +270,7 @@ FAIL else { $parent->{subevents} = $meta->{subevents}; $parent->{subtest_id} = $meta->{subtest_id}; + $parent->{subtest_buffered} = $meta->{subtest_buffered}; $parent->ok( $chub->is_passing, $meta->{Name} ); } } @@ -627,10 +629,11 @@ sub ok { my @attrs; my $subevents = delete $self->{subevents}; my $subtest_id = delete $self->{subtest_id}; + my $subtest_buffered = delete $self->{subtest_buffered}; my $epkg = 'Test2::Event::Ok'; if ($subevents) { $epkg = 'Test2::Event::Subtest'; - push @attrs => (subevents => $subevents, subtest_id => $subtest_id); + push @attrs => (subevents => $subevents, subtest_id => $subtest_id, buffered => $subtest_buffered); } my $e = bless { diff --git a/cpan/Test-Simple/lib/Test/Builder/Formatter.pm b/cpan/Test-Simple/lib/Test/Builder/Formatter.pm index 83ee55f..8aa7e2c 100644 --- a/cpan/Test-Simple/lib/Test/Builder/Formatter.pm +++ b/cpan/Test-Simple/lib/Test/Builder/Formatter.pm @@ -2,7 +2,7 @@ package Test::Builder::Formatter; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Formatter::TAP; our @ISA = qw(Test2::Formatter::TAP) } diff --git a/cpan/Test-Simple/lib/Test/Builder/Module.pm b/cpan/Test-Simple/lib/Test/Builder/Module.pm index 354ff58..fe35da6 100644 --- a/cpan/Test-Simple/lib/Test/Builder/Module.pm +++ b/cpan/Test-Simple/lib/Test/Builder/Module.pm @@ -7,7 +7,7 @@ use Test::Builder; require Exporter; our @ISA = qw(Exporter); -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; =head1 NAME diff --git a/cpan/Test-Simple/lib/Test/Builder/Tester.pm b/cpan/Test-Simple/lib/Test/Builder/Tester.pm index c4ea80c..716d521 100644 --- a/cpan/Test-Simple/lib/Test/Builder/Tester.pm +++ b/cpan/Test-Simple/lib/Test/Builder/Tester.pm @@ -1,7 +1,7 @@ package Test::Builder::Tester; use strict; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Test::Builder; use Symbol; @@ -450,11 +450,12 @@ tests than we strictly should have and it'll register any failures we had that we were testing for as real failures. The color function doesn't work unless L is -compatible with your terminal. +compatible with your terminal. Additionally, L +must be installed on windows platforms for color output. Bugs (and requests for new features) can be reported to the author -though the CPAN RT system: -L +though GitHub: +L =head1 AUTHOR @@ -560,6 +561,8 @@ sub complaint { # get color eval { require Term::ANSIColor }; unless($@) { + eval { require Win32::Console::ANSI } if 'MSWin32' eq $^O; # support color on windows platforms + # colours my $green = Term::ANSIColor::color("black") . Term::ANSIColor::color("on_green"); diff --git a/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm b/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm index a83edca..4ab8670 100644 --- a/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm +++ b/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm @@ -1,7 +1,7 @@ package Test::Builder::Tester::Color; use strict; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; require Test::Builder::Tester; diff --git a/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm b/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm index 632e3fa..7da9339 100644 --- a/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm +++ b/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm @@ -2,7 +2,7 @@ package Test::Builder::TodoDiag; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Event::Diag; our @ISA = qw(Test2::Event::Diag) } diff --git a/cpan/Test-Simple/lib/Test/More.pm b/cpan/Test-Simple/lib/Test/More.pm index 3705a91..6239877 100644 --- a/cpan/Test-Simple/lib/Test/More.pm +++ b/cpan/Test-Simple/lib/Test/More.pm @@ -17,7 +17,7 @@ sub _carp { return warn @_, " at $file line $line\n"; } -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Test::Builder::Module; our @ISA = qw(Test::Builder::Module); @@ -1184,7 +1184,7 @@ sub _type { return '' if !ref $thing; - for my $type (qw(Regexp ARRAY HASH REF SCALAR GLOB CODE)) { + for my $type (qw(Regexp ARRAY HASH REF SCALAR GLOB CODE VSTRING)) { return $type if UNIVERSAL::isa( $thing, $type ); } @@ -1976,7 +1976,7 @@ the perl-qa gang. =head1 BUGS -See F to report and view bugs. +See F to report and view bugs. =head1 SOURCE diff --git a/cpan/Test-Simple/lib/Test/Simple.pm b/cpan/Test-Simple/lib/Test/Simple.pm index 3ff4c22..b0261f8 100644 --- a/cpan/Test-Simple/lib/Test/Simple.pm +++ b/cpan/Test-Simple/lib/Test/Simple.pm @@ -4,7 +4,7 @@ use 5.006; use strict; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Test::Builder::Module; our @ISA = qw(Test::Builder::Module); diff --git a/cpan/Test-Simple/lib/Test/Tester.pm b/cpan/Test-Simple/lib/Test/Tester.pm index 68780b7..96c42e1 100644 --- a/cpan/Test-Simple/lib/Test/Tester.pm +++ b/cpan/Test-Simple/lib/Test/Tester.pm @@ -18,7 +18,7 @@ require Exporter; use vars qw( @ISA @EXPORT ); -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; @EXPORT = qw( run_tests check_tests check_test cmp_results show_space ); @ISA = qw( Exporter ); @@ -42,8 +42,9 @@ my $reset = ''; if (my $want_colour = $ENV{TESTTESTERCOLOUR} || $ENV{TESTTESTERCOLOR}) { - if (eval "require Term::ANSIColor") + if (eval { require Term::ANSIColor; 1 }) { + eval { require Win32::Console::ANSI } if 'MSWin32' eq $^O; # support color on windows platforms my ($f, $b) = split(",", $want_colour); $colour = Term::ANSIColor::color($f).Term::ANSIColor::color("on_$b"); $reset = Term::ANSIColor::color("reset"); diff --git a/cpan/Test-Simple/lib/Test/Tester/Capture.pm b/cpan/Test-Simple/lib/Test/Tester/Capture.pm index 6a169d6..eeb0d2a 100644 --- a/cpan/Test-Simple/lib/Test/Tester/Capture.pm +++ b/cpan/Test-Simple/lib/Test/Tester/Capture.pm @@ -2,7 +2,7 @@ use strict; package Test::Tester::Capture; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Test::Builder; diff --git a/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm b/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm index 22eace0..d768b9b 100644 --- a/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm +++ b/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm @@ -3,7 +3,7 @@ use strict; package Test::Tester::CaptureRunner; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Test::Tester::Capture; diff --git a/cpan/Test-Simple/lib/Test/Tester/Delegate.pm b/cpan/Test-Simple/lib/Test/Tester/Delegate.pm index 13b798b..91cee4c 100644 --- a/cpan/Test-Simple/lib/Test/Tester/Delegate.pm +++ b/cpan/Test-Simple/lib/Test/Tester/Delegate.pm @@ -3,7 +3,7 @@ use warnings; package Test::Tester::Delegate; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use vars '$AUTOLOAD'; diff --git a/cpan/Test-Simple/lib/Test/use/ok.pm b/cpan/Test-Simple/lib/Test/use/ok.pm index dd5fcef..5d0591f 100644 --- a/cpan/Test-Simple/lib/Test/use/ok.pm +++ b/cpan/Test-Simple/lib/Test/use/ok.pm @@ -1,7 +1,7 @@ package Test::use::ok; use 5.005; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; __END__ diff --git a/cpan/Test-Simple/lib/Test2.pm b/cpan/Test-Simple/lib/Test2.pm index 85a1ee3..29f8411 100644 --- a/cpan/Test-Simple/lib/Test2.pm +++ b/cpan/Test-Simple/lib/Test2.pm @@ -2,7 +2,7 @@ package Test2; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; 1; diff --git a/cpan/Test-Simple/lib/Test2/API.pm b/cpan/Test-Simple/lib/Test2/API.pm index 118d7e6..ba25944 100644 --- a/cpan/Test-Simple/lib/Test2/API.pm +++ b/cpan/Test-Simple/lib/Test2/API.pm @@ -2,7 +2,7 @@ package Test2::API; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; my $INST; @@ -447,6 +447,14 @@ sub run_subtest { $hub->format(undef) if $hide; } } + elsif (! $parent->format) { + # If our parent has no format that means we're in a buffered subtest + # and now we're trying to run a streaming subtest. There's really no + # way for that to work, so we need to force the use of a buffered + # subtest here as + # well. https://github.com/Test-More/test-more/issues/721 + $buffered = 1; + } if ($inherit_trace) { my $orig = $code; diff --git a/cpan/Test-Simple/lib/Test2/API/Breakage.pm b/cpan/Test-Simple/lib/Test2/API/Breakage.pm index 0569bc9..7b21cca 100644 --- a/cpan/Test-Simple/lib/Test2/API/Breakage.pm +++ b/cpan/Test-Simple/lib/Test2/API/Breakage.pm @@ -2,7 +2,7 @@ package Test2::API::Breakage; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Test2::Util qw/pkg_to_file/; diff --git a/cpan/Test-Simple/lib/Test2/API/Context.pm b/cpan/Test-Simple/lib/Test2/API/Context.pm index a83560e..c4e1ece 100644 --- a/cpan/Test-Simple/lib/Test2/API/Context.pm +++ b/cpan/Test-Simple/lib/Test2/API/Context.pm @@ -2,7 +2,7 @@ package Test2::API::Context; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Carp qw/confess croak longmess/; @@ -66,9 +66,13 @@ sub DESTROY { # Do not show the warning if it looks like an exception has been thrown, or # if the context is not local to this process or thread. - if($self->{+EVAL_ERROR} eq $@ && $hub->is_local) { - my $frame = $self->{+_IS_SPAWN} || $self->{+TRACE}->frame; - warn <<" EOT"; + { + # Sometimes $@ is uninitialized, not a problem in this case so do not + # show the warning about using eq. + no warnings 'uninitialized'; + if($self->{+EVAL_ERROR} eq $@ && $hub->is_local) { + my $frame = $self->{+_IS_SPAWN} || $self->{+TRACE}->frame; + warn <<" EOT"; A context appears to have been destroyed without first calling release(). Based on \$@ it does not look like an exception was thrown (this is not always a reliable test) @@ -84,7 +88,8 @@ release(): Tool: $frame->[3] Cleaning up the CONTEXT stack... - EOT + EOT + } } return if $self->{+_IS_SPAWN}; diff --git a/cpan/Test-Simple/lib/Test2/API/Instance.pm b/cpan/Test-Simple/lib/Test2/API/Instance.pm index 1b41c66..556cad1 100644 --- a/cpan/Test-Simple/lib/Test2/API/Instance.pm +++ b/cpan/Test-Simple/lib/Test2/API/Instance.pm @@ -2,7 +2,7 @@ package Test2::API::Instance; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; our @CARP_NOT = qw/Test2::API Test2::API::Instance Test2::IPC::Driver Test2::Formatter/; diff --git a/cpan/Test-Simple/lib/Test2/API/Stack.pm b/cpan/Test-Simple/lib/Test2/API/Stack.pm index 89fe2eb..6db9f57 100644 --- a/cpan/Test-Simple/lib/Test2/API/Stack.pm +++ b/cpan/Test-Simple/lib/Test2/API/Stack.pm @@ -2,7 +2,7 @@ package Test2::API::Stack; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Test2::Hub(); diff --git a/cpan/Test-Simple/lib/Test2/Event.pm b/cpan/Test-Simple/lib/Test2/Event.pm index 5f3427b..a0aa619 100644 --- a/cpan/Test-Simple/lib/Test2/Event.pm +++ b/cpan/Test-Simple/lib/Test2/Event.pm @@ -2,7 +2,7 @@ package Test2::Event; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Test2::Util::HashBase qw/trace nested in_subtest subtest_id/; diff --git a/cpan/Test-Simple/lib/Test2/Event/Bail.pm b/cpan/Test-Simple/lib/Test2/Event/Bail.pm index 9523a78..06c94ce 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Bail.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Bail.pm @@ -2,7 +2,7 @@ package Test2::Event::Bail; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Diag.pm b/cpan/Test-Simple/lib/Test2/Event/Diag.pm index a1339a4..08b8621 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Diag.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Diag.pm @@ -2,7 +2,7 @@ package Test2::Event::Diag; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Exception.pm b/cpan/Test-Simple/lib/Test2/Event/Exception.pm index 3e3b020..4f7c7c5 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Exception.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Exception.pm @@ -2,7 +2,7 @@ package Test2::Event::Exception; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Generic.pm b/cpan/Test-Simple/lib/Test2/Event/Generic.pm index 64187f4..ff47ced 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Generic.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Generic.pm @@ -5,7 +5,7 @@ use warnings; use Carp qw/croak/; use Scalar::Util qw/reftype/; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } use Test2::Util::HashBase; diff --git a/cpan/Test-Simple/lib/Test2/Event/Info.pm b/cpan/Test-Simple/lib/Test2/Event/Info.pm index 6446b38..7b1db5f 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Info.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Info.pm @@ -4,7 +4,7 @@ use warnings; use Scalar::Util qw/blessed/; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } use Test2::Util::HashBase qw/diagnostics renderer/; diff --git a/cpan/Test-Simple/lib/Test2/Event/Note.pm b/cpan/Test-Simple/lib/Test2/Event/Note.pm index 03f5bd0..d0df97d 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Note.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Note.pm @@ -2,7 +2,7 @@ package Test2::Event::Note; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Ok.pm b/cpan/Test-Simple/lib/Test2/Event/Ok.pm index b9dab95..d0cf32f 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Ok.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Ok.pm @@ -2,7 +2,7 @@ package Test2::Event::Ok; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Plan.pm b/cpan/Test-Simple/lib/Test2/Event/Plan.pm index b6b3ea9..1986f59 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Plan.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Plan.pm @@ -2,7 +2,7 @@ package Test2::Event::Plan; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Skip.pm b/cpan/Test-Simple/lib/Test2/Event/Skip.pm index a54ddf6..dedb06d 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Skip.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Skip.pm @@ -2,7 +2,7 @@ package Test2::Event::Skip; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Subtest.pm b/cpan/Test-Simple/lib/Test2/Event/Subtest.pm index 00a07c1..f0b026e 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Subtest.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Subtest.pm @@ -2,7 +2,7 @@ package Test2::Event::Subtest; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Waiting.pm b/cpan/Test-Simple/lib/Test2/Event/Waiting.pm index 694e741..2baa533 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Waiting.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Waiting.pm @@ -2,7 +2,7 @@ package Test2::Event::Waiting; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Formatter.pm b/cpan/Test-Simple/lib/Test2/Formatter.pm index 9d0cc1a..f3536c8 100644 --- a/cpan/Test-Simple/lib/Test2/Formatter.pm +++ b/cpan/Test-Simple/lib/Test2/Formatter.pm @@ -2,7 +2,7 @@ package Test2::Formatter; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; my %ADDED; diff --git a/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm b/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm index d69f767..93f53f0 100644 --- a/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm +++ b/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm @@ -3,7 +3,7 @@ use strict; use warnings; require PerlIO; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Test2::Util::HashBase qw{ diff --git a/cpan/Test-Simple/lib/Test2/Hub.pm b/cpan/Test-Simple/lib/Test2/Hub.pm index 1c64333..edc873b 100644 --- a/cpan/Test-Simple/lib/Test2/Hub.pm +++ b/cpan/Test-Simple/lib/Test2/Hub.pm @@ -2,7 +2,7 @@ package Test2::Hub; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Carp qw/carp croak confess/; diff --git a/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm b/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm index 9ed129b..31bdd14 100644 --- a/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm +++ b/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm @@ -2,7 +2,7 @@ package Test2::Hub::Interceptor; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Test2::Hub::Interceptor::Terminator(); diff --git a/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm b/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm index 83dd0a9..95fb1f1 100644 --- a/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm +++ b/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm @@ -2,7 +2,7 @@ package Test2::Hub::Interceptor::Terminator; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; 1; diff --git a/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm b/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm index 5cbafb8..88b079a 100644 --- a/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm +++ b/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm @@ -2,7 +2,7 @@ package Test2::Hub::Subtest; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) } diff --git a/cpan/Test-Simple/lib/Test2/IPC.pm b/cpan/Test-Simple/lib/Test2/IPC.pm index d8d04f3..620f1f8 100644 --- a/cpan/Test-Simple/lib/Test2/IPC.pm +++ b/cpan/Test-Simple/lib/Test2/IPC.pm @@ -2,7 +2,7 @@ package Test2::IPC; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Test2::API::Instance; diff --git a/cpan/Test-Simple/lib/Test2/IPC/Driver.pm b/cpan/Test-Simple/lib/Test2/IPC/Driver.pm index 68b65be..6e9d0c3 100644 --- a/cpan/Test-Simple/lib/Test2/IPC/Driver.pm +++ b/cpan/Test-Simple/lib/Test2/IPC/Driver.pm @@ -2,7 +2,7 @@ package Test2::IPC::Driver; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Carp qw/confess longmess/; diff --git a/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm b/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm index ad6a0c2..5fddaca 100644 --- a/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm +++ b/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm @@ -2,7 +2,7 @@ package Test2::IPC::Driver::Files; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; BEGIN { require Test2::IPC::Driver; our @ISA = qw(Test2::IPC::Driver) } diff --git a/cpan/Test-Simple/lib/Test2/Util.pm b/cpan/Test-Simple/lib/Test2/Util.pm index 436d8b8..9b810c6 100644 --- a/cpan/Test-Simple/lib/Test2/Util.pm +++ b/cpan/Test-Simple/lib/Test2/Util.pm @@ -2,7 +2,7 @@ package Test2::Util; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Config qw/%Config/; diff --git a/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm b/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm index d4bbf20..e99b360 100644 --- a/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm +++ b/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm @@ -2,7 +2,7 @@ package Test2::Util::ExternalMeta; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Carp qw/croak/; diff --git a/cpan/Test-Simple/lib/Test2/Util/HashBase.pm b/cpan/Test-Simple/lib/Test2/Util/HashBase.pm index 19cb225..6594c52 100644 --- a/cpan/Test-Simple/lib/Test2/Util/HashBase.pm +++ b/cpan/Test-Simple/lib/Test2/Util/HashBase.pm @@ -2,7 +2,7 @@ package Test2::Util::HashBase; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; require Carp; diff --git a/cpan/Test-Simple/lib/Test2/Util/Trace.pm b/cpan/Test-Simple/lib/Test2/Util/Trace.pm index 3ad6578..189fe5f 100644 --- a/cpan/Test-Simple/lib/Test2/Util/Trace.pm +++ b/cpan/Test-Simple/lib/Test2/Util/Trace.pm @@ -2,7 +2,7 @@ package Test2::Util::Trace; use strict; use warnings; -our $VERSION = '1.302056'; +our $VERSION = '1.302059'; use Test2::Util qw/get_tid/; diff --git a/cpan/Test-Simple/lib/ok.pm b/cpan/Test-Simple/lib/ok.pm index e1552c2..4a42d75 100644 --- a/cpan/Test-Simple/lib/ok.pm +++ b/cpan/Test-Simple/lib/ok.pm @@ -1,5 +1,5 @@ package ok; -$ok::VERSION = '1.302056'; +$ok::VERSION = '1.302059'; use strict; use Test::More (); diff --git a/cpan/Test-Simple/t/Legacy/is_deeply_fail.t b/cpan/Test-Simple/t/Legacy/is_deeply_fail.t index 26036fb..21efe87 100644 --- a/cpan/Test-Simple/t/Legacy/is_deeply_fail.t +++ b/cpan/Test-Simple/t/Legacy/is_deeply_fail.t @@ -25,7 +25,7 @@ package main; my $TB = Test::Builder->create; -$TB->plan(tests => 100); +$TB->plan(tests => 102); # Utility testing functions. sub ok ($;$) { @@ -419,3 +419,11 @@ ERR ok !is_deeply( {x => ''}, {x => undef}, "{x => ''} != {x => undef}" ); is( $out, "not ok 41 - {x => ''} != {x => undef}\n" ); } + +# this will also happily fail before 5.10, even though there's no VSTRING ref type +{ + my $version1 = v1.2.3; + my $version2 = v1.2.4; + ok !is_deeply( [\\$version1], [\\$version2], "version objects"); + is( $out, "not ok 42 - version objects\n" ); +} diff --git a/cpan/Test-Simple/t/Test2/behavior/special_names.t b/cpan/Test-Simple/t/Test2/behavior/special_names.t index 90882f5..b748cfa 100644 --- a/cpan/Test-Simple/t/Test2/behavior/special_names.t +++ b/cpan/Test-Simple/t/Test2/behavior/special_names.t @@ -12,38 +12,6 @@ BEGIN { require "t/tools.pl" }; use Test2::API qw/test2_stack/; -sub capture(&) { - my $code = shift; - - my ($err, $out) = ("", ""); - - my $handles = test2_stack->top->format->handles; - my ($ok, $e); - { - my ($out_fh, $err_fh); - - ($ok, $e) = try { - open($out_fh, '>', \$out) or die "Failed to open a temporary STDOUT: $!"; - open($err_fh, '>', \$err) or die "Failed to open a temporary STDERR: $!"; - - test2_stack->top->format->set_handles([$out_fh, $err_fh, $out_fh]); - - $code->(); - }; - } - test2_stack->top->format->set_handles($handles); - - die $e unless $ok; - - $err =~ s/ $/_/mg; - $out =~ s/ $/_/mg; - - return { - STDOUT => $out, - STDERR => $err, - }; -} - # Ensure the top hub is generated test2_stack->top; diff --git a/cpan/Test-Simple/t/Test2/legacy/TAP.t b/cpan/Test-Simple/t/Test2/legacy/TAP.t index 971849f..84bb18a 100644 --- a/cpan/Test-Simple/t/Test2/legacy/TAP.t +++ b/cpan/Test-Simple/t/Test2/legacy/TAP.t @@ -14,38 +14,6 @@ BEGIN { require "t/tools.pl" }; use Test2::API qw/test2_stack/; use Test::Builder::Formatter; -sub capture(&) { - my $code = shift; - - my ($err, $out) = ("", ""); - - my $handles = test2_stack->top->format->handles; - my ($ok, $e); - { - my ($out_fh, $err_fh); - - ($ok, $e) = try { - open($out_fh, '>', \$out) or die "Failed to open a temporary STDOUT: $!"; - open($err_fh, '>', \$err) or die "Failed to open a temporary STDERR: $!"; - - test2_stack->top->format->set_handles([$out_fh, $err_fh, $out_fh]); - - $code->(); - }; - } - test2_stack->top->format->set_handles($handles); - - die $e unless $ok; - - $err =~ s/ $/_/mg; - $out =~ s/ $/_/mg; - - return { - STDOUT => $out, - STDERR => $err, - }; -} - # The tools in tools.pl have some intentional differences from the Test::More # versions, these behave more like Test::More which is important for # back-compat. diff --git a/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t b/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t index 1691751..6ede9df 100644 --- a/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t +++ b/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t @@ -6,7 +6,7 @@ use List::Util qw/shuffle/; use strict; use warnings; -sub capture(&) { +sub simple_capture(&) { my $code = shift; my ($err, $out) = ("", ""); @@ -136,7 +136,7 @@ ok(!-d $tmpdir, "cleaned up temp dir"); my @lines; my $file = __FILE__; - my $out = capture { + my $out = simple_capture { local $ENV{T2_KEEP_TEMPDIR} = 1; my $ipc = Test2::IPC::Driver::Files->new(); @@ -175,7 +175,7 @@ ok(!-d $tmpdir, "cleaned up temp dir"); like($out->{STDERR}, qr/^IPC Fatal Error: File for hub '12345-1-1' already exists/m, "Got message for duplicate hub"); like($out->{STDERR}, qr/^IPC Fatal Error: File for hub '12345-1-1' does not exist/m, "Cannot remove hub twice"); - $out = capture { + $out = simple_capture { my $ipc = Test2::IPC::Driver::Files->new(); $ipc->add_hub($hid); my $trace = Test2::Util::Trace->new(frame => [__PACKAGE__, __FILE__, __LINE__, 'foo']); @@ -190,7 +190,7 @@ ok(!-d $tmpdir, "cleaned up temp dir"); like($out->{STDERR}, qr/Origin PID:\s+$$/, "Got pid"); like($out->{STDERR}, qr/Error: Can't store GLOB items/, "Got cause"); - $out = capture { + $out = simple_capture { my $ipc = Test2::IPC::Driver::Files->new(); local $@; eval { $ipc->send($hid, bless({ foo => 1 }, 'Foo')) }; @@ -199,7 +199,7 @@ ok(!-d $tmpdir, "cleaned up temp dir"); }; like($out->{STDERR}, qr/IPC Fatal Error: hub '12345-1-1' is not available, failed to send event!/, "Cannot send to missing hub"); - $out = capture { + $out = simple_capture { my $ipc = Test2::IPC::Driver::Files->new(); $tmpdir = $ipc->tempdir; $ipc->add_hub($hid); @@ -212,7 +212,7 @@ ok(!-d $tmpdir, "cleaned up temp dir"); like($out->{STDERR}, qr/IPC Fatal Error: Not all files from hub '12345-1-1' have been collected/, "Leftover files"); like($out->{STDERR}, qr/IPC Fatal Error: Leftover files in the directory \(.*\.ready\)/, "What file"); - $out = capture { + $out = simple_capture { my $ipc = Test2::IPC::Driver::Files->new(); $ipc->add_hub($hid); @@ -233,7 +233,7 @@ ok(!-d $tmpdir, "cleaned up temp dir"); close($fh); Storable::store({}, $fn); - $out = capture { eval { $ipc->read_event_file($fn) } }; + $out = simple_capture { eval { $ipc->read_event_file($fn) } }; like( $out->{STDERR}, qr/IPC Fatal Error: Got an unblessed object: 'HASH\(.*\)'/, @@ -241,7 +241,7 @@ ok(!-d $tmpdir, "cleaned up temp dir"); ); Storable::store(bless({}, 'Test2::Event::FakeEvent'), $fn); - $out = capture { eval { $ipc->read_event_file($fn) } }; + $out = simple_capture { eval { $ipc->read_event_file($fn) } }; like( $out->{STDERR}, qr{IPC Fatal Error: Event has unknown type \(Test2::Event::FakeEvent\), tried to load 'Test2/Event/FakeEvent\.pm' but failed: Can't locate Test2/Event/FakeEvent\.pm}, @@ -249,7 +249,7 @@ ok(!-d $tmpdir, "cleaned up temp dir"); ); Storable::store(bless({}, 'Test2::API'), $fn); - $out = capture { eval { $ipc->read_event_file($fn) } }; + $out = simple_capture { eval { $ipc->read_event_file($fn) } }; like( $out->{STDERR}, qr{'Test2::API=HASH\(.*\)' is not a 'Test2::Event' object}, @@ -257,7 +257,7 @@ ok(!-d $tmpdir, "cleaned up temp dir"); ); Storable::store(bless({}, 'Foo'), $fn); - $out = capture { + $out = simple_capture { local @INC; push @INC => ('t/lib', 'lib'); eval { $ipc->read_event_file($fn) }; diff --git a/cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t b/cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t new file mode 100644 index 0000000..d83ed18 --- /dev/null +++ b/cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t @@ -0,0 +1,96 @@ +use strict; +use warnings; + +BEGIN { require "t/tools.pl" } + +# This module's exports interfere with the ones in t/tools.pl +use Test::More (); +use Test2::API qw/run_subtest test2_stack/; + +{ + test2_stack->top; + my $temp_hub = test2_stack->new_hub(); + + my $output = capture { + run_subtest( + 'parent', + sub { + run_subtest( + 'buffered', + sub { + ok(1, 'b1'); + ok(1, 'b2'); + }, + {buffered => 1}, + ); + run_subtest( + 'streamed', + sub { + ok(1, 's1'); + ok(1, 's2'); + }, + {buffered => 0}, + ); + }, + {buffered => 1}, + ); + }; + + test2_stack->pop($temp_hub); + + Test::More::subtest( + 'Test2::API::run_subtest', + sub { + is($output->{STDERR}, q{}, 'no output on stderr'); + like($output->{STDOUT}, qr/ +ok 1 - b1/, 'got ok output for tests in buffered subtest'); + like($output->{STDOUT}, qr/ +ok 2 - b2/, 'got ok output for tests in buffered subtest'); + like($output->{STDOUT}, qr/ +ok 1 - s1/, 'got ok output for tests in streamed subtest'); + like($output->{STDOUT}, qr/ +ok 2 - s2/, 'got ok output for tests in streamed subtest'); + } + ); +} + +{ + test2_stack->top; + my $temp_hub = test2_stack->new_hub(); + + my $output = capture { + run_subtest( + 'parent', + sub { + run_subtest( + 'buffered', + sub { + ok(1, 'b1'); + ok(1, 'b2'); + }, + {buffered => 1}, + ); + Test::More::subtest( + 'streamed', + sub { + ok(1, 's1'); + ok(1, 's2'); + }, + {buffered => 0}, + ); + }, + {buffered => 1}, + ); + }; + + test2_stack->pop($temp_hub); + + Test::More::subtest( + 'Test::More::subtest and Test2::API::run_subtest', + sub { + is($output->{STDERR}, q{}, 'no output on stderr'); + like($output->{STDOUT}, qr/ +ok 1 - b1/, 'got ok output for tests in buffered subtest'); + like($output->{STDOUT}, qr/ +ok 2 - b2/, 'got ok output for tests in buffered subtest'); + like($output->{STDOUT}, qr/ +ok 1 - s1/, 'got ok output for tests in streamed subtest'); + like($output->{STDOUT}, qr/ +ok 2 - s2/, 'got ok output for tests in streamed subtest'); + } + ); +} + +done_testing; diff --git a/cpan/Test-Simple/t/tools.pl b/cpan/Test-Simple/t/tools.pl index e683121..e97bc78 100644 --- a/cpan/Test-Simple/t/tools.pl +++ b/cpan/Test-Simple/t/tools.pl @@ -1,7 +1,7 @@ use Scalar::Util qw/blessed/; use Test2::Util qw/try/; -use Test2::API qw/context run_subtest/; +use Test2::API qw/context run_subtest test2_stack/; use Test2::Hub::Interceptor(); use Test2::Hub::Interceptor::Terminator(); @@ -214,4 +214,36 @@ sub tests { return $bool; } +sub capture(&) { + my $code = shift; + + my ($err, $out) = ("", ""); + + my $handles = test2_stack->top->format->handles; + my ($ok, $e); + { + my ($out_fh, $err_fh); + + ($ok, $e) = try { + open($out_fh, '>', \$out) or die "Failed to open a temporary STDOUT: $!"; + open($err_fh, '>', \$err) or die "Failed to open a temporary STDERR: $!"; + + test2_stack->top->format->set_handles([$out_fh, $err_fh, $out_fh]); + + $code->(); + }; + } + test2_stack->top->format->set_handles($handles); + + die $e unless $ok; + + $err =~ s/ $/_/mg; + $out =~ s/ $/_/mg; + + return { + STDOUT => $out, + STDERR => $err, + }; +} + 1; diff --git a/cpan/parent/lib/parent.pm b/cpan/parent/lib/parent.pm index f6e8cd4..e1ccef4 100644 --- a/cpan/parent/lib/parent.pm +++ b/cpan/parent/lib/parent.pm @@ -1,7 +1,7 @@ package parent; use strict; use vars qw($VERSION); -$VERSION = '0.234'; +$VERSION = '0.236'; sub import { my $class = shift; @@ -19,11 +19,11 @@ sub import { { no strict 'refs'; - push @{"$inheritor\::ISA"}, @_; + push @{"$inheritor\::ISA"}, @_; # dies if a loop is detected }; }; -"All your base are belong to us" +1; __END__ diff --git a/cpan/parent/t/parent-pmc.t b/cpan/parent/t/parent-pmc.t index 01f70f7..68137eb 100644 --- a/cpan/parent/t/parent-pmc.t +++ b/cpan/parent/t/parent-pmc.t @@ -14,11 +14,25 @@ use lib 't/lib'; plan skip_all => ".pmc are only available with 5.6 and later" if $] < 5.006; -my $no_pmc = defined &Config::non_bincompat_options - ? (grep $_ eq 'PERL_DISABLE_PMC', Config::non_bincompat_options()) - : ($Config::Config{ccflags} =~ /-DPERL_DISABLE_PMC\b/); -plan skip_all => ".pmc are disabled in this perl" - if $no_pmc; +# Skip this test if perl is compiled with PERL_DISABLE_PMC +# +my $pmc = 1; +if (Config->can('non_bincompat_options')) { # $] ge '5.014' + $pmc = 0 + if grep { $_ eq 'PERL_DISABLE_PMC' } Config::non_bincompat_options(); +} elsif (eval { + require Config::Perl::V; + Config::Perl::V->VERSION('0.10'); +}) { + $pmc = 0 + if Config::Perl::V::myconfig()->{options}{PERL_DISABLE_PMC}; +} else { + $pmc = 0 + if $Config::Config{ccflags} =~ /(?:^|\s)-DPERL_DISABLE_PMC\b/; +} + +plan skip_all => 'Perl is built with PERL_DISABLE_PMC' unless $pmc; + plan tests => 3; use vars qw($got_here); diff --git a/cpan/parent/t/rt62341.t.disabled b/cpan/parent/t/rt62341.t.disabled new file mode 100644 index 0000000..c348193 --- /dev/null +++ b/cpan/parent/t/rt62341.t.disabled @@ -0,0 +1,101 @@ +#!perl -w +use strict; +use Benchmark qw/cmpthese/; +use Test::More tests => 1; + +{ + package Bench::Base; + sub foo { 1 }; +} + +my $c; +my $sub_iter = 100; + +cmpthese (-1 => { + recompute_existing_ISA => sub { + $c++; + for (1..$sub_iter) { + my $class = "Bench::Par::Sub_${c}"; + no strict 'refs'; + @{ "$class\::ISA"} = (@{ "$class\::ISA"},'Bench::Base'); + die unless $class->foo; + } + }, + recompute_new_ISA => sub { + $c++; + for (1..$sub_iter) { + my $class = "Bench::Par::Sub_${c}::SubSub${_}"; + no strict 'refs'; + @{ "$class\::ISA"} = (@{ "$class\::ISA"},'Bench::Base'); + die unless $class->foo; + } + }, + push_existing_ISA => sub { + $c++; + for (1..$sub_iter) { + my $class = "Bench::Par::Sub_${c}"; + no strict 'refs'; + push @{ "$class\::ISA"}, 'Bench::Base'; + die unless $class->foo; + } + }, + push_new_ISA => sub { + $c++; + for (1..$sub_iter) { + my $class = "Bench::Par::Sub_${c}::SubSub${_}"; + no strict 'refs'; + push @{ "$class\::ISA"}, 'Bench::Base'; + die unless $class->foo; + } + }, + push_new_FOO => sub { + $c++; + for (1..$sub_iter) { + my $class = "Bench::Par::Sub_${c}::SubSub${_}"; + no strict 'refs'; + push @{ "$class\::FOO"}, 'Bench::Base'; + #die unless $class->foo; + } + }, + push_existing_FOO => sub { + $c++; + for (1..$sub_iter) { + my $class = "Bench::Par::Sub_${c}"; + no strict 'refs'; + push @{ "$class\::FOO"}, 'Bench::Base'; + #die unless $class->foo; + } + }, + recompute_existing_FOO => sub { + $c++; + for (1..$sub_iter) { + my $class = "Bench::Par::Sub_${c}"; + no strict 'refs'; + @{ "$class\::FOO"} = (@{ "$class\::FOO"}, 'Bench::Base'); + #die unless $class->foo; + } + }, + + # Take a reference and manipulate that, in case string references are slow + refcompute_existing_FOO => sub { + $c++; + for (1..$sub_iter) { + my $class = "Bench::Par::Sub_${c}"; + no strict 'refs'; + my $aref = \@{ "$class\::FOO"}; + @{ $aref } = (@{ $aref }, 'Bench::Base'); + #die unless $class->foo; + } + }, + recompute_new_FOO => sub { + $c++; + for (1..$sub_iter) { + my $class = "Bench::Par::Sub_${c}::SubSub${_}"; + no strict 'refs'; + @{ "$class\::FOO"} = (@{ "$class\::FOO"}, 'Bench::Base'); + #die unless $class->foo; + } + }, +}); + +pass "Benchmarks run"; diff --git a/cpan/podlators/lib/Pod/Man.pm b/cpan/podlators/lib/Pod/Man.pm index b739559..a0872b4 100644 --- a/cpan/podlators/lib/Pod/Man.pm +++ b/cpan/podlators/lib/Pod/Man.pm @@ -43,7 +43,7 @@ BEGIN { @ISA = qw(Pod::Simple); -$VERSION = '4.07'; +$VERSION = '4.08'; # Set the debugging level. If someone has inserted a debug function into this # class already, use that. Otherwise, use any Pod::Simple debug function @@ -216,12 +216,13 @@ sub init_fonts { } # Initialize the quotes that we'll be using for C<> text. This requires some -# special handling, both to parse the user parameter if given and to make sure -# that the quotes will be safe against *roff. Sets the internal hash keys -# LQUOTE and RQUOTE. +# special handling, both to parse the user parameters if given and to make +# sure that the quotes will be safe against *roff. Sets the internal hash +# keys LQUOTE and RQUOTE. sub init_quotes { my ($self) = (@_); + # Handle the quotes option first, which sets both quotes at once. $$self{quotes} ||= '"'; if ($$self{quotes} eq 'none') { $$self{LQUOTE} = $$self{RQUOTE} = ''; @@ -235,6 +236,14 @@ sub init_quotes { croak(qq(Invalid quote specification "$$self{quotes}")) } + # Now handle the lquote and rquote options. + if (defined $$self{lquote}) { + $$self{LQUOTE} = $$self{lquote} eq 'none' ? q{} : $$self{lquote}; + } + if (defined $$self{rquote}) { + $$self{RQUOTE} = $$self{rquote} eq 'none' ? q{} : $$self{rquote}; + } + # Double the first quote; note that this should not be s///g as two double # quotes is represented in *roff as three double quotes, not four. Weird, # I know. @@ -514,9 +523,9 @@ sub guesswork { # entire warranty disclaimers in man page output into small caps. if ($$self{MAGIC_SMALLCAPS}) { s{ - ( ^ | [\s\(\"\'\`\[\{<>] | \\[ ] ) # (1) - ( [A-Z] [A-Z] (?: [/A-Z+:\d_\$&] | \\- | [.,\"\s] )* ) # (2) - (?= [\s>\}\]\(\)\'\".?!,;] | \\*\(-- | \\[ ] | $ ) # (3) + ( ^ | [\s\(\"\'\`\[\{<>] | \\[ ] ) # (1) + ( [A-Z] [A-Z] (?: \s? [/A-Z+:\d_\$&] | \\- | \s? [.,\"] )* ) # (2) + (?= [\s>\}\]\(\)\'\".?!,;] | \\*\(-- | \\[ ] | $ ) # (3) } { $1 . '\s-1' . $2 . '\s0' }egx; @@ -549,6 +558,7 @@ sub guesswork { if ($$self{MAGIC_MANREF}) { s{ ( \b | \\s-1 ) + (?whine (1, 'No name given for document'); $name = 'STDIN'; } @@ -1632,7 +1646,7 @@ __END__ =for stopwords en em ALLCAPS teeny fixedbold fixeditalic fixedbolditalic stderr utf8 UTF-8 Allbery Sean Burke Ossanna Solaris formatters troff uppercased -Christiansen nourls parsers Kernighan +Christiansen nourls parsers Kernighan lquote rquote =head1 NAME @@ -1743,6 +1757,20 @@ Pod::Man doesn't assume you have this, and defaults to C. Some systems (such as Solaris) have this font available as C. Only matters for B output. +=item lquote + +=item rquote + +Sets the quote marks used to surround CE> text. C sets the +left quote mark and C sets the right quote mark. Either may also +be set to the special value C, in which case no quote mark is added +on that side of CE> text (but the font is still changed for troff +output). + +Also see the C option, which can be used to set both quotes at once. +If both C and one of the other options is set, C or C +overrides C. + =item name Set the name of the manual page for the C<.TH> macro. Without this @@ -1752,9 +1780,9 @@ parsed to see if it is a Perl module path. If it is, a path like C<.../lib/Pod/Man.pm> is converted into a name like C. This option, if given, overrides any automatic determination of the name. -If generating a manual page from standard input, this option is required, -since there's otherwise no way for Pod::Man to know what to use for the -manual page name. +If generating a manual page from standard input, the name will be set to +C if this option is not provided. Providing this option is strongly +recommended to set a meaningful manual page name. =item nourls @@ -1783,6 +1811,10 @@ This may also be set to the special value C, in which case no quote marks are added around CE> text (but the font is still changed for troff output). +Also see the C and C options, which can be used to set the +left and right quotes independently. If both C and one of the other +options is set, C or C overrides C. + =item release Set the centered footer for the C<.TH> macro. By default, this is set to diff --git a/cpan/podlators/lib/Pod/ParseLink.pm b/cpan/podlators/lib/Pod/ParseLink.pm index a9e6b34..c9b964b 100644 --- a/cpan/podlators/lib/Pod/ParseLink.pm +++ b/cpan/podlators/lib/Pod/ParseLink.pm @@ -31,7 +31,7 @@ use Exporter; @ISA = qw(Exporter); @EXPORT = qw(parselink); -$VERSION = '4.07'; +$VERSION = '4.08'; ############################################################################## # Implementation diff --git a/cpan/podlators/lib/Pod/Text.pm b/cpan/podlators/lib/Pod/Text.pm index e141da2..240e8a9 100644 --- a/cpan/podlators/lib/Pod/Text.pm +++ b/cpan/podlators/lib/Pod/Text.pm @@ -39,7 +39,7 @@ use Pod::Simple (); # We have to export pod2text for backward compatibility. @EXPORT = qw(pod2text); -$VERSION = '4.07'; +$VERSION = '4.08'; ############################################################################## # Initialization diff --git a/cpan/podlators/lib/Pod/Text/Color.pm b/cpan/podlators/lib/Pod/Text/Color.pm index b67742e..ccd46c6 100644 --- a/cpan/podlators/lib/Pod/Text/Color.pm +++ b/cpan/podlators/lib/Pod/Text/Color.pm @@ -27,7 +27,7 @@ use vars qw(@ISA $VERSION); @ISA = qw(Pod::Text); -$VERSION = '4.07'; +$VERSION = '4.08'; ############################################################################## # Overrides diff --git a/cpan/podlators/lib/Pod/Text/Overstrike.pm b/cpan/podlators/lib/Pod/Text/Overstrike.pm index 1592026..a2ba5bb 100644 --- a/cpan/podlators/lib/Pod/Text/Overstrike.pm +++ b/cpan/podlators/lib/Pod/Text/Overstrike.pm @@ -35,7 +35,7 @@ use Pod::Text (); @ISA = qw(Pod::Text); -$VERSION = '4.07'; +$VERSION = '4.08'; ############################################################################## # Overrides diff --git a/cpan/podlators/lib/Pod/Text/Termcap.pm b/cpan/podlators/lib/Pod/Text/Termcap.pm index d533e76..b0823e0 100644 --- a/cpan/podlators/lib/Pod/Text/Termcap.pm +++ b/cpan/podlators/lib/Pod/Text/Termcap.pm @@ -28,7 +28,7 @@ use vars qw(@ISA $VERSION); @ISA = qw(Pod::Text); -$VERSION = '4.07'; +$VERSION = '4.08'; ############################################################################## # Overrides diff --git a/cpan/podlators/scripts/pod2man.PL b/cpan/podlators/scripts/pod2man.PL index f40c126..b70057b 100644 --- a/cpan/podlators/scripts/pod2man.PL +++ b/cpan/podlators/scripts/pod2man.PL @@ -76,8 +76,9 @@ my %options; Getopt::Long::config ('bundling_override'); GetOptions (\%options, 'center|c=s', 'date|d=s', 'errors=s', 'fixed=s', 'fixedbold=s', 'fixeditalic=s', 'fixedbolditalic=s', 'help|h', - 'lax|l', 'name|n=s', 'nourls', 'official|o', 'quotes|q=s', - 'release|r=s', 'section|s=s', 'stderr', 'verbose|v', 'utf8|u') + 'lax|l', 'lquote=s', 'name|n=s', 'nourls', 'official|o', + 'quotes|q=s', 'release|r=s', 'rquote=s', 'section|s=s', 'stderr', + 'verbose|v', 'utf8|u') or exit 1; pod2usage (0) if $options{help}; @@ -125,7 +126,7 @@ __END__ =for stopwords en em --stderr stderr --utf8 UTF-8 overdo markup MT-LEVEL Allbery Solaris URL troff troff-specific formatters uppercased Christiansen --nourls UTC -prepend +prepend lquote rquote =head1 NAME @@ -136,9 +137,9 @@ pod2man - Convert POD data to formatted *roff input pod2man [B<--center>=I] [B<--date>=I] [B<--errors>=I