perl.perl5.changes http://www.nntp.perl.org/group/perl.perl5.changes/ ... Copyright 1998-2016 perl.org Sat, 23 Jul 2016 04:40:38 +0000 ask@perl.org [perl.git] branch smoke-me/khw-locale, created. v5.25.3-11-g6ce5219 by Karl Williamson In perl.git, the branch smoke-me/khw-locale has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/6ce5219e4a8f0de5030a1b154949ff12e1e80f90?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at 6ce5219e4a8f0de5030a1b154949ff12e1e80f90 (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit 6ce5219e4a8f0de5030a1b154949ff12e1e80f90<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Jul 20 10:33:40 2016 -0600<br/><br/> XXX flesh out commit msg: locale.c: Make my_strerror() thread-safe<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47697.html Sat, 23 Jul 2016 04:17:51 +0000 [perl.git] branch smoke-me/khw-locale, deleted. v5.25.3-10-g6f153a9 by Karl Williamson In perl.git, the branch smoke-me/khw-locale has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=6f153a973131d0fc4260160e1a780986b587bf73&gt;<br/><br/> was 6f153a973131d0fc4260160e1a780986b587bf73<br/><br/>-----------------------------------------------------------------------<br/>6f153a973131d0fc4260160e1a780986b587bf73 f<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47696.html Sat, 23 Jul 2016 04:17:48 +0000 [perl.git] branch blead, updated. v5.25.3-10-g51787ac by Dave Mitchell In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/51787acf7725ae7cd885f261996c34c0c59a0a3e?hp=33bc5d3d6ec3a139b32d094c90b2f78d7a3a2399&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 51787acf7725ae7cd885f261996c34c0c59a0a3e<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Fri Jul 22 23:21:49 2016 +0100<br/><br/> S_pop_eval_context_maybe_croak: silence warning<br/> <br/> g++ is too dumb to notice that in<br/> <br/> SV *s;<br/> <br/> if (foo)<br/> s = ...;<br/> ...;<br/> if (foo)<br/> ...do something with s...;<br/> <br/> s can&#39;t be used uninitialised.<br/><br/>M pp_ctl.c<br/><br/>commit c058d55cdd578aa02d7f4672d43db43adc7b5a9f<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Fri Jul 22 23:17:15 2016 +0100<br/><br/> fix g++ compiler warning<br/> <br/> toke.c:4698:36: warning: enumeral and non-enumeral type in conditional expression [-Wextra]<br/> return REPORT(dojoin_was == 1 ? &#39;)&#39; : POSTJOIN);<br/> <br/> I have no idea why mixing enums and non-emums is bad in C++. This commit<br/> just casts the hell out the expression to shut it up.<br/><br/>M toke.c<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> pp_ctl.c | 2 +-<br/> toke.c | 2 +-<br/> 2 files changed, 2 insertions(+), 2 deletions(-)<br/><br/>diff --git a/pp_ctl.c b/pp_ctl.c<br/>index 5a66e26..155349e 100644<br/>--- a/pp_ctl.c<br/>+++ b/pp_ctl.c<br/>@@ -1598,7 +1598,7 @@ Perl_qerror(pTHX_ SV *err)<br/> static void<br/> S_pop_eval_context_maybe_croak(pTHX_ PERL_CONTEXT *cx, SV *errsv, int action)<br/> {<br/>- SV *namesv;<br/>+ SV *namesv = NULL; /* init to avoid dumb compiler warning */<br/> bool do_croak;<br/> <br/> CX_LEAVE_SCOPE(cx);<br/>diff --git a/toke.c b/toke.c<br/>index abf0377..c42d037 100644<br/>--- a/toke.c<br/>+++ b/toke.c<br/>@@ -4695,7 +4695,7 @@ Perl_yylex(pTHX)<br/> PL_lex_dojoin = FALSE;<br/> PL_lex_state = LEX_INTERPCONCAT;<br/> PL_lex_allbrackets--;<br/>- return REPORT(dojoin_was == 1 ? &#39;)&#39; : POSTJOIN);<br/>+ return REPORT(dojoin_was == 1 ? (int)&#39;)&#39; : (int)POSTJOIN);<br/> }<br/> if (PL_lex_inwhat == OP_SUBST &amp;&amp; PL_linestr == PL_lex_repl<br/> &amp;&amp; SvEVALED(PL_lex_repl))<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47695.html Fri, 22 Jul 2016 22:33:59 +0000 [perl.git] branch smoke-me/davem/sub_argsB3, created.v5.25.3-21-g8925116 by Dave Mitchell In perl.git, the branch smoke-me/davem/sub_argsB3 has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/89251161ea05a6c1feff7d40d7d1a9838ad96e71?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at 89251161ea05a6c1feff7d40d7d1a9838ad96e71 (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit 89251161ea05a6c1feff7d40d7d1a9838ad96e71<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Fri Jul 22 21:26:44 2016 +0100<br/><br/> more pruning of Porting/deparse-skips.txt<br/> <br/> In the summary output of<br/> <br/> cd t; ./perl TEST -deparse<br/> <br/> it doesn&#39;t distinguish between test scripts expected to pass that fail,<br/> and those expected to fail that succeed. They&#39;re all listed as failures.<br/> <br/> So I&#39;ve just removed 5 further entries from deparse-skips.txt that I<br/> hadn&#39;t noticed were passing. I don&#39;t know when they first started<br/> unexpectedly passing.<br/> <br/> It&#39;s down to 78 unexpected failures now. Not good, since a couple of<br/> years ago there were no unexpected failures, but at least its down from<br/> the 194 at the start of this branch. The entries in deparse-skips.txt<br/> have also reduced by about 28 over the course of this branch.<br/><br/>M Porting/deparse-skips.txt<br/><br/>commit 604de00bea43e56ae99de17a916dfb51311ab315<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Fri Jul 22 18:25:08 2016 +0100<br/><br/> deparse subroutine signatures<br/> <br/> If &#39;use feature &quot;signatures&quot;&#39; is in scope, deparse subs using the<br/> <br/> sub foo ($a,$b) { ... }<br/> <br/> syntax rather than<br/> <br/> sub foo {<br/> my $a = $_[0];<br/> my $b = $_[0];<br/> ...<br/> }<br/> <br/> Only do this where the sequence of OP_SIGCHECK and OP_SIGELEM etc ops<br/> make up a consistent signature. Otherwise (e.g. someone&#39;s modified<br/> it with a parser hook), fall back to &#39;my $a = $_[0]&#39; syntax.<br/><br/>M lib/B/Deparse.pm<br/>M lib/B/Deparse.t<br/><br/>commit 660e0823fea9e708fc08eb4fc12b1b287da8bcc6<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Fri Jul 22 14:24:33 2016 +0100<br/><br/> fix deparsing of Test::More&#39;s use_ok()<br/> <br/> Code like<br/> <br/> BEGIN {use_ok &#39;Net::Ping&#39;};<br/> <br/> got deparsed as:<br/> <br/> BEGIN {use_ok &#39;Net::Ping&#39;};<br/> use Net::Ping (@{$args[0];});<br/> <br/> This is due to the tricks it plays faking up and evaling a use statement.<br/> <br/> This commit filters out these spurious &#39;use&#39;s in the Deparse output.<br/> <br/> With this commit, 109 &#39;TEST -deparse&#39; tests that were expected to pass<br/> but had been failing for some time, now pass; and 22 tests that were<br/> expected to fail, now pass.<br/> <br/> I also removed the entry for lib/Switch/t/ in Porting/deparse-skips.txt,<br/> since Switch is no longer bundled.<br/><br/>M Porting/deparse-skips.txt<br/>M lib/B/Deparse.pm<br/><br/>commit d7b88708f96b975f68e11458a8827002a4102562<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Fri Jul 22 13:12:17 2016 +0100<br/><br/> OP_MULTIDEREF: remove ghost entry in op_aux list<br/> <br/> In the case where a multideref expression ends with an index that initially<br/> looks simple (e.g. const or var) but turns out to be complex, the code<br/> which optimises a sequence of aelem etc into a single multideref backs off<br/> from including that last index expression in the multideref, but still<br/> allocates a slot in the op_aux array for that ghost index.<br/> <br/> For example in<br/> <br/> $expr-&gt;{foo}[0][1+$x]<br/> <br/> it allocates a slot for the &quot;1&quot; constant but then doesn;t use it.<br/> <br/> This isn&#39;t an issue for multideref itself, but when running Deparse or<br/> otherwise inspecting the op tree, the $op-&gt;aux_list() method returns a<br/> list of the elements of the op_aux array with an extra garbage element at<br/> the end, which can cause Deparse to crash.<br/><br/>M lib/B/Deparse.t<br/>M op.c<br/><br/>commit 7832d296529cf9a5817f11e9be4c19f9e5e7287c<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Fri Jul 22 12:19:03 2016 +0100<br/><br/> fix up exists etc deparsing<br/> <br/> a general multideref expression like<br/> <br/> exists +($r//{})-&gt;{foo}<br/> <br/> was being deparsed without the &#39;+&#39;, meaning it was being interpreted<br/> as<br/> <br/> (exists ($r//{}))-&gt;{foo}<br/><br/>M lib/B/Deparse.pm<br/><br/>commit 2e6a13d87d036222a38da6d1b0930dfbae4488c3<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Fri Jul 22 10:08:50 2016 +0100<br/><br/> handle deparsing of sub prototypes with sigs<br/> <br/> when &#39;use feature &quot;signatures&quot;&#39; is in scope, subroutine prototypes<br/> should be deparsed as &#39;:prototype($$)&#39; rather than &#39;($$)&#39;<br/> <br/> I&#39;ve also tweaked the sub in question slightly to make adding<br/> signature deparsing easier later on.<br/><br/>M Porting/deparse-skips.txt<br/>M lib/B/Deparse.pm<br/><br/>commit 15e1235d2aed98b9c3a61302d78a7a356715af5f<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Thu Jul 21 15:11:50 2016 +0100<br/><br/> Deparse: emit pragmas before each sub<br/> <br/> Before deparsing a sub, emit any pragma changes associated with the<br/> first nextstate in the sub *before* emitting the sub itself.<br/> <br/> So this:<br/> <br/> use strict;<br/> sub f { ...}<br/> <br/> doesn&#39;t get deparsed as<br/> <br/> sub f { use strict; ...}<br/> <br/> There was already a partial fix for this in pp_nextstate. Making<br/> next_todo() always emit pragmas catches more cases and makes pp_nextstate<br/> simpler.<br/><br/>M lib/B/Deparse.pm<br/>M lib/B/Deparse.t<br/><br/>commit 8950c747c350bb9be5ea6f506910208ffe2c178d<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Thu Jul 21 14:21:01 2016 +0100<br/><br/> Deparse: use more local vars in next_todo()<br/> <br/> assign @$ent to some local vars rather than directly using $ent-&gt;[2] etc:<br/> makes the code more self-documenting.<br/> <br/> Should be no functional changes.<br/><br/>M lib/B/Deparse.pm<br/><br/>commit 648cc59dddb1b7bb52194c0bab968967e9a37d50<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Thu Jul 21 14:01:17 2016 +0100<br/><br/> Deparse: move pragma deparsing into separate sub<br/> <br/> Currently this is done in pp_nextstate(). Move it out into a separate<br/> method called praggmata() so in the next commit it can be used elsewhere.<br/> <br/> Should be no functional changes.<br/><br/>M lib/B/Deparse.pm<br/><br/>commit 1ebdfcc97bf1725ce252806664ea80e03bca49d0<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Wed Jul 20 17:31:00 2016 +0100<br/><br/> deparse pragmas before subs<br/> <br/> Currently something like this:<br/> <br/> use strict;<br/> sub f {<br/> print;<br/> }<br/> print;<br/> <br/> deparses as:<br/> <br/> sub f {<br/> use strict;<br/> print $_;<br/> }<br/> use strict;<br/> print $_;<br/> <br/> (Note where the &#39;strict&#39;s appear). Although ugly, this is semantically<br/> correct for most pragmas. However, it breaks down for &quot;use feature<br/> &#39;signatures&#39;&quot;, since that needs to appear before the sub if the<br/> deparsing of the sub&#39;s header is altered to reflect signature syntax or<br/> not, based on whether the pragma is in scope.<br/> <br/> This commit changes the deparsing of each nextstate op so that it outputs<br/> any pragmas which reflect changes since the last nextstate&#39;s hints etc,<br/> *before* deparsing any subs whose COP is less than that of the new<br/> nextstate. After this commit, the code above deparses as:<br/> <br/> use strict;<br/> sub f {<br/> print $_;<br/> }<br/> print $_;<br/> <br/> It also allows some hacky code to be removed from Deparse.pm that<br/> ensured that &quot;no warnings experimental::lexical_subs&quot; appeared before<br/> each lexical sub was deparsed.<br/><br/>M lib/B/Deparse-core.t<br/>M lib/B/Deparse.pm<br/>M lib/B/Deparse.t<br/><br/>commit bb4e407f3ca121b64de68e45649784a5d45de19b<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Sat Jul 9 10:41:08 2016 +0100<br/><br/> add OP_ARGELEM, OP_ARGDEFELEM, OP_ARGCHECK ops<br/> <br/> Currently subroutine signature parsing emits many small discrete ops<br/> to implement arg handling. This commit replaces them with a couple of ops<br/> per signature element, plus an initial signature check op.<br/> <br/> These new ops are added to the OP tree during parsing, so will be visible<br/> to hooks called up to and including peephole optimisation. It is intended,<br/> in a few commits time, that the peephole optimiser will take these<br/> per-element ops, and replace them with a single OP_SIGNATURE op which<br/> handles the whole signature in a single go. So normally these ops wont<br/> actually get executed much. But adding these intermediate-level ops gives<br/> three advantages:<br/> <br/> 1) it allows the parser to efficiently generate subtrees containing<br/> individual signature elements, which can&#39;t be done if only OP_SIGNATURE<br/> or discrete ops are available;<br/> 2) prior to optimisation, it provides a simple and straightforward<br/> representation of the signature;<br/> 3) hooks can mess with the signature OP subtree in ways that make it<br/> no longer possible to optimise into an OP_SIGNATURE, but which can<br/> still be executed, deparsed etc (if less efficiently).<br/> <br/> This code:<br/> <br/> use feature &quot;signatures&quot;;<br/> sub f($a, $, $b = 1, @c) {$a}<br/> <br/> under &#39;perl -MO=Concise,f&#39; now gives:<br/> <br/> d &lt;1&gt; leavesub[1 ref] K/REFC,1 -&gt;(end)<br/> - &lt;@&gt; lineseq KP -&gt;d<br/> 1 &lt;;&gt; nextstate(main 84 foo:6) v:%,469762048 -&gt;2<br/> 2 &lt;+&gt; argcheck(3,1,@) v -&gt;3<br/> 3 &lt;;&gt; nextstate(main 81 foo:6) v:%,469762048 -&gt;4<br/> 4 &lt;+&gt; argelem(0)[$a:81,84] v/SV -&gt;5<br/> 5 &lt;;&gt; nextstate(main 82 foo:6) v:%,469762048 -&gt;6<br/> 8 &lt;+&gt; argelem(2)[$b:82,84] vKS/SV -&gt;9<br/> 6 &lt;|&gt; argdefelem(other-&gt;7)[2] sK -&gt;8<br/> 7 &lt;$&gt; const(IV 1) s -&gt;8<br/> 9 &lt;;&gt; nextstate(main 83 foo:6) v:%,469762048 -&gt;a<br/> a &lt;+&gt; argelem(3)[@c:83,84] v/AV -&gt;b<br/> - &lt;;&gt; ex-nextstate(main 84 foo:6) v:%,469762048 -&gt;b<br/> b &lt;;&gt; nextstate(main 84 foo:6) v:%,469762048 -&gt;c<br/> c &lt;0&gt; padsv[$a:81,84] s -&gt;d<br/> <br/> The argcheck(3,1,@) op knows the number of positional params (3), the<br/> number of optional params (1), and whether it has an array / hash slurpy<br/> element at the end. This op is responsible for checking that @_ contains<br/> the right number of args.<br/> <br/> A simple argelem(0)[$a] op does the equivalent of &#39;my $a = $_[0]&#39;.<br/> Similarly, argelem(3)[@c] is equivalent to &#39;my @c = @_[3..$#_]&#39;.<br/> If it has a child, it gets its arg from the stack rather than using $_[N].<br/> Currently the only used child is the logop argdefelem.<br/> <br/> argdefelem(other-&gt;7)[2] is equivalent to &#39;@_ &gt; 2 ? $_[2] : other&#39;.<br/> <br/> But note that these ops assume that the lexical var being introduced<br/> is undef/empty, so can only be used at the top of the sub, or where<br/> tricksy gotos, closures and &#39;if 0&#39;s aren&#39;t used.<br/><br/>M dump.c<br/>M embed.fnc<br/>M embed.h<br/>M ext/B/B.pm<br/>M ext/B/B.xs<br/>M ext/B/B/Concise.pm<br/>M ext/Opcode/Opcode.pm<br/>M lib/B/Deparse.pm<br/>M lib/B/Op_private.pm<br/>M op.c<br/>M opcode.h<br/>M opnames.h<br/>M perly.act<br/>M perly.h<br/>M perly.tab<br/>M perly.y<br/>M pod/perldiag.pod<br/>M pp.c<br/>M pp_hot.c<br/>M pp_proto.h<br/>M proto.h<br/>M regen/op_private<br/>M regen/opcodes<br/>M t/op/signatures.t<br/>M toke.c<br/><br/>commit 29d37808d70fee2b8d01a201c89cedf82bab65c7<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Thu Jul 14 10:47:01 2016 +0100<br/><br/> make op.c:S_alloc_LOGOP() non-static<br/> <br/> ... principally so that it can be accessed from perly.y too.<br/><br/>M embed.fnc<br/>M embed.h<br/>M op.c<br/>M proto.h<br/><br/>commit 14b1032158684457ae3dd442f8638164d493bdd3<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Thu Jan 28 15:14:57 2016 +0000<br/><br/> sub signatures: use parser rather than lexer<br/> <br/> Currently the signature of a sub (i.e. the &#39;($a, $b = 1)&#39; bit) is parsed<br/> in toke.c using a roll-your-own mini-parser. This commit makes<br/> the signature be part of the general grammar in perly.y instead.<br/> <br/> In theory it should still generate the same optree as before, except<br/> that an OP_STUB is no longer appended to each signature optree: it&#39;s<br/> unnecessary, and I assume that was a hangover from early development of<br/> the original signature code.<br/> <br/> Error messages have changed somewhat: the generic &#39;Parse error&#39; has<br/> changed to the generic &#39;syntax error&#39;, with the addition of &#39;, near &quot;xyz&quot;&#39;<br/> now appended to each message.<br/> <br/> Also, some specific error messages have been added; for example<br/> (@a=1) now says that slurpy params can&#39;t have a default vale, rather than<br/> just giving &#39;Parse error&#39;.<br/> <br/> It introduces a new lexer expect state, XSIGVAR, since otherwise when<br/> the lexer saw something like &#39;($, ...)&#39; it would see the identifier<br/> &#39;$,&#39; rather than the tokens &#39;$&#39; and &#39;,&#39;.<br/> <br/> Since it no longer uses parse_termexpr(), it is no longer subject to the<br/> bug (#123010) associated with that; so sub f($x = print, $y) {}<br/> is no longer mis-interpreted as sub f($x = print($_, $y)) {}<br/><br/>M embed.fnc<br/>M embed.h<br/>M op.c<br/>M parser.h<br/>M perl.h<br/>M perly.act<br/>M perly.c<br/>M perly.h<br/>M perly.tab<br/>M perly.y<br/>M pod/perldiag.pod<br/>M proto.h<br/>M sv.c<br/>M t/op/signatures.t<br/>M toke.c<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47694.html Fri, 22 Jul 2016 21:10:34 +0000 [perl.git] branch smoke-me/davem/sub_argsB2, deleted.v5.25.2-151-g478752f by Dave Mitchell In perl.git, the branch smoke-me/davem/sub_argsB2 has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=478752fed26af9b4f9d8d74ddf164e7c16362724&gt;<br/><br/> was 478752fed26af9b4f9d8d74ddf164e7c16362724<br/><br/>-----------------------------------------------------------------------<br/>478752fed26af9b4f9d8d74ddf164e7c16362724 add OP_SIGELEM, OP_SIGDEFELEM, OP_SIGCHECK ops<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47693.html Fri, 22 Jul 2016 21:10:22 +0000 [perl.git] branch smoke-me/khw-locale, created. v5.25.3-10-g6f153a9 by Karl Williamson In perl.git, the branch smoke-me/khw-locale has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/6f153a973131d0fc4260160e1a780986b587bf73?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at 6f153a973131d0fc4260160e1a780986b587bf73 (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit 6f153a973131d0fc4260160e1a780986b587bf73<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Fri Jul 22 13:54:27 2016 -0600<br/><br/> f<br/><br/>M perlvars.h<br/><br/>commit b6a01cea579084897e07d556f87df5681f915a69<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Jul 20 10:33:40 2016 -0600<br/><br/> XXX flesh out commit msg: locale.c: Make my_strerror() thread-safe<br/><br/>M embedvar.h<br/>M locale.c<br/>M makedef.pl<br/>M perl.c<br/>M perl.h<br/>M perlapi.h<br/>M perlvars.h<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47692.html Fri, 22 Jul 2016 19:59:43 +0000 [perl.git] branch smoke-me/khw-locale, deleted. v5.25.3-13-gc28998b by Karl Williamson In perl.git, the branch smoke-me/khw-locale has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=c28998b57e72179076616f9d13863acee66b5572&gt;<br/><br/> was c28998b57e72179076616f9d13863acee66b5572<br/><br/>-----------------------------------------------------------------------<br/>c28998b57e72179076616f9d13863acee66b5572 later<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47691.html Fri, 22 Jul 2016 19:59:43 +0000 [perl.git] branch blead, updated. v5.25.3-6-gf31df0c by Karl Williamson In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/f31df0ce8d77152d0d9498bf7f87177e54b824e9?hp=dec2b171031d1c5f383f3b8571146901b3fae21c&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit f31df0ce8d77152d0d9498bf7f87177e54b824e9<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Jul 20 01:43:47 2016 -0600<br/><br/> regcomp.c: Silence compiler warning<br/> <br/> These functions are no longer needed in re_comp.c<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> embed.fnc | 4 ++--<br/> embed.h | 4 ++--<br/> proto.h | 20 ++++++++++----------<br/> regcomp.c | 8 ++++++--<br/> 4 files changed, 20 insertions(+), 16 deletions(-)<br/><br/>diff --git a/embed.fnc b/embed.fnc<br/>index abc1187..c0b7a3e 100644<br/>--- a/embed.fnc<br/>+++ b/embed.fnc<br/>@@ -1546,11 +1546,11 @@ ApRM |SV* |swash_init |NN const char* pkg|NN const char* name|NN SV* listsv|I32<br/> ApM |UV |swash_fetch |NN SV *swash|NN const U8 *ptr|bool do_utf8<br/> #ifdef PERL_IN_REGCOMP_C<br/> EiMR |SV* |add_cp_to_invlist |NULLOK SV* invlist|const UV cp<br/>-EiMRn |UV* |_invlist_array_init |NN SV* const invlist|const bool will_have_0<br/>-EiMRn |UV |invlist_max |NN SV* const invlist<br/> EiM |void |invlist_set_len|NN SV* const invlist|const UV len|const bool offset<br/> EiMRn |bool |invlist_is_iterating|NN SV* const invlist<br/> #ifndef PERL_EXT_RE_BUILD<br/>+EiMRn |UV* |_invlist_array_init |NN SV* const invlist|const bool will_have_0<br/>+EiMRn |UV |invlist_max |NN SV* const invlist<br/> EsM |void |_append_range_to_invlist |NN SV* const invlist|const UV start|const UV end<br/> EsM |void |invlist_extend |NN SV* const invlist|const UV len<br/> EsM |void |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src<br/>diff --git a/embed.h b/embed.h<br/>index b440509..3acd9ef 100644<br/>--- a/embed.h<br/>+++ b/embed.h<br/>@@ -955,9 +955,11 @@<br/> # if !defined(PERL_EXT_RE_BUILD)<br/> # if defined(PERL_IN_REGCOMP_C)<br/> #define _append_range_to_invlist(a,b,c) S__append_range_to_invlist(aTHX_ a,b,c)<br/>+#define _invlist_array_init S__invlist_array_init<br/> #define get_invlist_previous_index_addr S_get_invlist_previous_index_addr<br/> #define invlist_clear(a) S_invlist_clear(aTHX_ a)<br/> #define invlist_extend(a,b) S_invlist_extend(aTHX_ a,b)<br/>+#define invlist_max S_invlist_max<br/> #define invlist_previous_index S_invlist_previous_index<br/> #define invlist_replace_list_destroys_src(a,b) S_invlist_replace_list_destroys_src(aTHX_ a,b)<br/> #define invlist_set_previous_index S_invlist_set_previous_index<br/>@@ -1000,7 +1002,6 @@<br/> #define sv_or_pv_pos_u2b(a,b,c,d) S_sv_or_pv_pos_u2b(aTHX_ a,b,c,d)<br/> # endif<br/> # if defined(PERL_IN_REGCOMP_C)<br/>-#define _invlist_array_init S__invlist_array_init<br/> #define _make_exactf_invlist(a,b) S__make_exactf_invlist(aTHX_ a,b)<br/> #define add_above_Latin1_folds(a,b,c) S_add_above_Latin1_folds(aTHX_ a,b,c)<br/> #define add_cp_to_invlist(a,b) S_add_cp_to_invlist(aTHX_ a,b)<br/>@@ -1024,7 +1025,6 @@<br/> #define invlist_iterfinish S_invlist_iterfinish<br/> #define invlist_iterinit S_invlist_iterinit<br/> #define invlist_iternext S_invlist_iternext<br/>-#define invlist_max S_invlist_max<br/> #define invlist_set_len(a,b,c) S_invlist_set_len(aTHX_ a,b,c)<br/> #define is_ssc_worth_it S_is_ssc_worth_it<br/> #define join_exact(a,b,c,d,e,f,g) S_join_exact(aTHX_ a,b,c,d,e,f,g)<br/>diff --git a/proto.h b/proto.h<br/>index ec2ae33..a06b6d0 100644<br/>--- a/proto.h<br/>+++ b/proto.h<br/>@@ -3802,6 +3802,11 @@ STATIC PerlIO * S_doopen_pm(pTHX_ SV *name)<br/> STATIC void S__append_range_to_invlist(pTHX_ SV* const invlist, const UV start, const UV end);<br/> #define PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST \<br/> assert(invlist)<br/>+PERL_STATIC_INLINE UV* S__invlist_array_init(SV* const invlist, const bool will_have_0)<br/>+ __attribute__warn_unused_result__;<br/>+#define PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT \<br/>+ assert(invlist)<br/>+<br/> PERL_STATIC_INLINE IV* S_get_invlist_previous_index_addr(SV* invlist)<br/> __attribute__warn_unused_result__;<br/> #define PERL_ARGS_ASSERT_GET_INVLIST_PREVIOUS_INDEX_ADDR \<br/>@@ -3813,6 +3818,11 @@ PERL_STATIC_INLINE void S_invlist_clear(pTHX_ SV* invlist);<br/> STATIC void S_invlist_extend(pTHX_ SV* const invlist, const UV len);<br/> #define PERL_ARGS_ASSERT_INVLIST_EXTEND \<br/> assert(invlist)<br/>+PERL_STATIC_INLINE UV S_invlist_max(SV* const invlist)<br/>+ __attribute__warn_unused_result__;<br/>+#define PERL_ARGS_ASSERT_INVLIST_MAX \<br/>+ assert(invlist)<br/>+<br/> PERL_STATIC_INLINE IV S_invlist_previous_index(SV* const invlist)<br/> __attribute__warn_unused_result__;<br/> #define PERL_ARGS_ASSERT_INVLIST_PREVIOUS_INDEX \<br/>@@ -4853,11 +4863,6 @@ STATIC SV * S_space_join_names_mortal(pTHX_ char *const *array);<br/> assert(array)<br/> #endif<br/> #if defined(PERL_IN_REGCOMP_C)<br/>-PERL_STATIC_INLINE UV* S__invlist_array_init(SV* const invlist, const bool will_have_0)<br/>- __attribute__warn_unused_result__;<br/>-#define PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT \<br/>- assert(invlist)<br/>-<br/> STATIC SV* S__make_exactf_invlist(pTHX_ RExC_state_t *pRExC_state, regnode *node)<br/> __attribute__warn_unused_result__;<br/> #define PERL_ARGS_ASSERT__MAKE_EXACTF_INVLIST \<br/>@@ -4945,11 +4950,6 @@ STATIC bool S_invlist_iternext(SV* invlist, UV* start, UV* end)<br/> #define PERL_ARGS_ASSERT_INVLIST_ITERNEXT \<br/> assert(invlist); assert(start); assert(end)<br/> <br/>-PERL_STATIC_INLINE UV S_invlist_max(SV* const invlist)<br/>- __attribute__warn_unused_result__;<br/>-#define PERL_ARGS_ASSERT_INVLIST_MAX \<br/>- assert(invlist)<br/>-<br/> PERL_STATIC_INLINE void S_invlist_set_len(pTHX_ SV* const invlist, const UV len, const bool offset);<br/> #define PERL_ARGS_ASSERT_INVLIST_SET_LEN \<br/> assert(invlist)<br/>diff --git a/regcomp.c b/regcomp.c<br/>index e57f233..7f6d5ee 100644<br/>--- a/regcomp.c<br/>+++ b/regcomp.c<br/>@@ -8376,6 +8376,8 @@ S_reg_scan_name(pTHX_ RExC_state_t *pRExC_state, U32 flags)<br/> <br/> /* The header definitions are in F&lt;invlist_inline.h&gt; */<br/> <br/>+#ifndef PERL_IN_XSUB_RE<br/>+<br/> PERL_STATIC_INLINE UV*<br/> S__invlist_array_init(SV* const invlist, const bool will_have_0)<br/> {<br/>@@ -8402,6 +8404,8 @@ S__invlist_array_init(SV* const invlist, const bool will_have_0)<br/> return zero_addr + *offset;<br/> }<br/> <br/>+#endif<br/>+<br/> PERL_STATIC_INLINE void<br/> S_invlist_set_len(pTHX_ SV* const invlist, const UV len, const bool offset)<br/> {<br/>@@ -8538,6 +8542,8 @@ S_invlist_is_iterating(SV* const invlist)<br/> return *(get_invlist_iter_addr(invlist)) &lt; (STRLEN) UV_MAX;<br/> }<br/> <br/>+#ifndef PERL_IN_XSUB_RE<br/>+<br/> PERL_STATIC_INLINE UV<br/> S_invlist_max(SV* const invlist)<br/> {<br/>@@ -8554,8 +8560,6 @@ S_invlist_max(SV* const invlist)<br/> ? FROM_INTERNAL_SIZE(SvCUR(invlist)) - 1<br/> : FROM_INTERNAL_SIZE(SvLEN(invlist)) - 1;<br/> }<br/>-<br/>-#ifndef PERL_IN_XSUB_RE<br/> SV*<br/> Perl__new_invlist(pTHX_ IV initial_size)<br/> {<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47690.html Fri, 22 Jul 2016 07:30:48 +0000 [perl.git] branch smoke-me/khw-locale, deleted.v5.25.2-197-gdfcbb6a by Karl Williamson In perl.git, the branch smoke-me/khw-locale has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=dfcbb6a1edcb4a88dde519604b911edfdc72624b&gt;<br/><br/> was dfcbb6a1edcb4a88dde519604b911edfdc72624b<br/><br/>-----------------------------------------------------------------------<br/>dfcbb6a1edcb4a88dde519604b911edfdc72624b smoke<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47689.html Fri, 22 Jul 2016 07:30:47 +0000 [perl.git] branch smoke-me/khw-regcomp, deleted.v5.25.2-172-ge5cecfc by Karl Williamson In perl.git, the branch smoke-me/khw-regcomp has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=e5cecfcf9349adc14f88ce2a1f03dbada054824e&gt;<br/><br/> was e5cecfcf9349adc14f88ce2a1f03dbada054824e<br/><br/>-----------------------------------------------------------------------<br/>e5cecfcf9349adc14f88ce2a1f03dbada054824e smoke<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47688.html Fri, 22 Jul 2016 07:30:45 +0000 [perl.git] branch smoke-me/khw-locale, created.v5.25.2-197-gdfcbb6a by Karl Williamson In perl.git, the branch smoke-me/khw-locale has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/dfcbb6a1edcb4a88dde519604b911edfdc72624b?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at dfcbb6a1edcb4a88dde519604b911edfdc72624b (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit dfcbb6a1edcb4a88dde519604b911edfdc72624b<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Tue Jul 19 19:03:02 2016 -0600<br/><br/> smoke<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47687.html Fri, 22 Jul 2016 04:30:50 +0000 [perl.git] branch blead, updated. v5.25.3-8-g33bc5d3 by Karl Williamson In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/33bc5d3d6ec3a139b32d094c90b2f78d7a3a2399?hp=1e0a64115c2048e2aa95c55b284bec003e28b695&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 33bc5d3d6ec3a139b32d094c90b2f78d7a3a2399<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Thu Jul 21 09:58:21 2016 -0600<br/><br/> PATCH: [perl 128686] regex compiler crashes<br/> <br/> This was due to freeing a scalar before its final use<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> regcomp.c | 20 ++++++++------------<br/> t/re/pat.t | 12 +++++++++++-<br/> 2 files changed, 19 insertions(+), 13 deletions(-)<br/><br/>diff --git a/regcomp.c b/regcomp.c<br/>index 7f6d5ee..bba5a2b 100644<br/>--- a/regcomp.c<br/>+++ b/regcomp.c<br/>@@ -17475,22 +17475,15 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,<br/> &amp;nonascii_but_latin1_properties);<br/> <br/> /* And add them to the final list of such characters. */<br/>- if (has_upper_latin1_only_utf8_matches) {<br/>- _invlist_union(has_upper_latin1_only_utf8_matches,<br/>- nonascii_but_latin1_properties,<br/>- &amp;has_upper_latin1_only_utf8_matches);<br/>- SvREFCNT_dec_NN(nonascii_but_latin1_properties);<br/>- }<br/>- else {<br/>- has_upper_latin1_only_utf8_matches<br/>- = nonascii_but_latin1_properties;<br/>- }<br/>+ _invlist_union(has_upper_latin1_only_utf8_matches,<br/>+ nonascii_but_latin1_properties,<br/>+ &amp;has_upper_latin1_only_utf8_matches);<br/> <br/> /* Remove them from what now becomes the unconditional list */<br/> _invlist_subtract(posixes, nonascii_but_latin1_properties,<br/> &amp;posixes);<br/> <br/>- /* And the remainder are the unconditional ones */<br/>+ /* And add those unconditional ones to the final list */<br/> if (cp_list) {<br/> _invlist_union(cp_list, posixes, &amp;cp_list);<br/> SvREFCNT_dec_NN(posixes);<br/>@@ -17500,8 +17493,11 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,<br/> cp_list = posixes;<br/> }<br/> <br/>+ SvREFCNT_dec(nonascii_but_latin1_properties);<br/>+<br/> /* Get rid of any characters that we now know are matched<br/>- * unconditionally from the conditional list */<br/>+ * unconditionally from the conditional list, which may make<br/>+ * that list empty */<br/> _invlist_subtract(has_upper_latin1_only_utf8_matches,<br/> cp_list,<br/> &amp;has_upper_latin1_only_utf8_matches);<br/>diff --git a/t/re/pat.t b/t/re/pat.t<br/>index f6bd04a..98cdbe3 100644<br/>--- a/t/re/pat.t<br/>+++ b/t/re/pat.t<br/>@@ -23,7 +23,7 @@ BEGIN {<br/> skip_all_without_unicode_tables();<br/> }<br/> <br/>-plan tests =&gt; 796; # Update this when adding/deleting tests.<br/>+plan tests =&gt; 798; # Update this when adding/deleting tests.<br/> <br/> run_tests() unless caller;<br/> <br/>@@ -1781,6 +1781,16 @@ EOP<br/> /.*a.*b.*c.*[de]/;<br/> &#39;,&quot;Timeout&quot;,{},&quot;Test Perl 73464&quot;)<br/> }<br/>+<br/>+ { # [perl #128686], crashed the the interpreter<br/>+ my $AE = chr utf8::unicode_to_native(0xC6);<br/>+ my $ae = chr utf8::unicode_to_native(0xE6);<br/>+ my $re = qr/[$ae\s]/i;<br/>+ ok($AE !~ $re, &#39;/[\xE6\s]/i doesn\&#39;t match \xC6 when not in UTF-8&#39;);<br/>+ utf8::upgrade $AE;<br/>+ ok($AE =~ $re, &#39;/[\xE6\s]/i matches \xC6 when in UTF-8&#39;);<br/>+ }<br/>+<br/> } # End of sub run_tests<br/> <br/> 1;<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47686.html Fri, 22 Jul 2016 04:30:50 +0000 [perl.git] branch smoke-me/khw-locale, deleted.v5.25.2-197-g517c5e8 by Karl Williamson In perl.git, the branch smoke-me/khw-locale has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=517c5e81891744d85fb5dff5367dae050fe92b34&gt;<br/><br/> was 517c5e81891744d85fb5dff5367dae050fe92b34<br/><br/>-----------------------------------------------------------------------<br/>517c5e81891744d85fb5dff5367dae050fe92b34 later<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47685.html Fri, 22 Jul 2016 04:30:47 +0000 [perl.git] branch smoke-me/khw-locale, created. v5.25.3-13-gc28998b by Karl Williamson In perl.git, the branch smoke-me/khw-locale has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/c28998b57e72179076616f9d13863acee66b5572?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at c28998b57e72179076616f9d13863acee66b5572 (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit c28998b57e72179076616f9d13863acee66b5572<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Thu Jul 21 22:05:48 2016 -0600<br/><br/> later<br/><br/>M locale.c<br/><br/>commit df61d7e7d9329ed0efce4f52bfa627c51a2df864<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Jul 20 10:34:20 2016 -0600<br/><br/> Use strerror_l() if available<br/> <br/> This commit is the first step in using POSIX 2008 thread-safe locale<br/> functions on platforms where they are available.<br/> <br/> This creates a global locale object on threaded perls for the C locale,<br/> and this is now passed to strerror_l() on piatforms where it is<br/> available. Doing so saves us from having to use a mutex.<br/><br/>M embedvar.h<br/>M locale.c<br/>M makedef.pl<br/>M perl.c<br/>M perl.h<br/>M perlapi.h<br/>M perlvars.h<br/><br/>commit fa2496df59a88709333ccc1242682e58fb6fd7a6<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Jul 20 16:06:08 2016 -0600<br/><br/> perlapi: Add a clarification.<br/><br/>M sv.c<br/><br/>commit 26db886147eca3ff2ff9bed84fca0f705f3b2821<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Jul 20 13:01:33 2016 -0600<br/><br/> locale.c: my_strerror() now returns mortalized copy<br/> <br/> This is the first step in making locale handling thread-safe. Now, the<br/> return from this function never points to static space within the libc<br/> function this wraps.<br/><br/>M locale.c<br/><br/>commit 607edfc965a2e3fde98e9ed56cb2119a55ee262c<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Jul 20 10:33:40 2016 -0600<br/><br/> locale.c: White-space, move declaration, comments only<br/><br/>M locale.c<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47684.html Fri, 22 Jul 2016 04:17:55 +0000 [perl.git] branch smoke-me/khw-locale, deleted.v5.25.2-198-gc1a2a95 by Karl Williamson In perl.git, the branch smoke-me/khw-locale has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=c1a2a954e042e27c3c04271a4266989f53f7b2fa&gt;<br/><br/> was c1a2a954e042e27c3c04271a4266989f53f7b2fa<br/><br/>-----------------------------------------------------------------------<br/>c1a2a954e042e27c3c04271a4266989f53f7b2fa Use strerror_l() if available<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47683.html Fri, 22 Jul 2016 04:17:54 +0000 [perl.git] branch blead, updated. v5.25.2-211-gfa25ff3 by Steve Hay via perl5-changes In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/fa25ff3a5478e084688655a08731d7df58e2fc6a?hp=185c2e96081e0fd9b6c448a8db6ac4ca85ff1dd4&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit fa25ff3a5478e084688655a08731d7df58e2fc6a<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 13:50:37 2016 +0100<br/><br/> Fix typo in perldelta<br/><br/>M pod/perldelta.pod<br/><br/>commit 70f2a5091a5063f07e3878e79723c0e19f050125<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 13:43:21 2016 +0100<br/><br/> perldelta - Fill in Modules and Pragmata<br/><br/>M pod/perldelta.pod<br/><br/>commit 2c7b07fe2d3310b6d79622edc2ad42681ced0156<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 13:33:07 2016 +0100<br/><br/> perldelta - Fill in rt.perl.org links<br/><br/>M pod/perldelta.pod<br/><br/>commit 216c09bb022d4d8e6d7c5470ac9165b21972c860<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 13:24:10 2016 +0100<br/><br/> perldelta - Fill in Testing<br/><br/>M pod/perldelta.pod<br/><br/>commit ce6646d7d570b626182162aa75e56ae90de6ffe1<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 13:21:54 2016 +0100<br/><br/> perldelta - Fill in Documentation<br/><br/>M pod/perldelta.pod<br/><br/>commit fb0f05f2353c65ed202032af752c353797cf04e6<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 13:01:07 2016 +0100<br/><br/> perldelta - Fill in New Diagnostics<br/><br/>M pod/perldelta.pod<br/><br/>commit 68328fa624596a4e7038ec0736d62dcc9a6d93dc<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 12:52:59 2016 +0100<br/><br/> perldelta - Wrapping/formatting<br/><br/>M pod/perldelta.pod<br/><br/>commit 1df6cb38d360c2ed25c995ad2e35fb989c7a8337<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 12:39:57 2016 +0100<br/><br/> perldelta - Fill in &quot;fixed in&quot; versions for Errata items<br/> <br/> (The perl #126182 problem was reported with 5.23.4, so certainly wasn&#39;t<br/> *broken* in 5.24.0 as the note originally said. It was in fact *fixed* in<br/> that version (actually, 5.23.9) by a series of commits in early March.)<br/><br/>M pod/perldelta.pod<br/><br/>commit 874195d6e9ba2adfe84c25f97f47017428253e7b<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 12:36:34 2016 +0100<br/><br/> perldelta - Remove most boilerplate<br/> <br/> This moves one item (&quot;scalar(%hash) return signature changed&quot;) from<br/> Performance Enhancements to Incompatible Changes, where I think it is more<br/> apt (although it does also involve a small performance enhancement).<br/><br/>M pod/perldelta.pod<br/><br/>commit d6c223934daeecf11e9c1b28c659ea51ac2fd0cc<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 12:08:48 2016 +0100<br/><br/> Module-Metadata has another customized test script<br/><br/>M Porting/Maintainers.pl<br/>M t/porting/customized.dat<br/><br/>commit c9de3de896125d037ac2d8c66c05dbb5dd6b1520<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 12:05:19 2016 +0100<br/><br/> Encode has some customized test scripts<br/><br/>M Porting/Maintainers.pl<br/>M t/porting/customized.dat<br/><br/>commit 0b4ffce69122f064651915707455a21d480d61c3<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 11:55:16 2016 +0100<br/><br/> Upgrade Test-Simple from version 1.302040 to 1.302045<br/><br/>M MANIFEST<br/>M Porting/Maintainers.pl<br/>M cpan/Test-Simple/lib/Test/Builder.pm<br/>M cpan/Test-Simple/lib/Test/Builder/Formatter.pm<br/>M cpan/Test-Simple/lib/Test/Builder/Module.pm<br/>M cpan/Test-Simple/lib/Test/Builder/Tester.pm<br/>M cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm<br/>M cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm<br/>M cpan/Test-Simple/lib/Test/More.pm<br/>M cpan/Test-Simple/lib/Test/Simple.pm<br/>M cpan/Test-Simple/lib/Test/Tester.pm<br/>M cpan/Test-Simple/lib/Test/Tester/Capture.pm<br/>M cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm<br/>M cpan/Test-Simple/lib/Test/Tester/Delegate.pm<br/>M cpan/Test-Simple/lib/Test/use/ok.pm<br/>M cpan/Test-Simple/lib/Test2.pm<br/>M cpan/Test-Simple/lib/Test2/API.pm<br/>M cpan/Test-Simple/lib/Test2/API/Breakage.pm<br/>M cpan/Test-Simple/lib/Test2/API/Context.pm<br/>M cpan/Test-Simple/lib/Test2/API/Instance.pm<br/>M cpan/Test-Simple/lib/Test2/API/Stack.pm<br/>M cpan/Test-Simple/lib/Test2/Event.pm<br/>M cpan/Test-Simple/lib/Test2/Event/Bail.pm<br/>M cpan/Test-Simple/lib/Test2/Event/Diag.pm<br/>M cpan/Test-Simple/lib/Test2/Event/Exception.pm<br/>M cpan/Test-Simple/lib/Test2/Event/Generic.pm<br/>M cpan/Test-Simple/lib/Test2/Event/Info.pm<br/>M cpan/Test-Simple/lib/Test2/Event/Note.pm<br/>M cpan/Test-Simple/lib/Test2/Event/Ok.pm<br/>M cpan/Test-Simple/lib/Test2/Event/Plan.pm<br/>M cpan/Test-Simple/lib/Test2/Event/Skip.pm<br/>M cpan/Test-Simple/lib/Test2/Event/Subtest.pm<br/>M cpan/Test-Simple/lib/Test2/Event/Waiting.pm<br/>M cpan/Test-Simple/lib/Test2/Formatter.pm<br/>M cpan/Test-Simple/lib/Test2/Formatter/TAP.pm<br/>M cpan/Test-Simple/lib/Test2/Hub.pm<br/>M cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm<br/>M cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm<br/>M cpan/Test-Simple/lib/Test2/Hub/Subtest.pm<br/>M cpan/Test-Simple/lib/Test2/IPC.pm<br/>M cpan/Test-Simple/lib/Test2/IPC/Driver.pm<br/>M cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm<br/>M cpan/Test-Simple/lib/Test2/Util.pm<br/>M cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm<br/>M cpan/Test-Simple/lib/Test2/Util/HashBase.pm<br/>M cpan/Test-Simple/lib/Test2/Util/Trace.pm<br/>M cpan/Test-Simple/lib/ok.pm<br/>M cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t<br/>A cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t<br/><br/>commit e8d5ab7b269b27852f432c140e9d021f103b50e0<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 11:49:22 2016 +0100<br/><br/> Upgrade libnet from version 3.08 to 3.09<br/><br/>M Porting/Maintainers.pl<br/>M cpan/libnet/Makefile.PL<br/>M cpan/libnet/lib/Net/Cmd.pm<br/>M cpan/libnet/lib/Net/Config.pm<br/>M cpan/libnet/lib/Net/Domain.pm<br/>M cpan/libnet/lib/Net/FTP.pm<br/>M cpan/libnet/lib/Net/FTP/A.pm<br/>M cpan/libnet/lib/Net/FTP/E.pm<br/>M cpan/libnet/lib/Net/FTP/I.pm<br/>M cpan/libnet/lib/Net/FTP/L.pm<br/>M cpan/libnet/lib/Net/FTP/dataconn.pm<br/>M cpan/libnet/lib/Net/NNTP.pm<br/>M cpan/libnet/lib/Net/Netrc.pm<br/>M cpan/libnet/lib/Net/POP3.pm<br/>M cpan/libnet/lib/Net/SMTP.pm<br/>M cpan/libnet/lib/Net/Time.pm<br/>M cpan/libnet/lib/Net/libnetFAQ.pod<br/>M cpan/libnet/t/datasend.t<br/>M cpan/libnet/t/nntp_ipv6.t<br/>M cpan/libnet/t/pop3_ipv6.t<br/>M cpan/libnet/t/smtp_ipv6.t<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> MANIFEST | 1 +<br/> Porting/Maintainers.pl | 25 +-<br/> cpan/Test-Simple/lib/Test/Builder.pm | 4 +-<br/> cpan/Test-Simple/lib/Test/Builder/Formatter.pm | 2 +-<br/> cpan/Test-Simple/lib/Test/Builder/Module.pm | 2 +-<br/> cpan/Test-Simple/lib/Test/Builder/Tester.pm | 2 +-<br/> cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm | 2 +-<br/> cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm | 2 +-<br/> cpan/Test-Simple/lib/Test/More.pm | 2 +-<br/> cpan/Test-Simple/lib/Test/Simple.pm | 2 +-<br/> cpan/Test-Simple/lib/Test/Tester.pm | 2 +-<br/> cpan/Test-Simple/lib/Test/Tester/Capture.pm | 2 +-<br/> cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm | 2 +-<br/> cpan/Test-Simple/lib/Test/Tester/Delegate.pm | 2 +-<br/> cpan/Test-Simple/lib/Test/use/ok.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/API.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/API/Breakage.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/API/Context.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/API/Instance.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/API/Stack.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Event.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Event/Bail.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Event/Diag.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Event/Exception.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Event/Generic.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Event/Info.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Event/Note.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Event/Ok.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Event/Plan.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Event/Skip.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Event/Subtest.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Event/Waiting.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Formatter.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Formatter/TAP.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Hub.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm | 2 +-<br/> .../lib/Test2/Hub/Interceptor/Terminator.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Hub/Subtest.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/IPC.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/IPC/Driver.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm | 149 +++++--<br/> cpan/Test-Simple/lib/Test2/Util.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Util/HashBase.pm | 2 +-<br/> cpan/Test-Simple/lib/Test2/Util/Trace.pm | 2 +-<br/> cpan/Test-Simple/lib/ok.pm | 2 +-<br/> .../Test-Simple/t/Test2/modules/IPC/Driver/Files.t | 242 +++++++++++-<br/> .../t/Test2/regression/693_ipc_ordering.t | 30 ++<br/> cpan/libnet/Makefile.PL | 4 +-<br/> cpan/libnet/lib/Net/Cmd.pm | 10 +-<br/> cpan/libnet/lib/Net/Config.pm | 2 +-<br/> cpan/libnet/lib/Net/Domain.pm | 2 +-<br/> cpan/libnet/lib/Net/FTP.pm | 4 +-<br/> cpan/libnet/lib/Net/FTP/A.pm | 2 +-<br/> cpan/libnet/lib/Net/FTP/E.pm | 2 +-<br/> cpan/libnet/lib/Net/FTP/I.pm | 2 +-<br/> cpan/libnet/lib/Net/FTP/L.pm | 2 +-<br/> cpan/libnet/lib/Net/FTP/dataconn.pm | 2 +-<br/> cpan/libnet/lib/Net/NNTP.pm | 10 +-<br/> cpan/libnet/lib/Net/Netrc.pm | 2 +-<br/> cpan/libnet/lib/Net/POP3.pm | 4 +-<br/> cpan/libnet/lib/Net/SMTP.pm | 14 +-<br/> cpan/libnet/lib/Net/Time.pm | 2 +-<br/> cpan/libnet/lib/Net/libnetFAQ.pod | 2 +-<br/> cpan/libnet/t/datasend.t | 2 -<br/> cpan/libnet/t/nntp_ipv6.t | 1 +<br/> cpan/libnet/t/pop3_ipv6.t | 1 +<br/> cpan/libnet/t/smtp_ipv6.t | 1 +<br/> pod/perldelta.pod | 431 ++++++++-------------<br/> t/porting/customized.dat | 7 +<br/> 71 files changed, 665 insertions(+), 381 deletions(-)<br/> create mode 100644 cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t<br/><br/>diff --git a/MANIFEST b/MANIFEST<br/>index a97d900..8f1b65e 100644<br/>--- a/MANIFEST<br/>+++ b/MANIFEST<br/>@@ -2771,6 +2771,7 @@ cpan/Test-Simple/t/Test2/modules/Util.t<br/> cpan/Test-Simple/t/Test2/modules/Util/ExternalMeta.t<br/> cpan/Test-Simple/t/Test2/modules/Util/HashBase.t<br/> cpan/Test-Simple/t/Test2/modules/Util/Trace.t<br/>+cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t<br/> cpan/Test-Simple/t/Test2/regression/gh_16.t<br/> cpan/Test-Simple/t/Test2/regression/ipc_files_abort_exit.t<br/> cpan/Test-Simple/t/tools.pl<br/>diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl<br/>index 38e6eca..b617a1a 100755<br/>--- a/Porting/Maintainers.pl<br/>+++ b/Porting/Maintainers.pl<br/>@@ -388,8 +388,15 @@ use File::Glob qw(:case);<br/> &#39;DISTRIBUTION&#39; =&gt; &#39;DANKOGAI/Encode-2.84.tar.gz&#39;,<br/> &#39;FILES&#39; =&gt; q[cpan/Encode],<br/> CUSTOMIZED =&gt; [<br/>- qw( encoding.pm ),<br/>- &#39;Byte/Makefile.PL&#39;,<br/>+ qw( encoding.pm<br/>+ Byte/Makefile.PL<br/>+ t/enc_data.t<br/>+ t/enc_eucjp.t<br/>+ t/enc_module.t<br/>+ t/enc_utf8.t<br/>+ t/encoding.t<br/>+ t/jperl.t<br/>+ ),<br/> ],<br/> },<br/> <br/>@@ -666,7 +673,7 @@ use File::Glob qw(:case);<br/> },<br/> <br/> &#39;libnet&#39; =&gt; {<br/>- &#39;DISTRIBUTION&#39; =&gt; &#39;SHAY/libnet-3.08.tar.gz&#39;,<br/>+ &#39;DISTRIBUTION&#39; =&gt; &#39;SHAY/libnet-3.09.tar.gz&#39;,<br/> &#39;FILES&#39; =&gt; q[cpan/libnet],<br/> &#39;EXCLUDED&#39; =&gt; [<br/> qw( Configure<br/>@@ -816,7 +823,8 @@ use File::Glob qw(:case);<br/> qr{^xt},<br/> ],<br/> # https://rt.perl.org/Ticket/Display.html?id=128160<br/>- &#39;CUSTOMIZED&#39; =&gt; [ qw[ t/extract-package.t ] ],<br/>+ # https://github.com/Perl-Toolchain-Gang/Module-Metadata/commit/59b3f5b45ff862a1a422a409518255736fe81b66<br/>+ &#39;CUSTOMIZED&#39; =&gt; [ qw[ t/extract-package.t t/metadata.t ] ],<br/> },<br/> <br/> &#39;Net::Ping&#39; =&gt; {<br/>@@ -1058,15 +1066,12 @@ use File::Glob qw(:case);<br/> },<br/> <br/> &#39;Test::Simple&#39; =&gt; {<br/>- &#39;DISTRIBUTION&#39; =&gt; &#39;EXODIST/Test-Simple-1.302040.tar.gz&#39;,<br/>+ &#39;DISTRIBUTION&#39; =&gt; &#39;EXODIST/Test-Simple-1.302045.tar.gz&#39;,<br/> &#39;FILES&#39; =&gt; q[cpan/Test-Simple],<br/> &#39;EXCLUDED&#39; =&gt; [<br/>- qr{^xt},<br/>+ qr{^examples/},<br/>+ qr{^xt/},<br/> qw( perltidyrc<br/>- examples/indent.pl<br/>- examples/subtest.t<br/>- examples/tools.pl<br/>- examples/tools.t<br/> t/00compile.t<br/> t/00-report.t<br/> t/zzz-check-breaks.t<br/>diff --git a/cpan/Test-Simple/lib/Test/Builder.pm b/cpan/Test-Simple/lib/Test/Builder.pm<br/>index bc0e095..2a1be72 100644<br/>--- a/cpan/Test-Simple/lib/Test/Builder.pm<br/>+++ b/cpan/Test-Simple/lib/Test/Builder.pm<br/>@@ -4,7 +4,7 @@ use 5.006;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> BEGIN {<br/> if( $] &lt; 5.008 ) {<br/>@@ -69,7 +69,7 @@ sub _add_ts_hooks {<br/> return Test::Builder::TodoDiag-&gt;new(%$e) if ref($e) eq &#39;Test2::Event::Diag&#39;;<br/> <br/> # Set todo on ok&#39;s<br/>- if ($hub == $active_hub &amp;&amp; $e-&gt;isa(&#39;Test2::Event::Ok&#39;)) {<br/>+ if ($e-&gt;isa(&#39;Test2::Event::Ok&#39;)) {<br/> $e-&gt;set_todo($todo);<br/> $e-&gt;set_effective_pass(1);<br/> <br/>diff --git a/cpan/Test-Simple/lib/Test/Builder/Formatter.pm b/cpan/Test-Simple/lib/Test/Builder/Formatter.pm<br/>index b89beea..389597f 100644<br/>--- a/cpan/Test-Simple/lib/Test/Builder/Formatter.pm<br/>+++ b/cpan/Test-Simple/lib/Test/Builder/Formatter.pm<br/>@@ -2,7 +2,7 @@ package Test::Builder::Formatter;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> BEGIN { require Test2::Formatter::TAP; our @ISA = qw(Test2::Formatter::TAP) }<br/> <br/>diff --git a/cpan/Test-Simple/lib/Test/Builder/Module.pm b/cpan/Test-Simple/lib/Test/Builder/Module.pm<br/>index 165b433..a1434f5 100644<br/>--- a/cpan/Test-Simple/lib/Test/Builder/Module.pm<br/>+++ b/cpan/Test-Simple/lib/Test/Builder/Module.pm<br/>@@ -7,7 +7,7 @@ use Test::Builder;<br/> require Exporter;<br/> our @ISA = qw(Exporter);<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> =head1 NAME<br/>diff --git a/cpan/Test-Simple/lib/Test/Builder/Tester.pm b/cpan/Test-Simple/lib/Test/Builder/Tester.pm<br/>index 22003f9..de5e5e6 100644<br/>--- a/cpan/Test-Simple/lib/Test/Builder/Tester.pm<br/>+++ b/cpan/Test-Simple/lib/Test/Builder/Tester.pm<br/>@@ -1,7 +1,7 @@<br/> package Test::Builder::Tester;<br/> <br/> use strict;<br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> use Test::Builder;<br/> use Symbol;<br/>diff --git a/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm b/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm<br/>index 9e723ee..c28e5ad6 100644<br/>--- a/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm<br/>+++ b/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm<br/>@@ -1,7 +1,7 @@<br/> package Test::Builder::Tester::Color;<br/> <br/> use strict;<br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> require Test::Builder::Tester;<br/> <br/>diff --git a/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm b/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm<br/>index a5d0f6e..b716af9 100644<br/>--- a/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm<br/>+++ b/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm<br/>@@ -2,7 +2,7 @@ package Test::Builder::TodoDiag;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> BEGIN { require Test2::Event::Diag; our @ISA = qw(Test2::Event::Diag) }<br/> <br/>diff --git a/cpan/Test-Simple/lib/Test/More.pm b/cpan/Test-Simple/lib/Test/More.pm<br/>index 01d9653..66208c4 100644<br/>--- a/cpan/Test-Simple/lib/Test/More.pm<br/>+++ b/cpan/Test-Simple/lib/Test/More.pm<br/>@@ -17,7 +17,7 @@ sub _carp {<br/> return warn @_, &quot; at $file line $line\n&quot;;<br/> }<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> use Test::Builder::Module;<br/> our @ISA = qw(Test::Builder::Module);<br/>diff --git a/cpan/Test-Simple/lib/Test/Simple.pm b/cpan/Test-Simple/lib/Test/Simple.pm<br/>index 75820c2..273eee7 100644<br/>--- a/cpan/Test-Simple/lib/Test/Simple.pm<br/>+++ b/cpan/Test-Simple/lib/Test/Simple.pm<br/>@@ -4,7 +4,7 @@ use 5.006;<br/> <br/> use strict;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> use Test::Builder::Module;<br/> our @ISA = qw(Test::Builder::Module);<br/>diff --git a/cpan/Test-Simple/lib/Test/Tester.pm b/cpan/Test-Simple/lib/Test/Tester.pm<br/>index bb93920..adbaac9 100644<br/>--- a/cpan/Test-Simple/lib/Test/Tester.pm<br/>+++ b/cpan/Test-Simple/lib/Test/Tester.pm<br/>@@ -18,7 +18,7 @@ require Exporter;<br/> <br/> use vars qw( @ISA @EXPORT );<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> @EXPORT = qw( run_tests check_tests check_test cmp_results show_space );<br/> @ISA = qw( Exporter );<br/>diff --git a/cpan/Test-Simple/lib/Test/Tester/Capture.pm b/cpan/Test-Simple/lib/Test/Tester/Capture.pm<br/>index 0cfa580..5a440c7 100644<br/>--- a/cpan/Test-Simple/lib/Test/Tester/Capture.pm<br/>+++ b/cpan/Test-Simple/lib/Test/Tester/Capture.pm<br/>@@ -2,7 +2,7 @@ use strict;<br/> <br/> package Test::Tester::Capture;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Test::Builder;<br/>diff --git a/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm b/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm<br/>index 91a48cc..4c282bf 100644<br/>--- a/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm<br/>+++ b/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm<br/>@@ -3,7 +3,7 @@ use strict;<br/> <br/> package Test::Tester::CaptureRunner;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Test::Tester::Capture;<br/>diff --git a/cpan/Test-Simple/lib/Test/Tester/Delegate.pm b/cpan/Test-Simple/lib/Test/Tester/Delegate.pm<br/>index 080509e..d331496 100644<br/>--- a/cpan/Test-Simple/lib/Test/Tester/Delegate.pm<br/>+++ b/cpan/Test-Simple/lib/Test/Tester/Delegate.pm<br/>@@ -3,7 +3,7 @@ use warnings;<br/> <br/> package Test::Tester::Delegate;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use vars &#39;$AUTOLOAD&#39;;<br/>diff --git a/cpan/Test-Simple/lib/Test/use/ok.pm b/cpan/Test-Simple/lib/Test/use/ok.pm<br/>index a5899cb..e1e4b98 100644<br/>--- a/cpan/Test-Simple/lib/Test/use/ok.pm<br/>+++ b/cpan/Test-Simple/lib/Test/use/ok.pm<br/>@@ -1,7 +1,7 @@<br/> package Test::use::ok;<br/> use 5.005;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> __END__<br/>diff --git a/cpan/Test-Simple/lib/Test2.pm b/cpan/Test-Simple/lib/Test2.pm<br/>index 0ac6c1c..c67ad19 100644<br/>--- a/cpan/Test-Simple/lib/Test2.pm<br/>+++ b/cpan/Test-Simple/lib/Test2.pm<br/>@@ -2,7 +2,7 @@ package Test2;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> 1;<br/>diff --git a/cpan/Test-Simple/lib/Test2/API.pm b/cpan/Test-Simple/lib/Test2/API.pm<br/>index 0dcf4aa..6f91667 100644<br/>--- a/cpan/Test-Simple/lib/Test2/API.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/API.pm<br/>@@ -2,7 +2,7 @@ package Test2::API;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> my $INST;<br/>diff --git a/cpan/Test-Simple/lib/Test2/API/Breakage.pm b/cpan/Test-Simple/lib/Test2/API/Breakage.pm<br/>index 93d10c0..580e091 100644<br/>--- a/cpan/Test-Simple/lib/Test2/API/Breakage.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/API/Breakage.pm<br/>@@ -2,7 +2,7 @@ package Test2::API::Breakage;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Test2::Util qw/pkg_to_file/;<br/>diff --git a/cpan/Test-Simple/lib/Test2/API/Context.pm b/cpan/Test-Simple/lib/Test2/API/Context.pm<br/>index 98e5247..6e9362f 100644<br/>--- a/cpan/Test-Simple/lib/Test2/API/Context.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/API/Context.pm<br/>@@ -2,7 +2,7 @@ package Test2::API::Context;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Carp qw/confess croak longmess/;<br/>diff --git a/cpan/Test-Simple/lib/Test2/API/Instance.pm b/cpan/Test-Simple/lib/Test2/API/Instance.pm<br/>index 515af62..7275e18 100644<br/>--- a/cpan/Test-Simple/lib/Test2/API/Instance.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/API/Instance.pm<br/>@@ -2,7 +2,7 @@ package Test2::API::Instance;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> our @CARP_NOT = qw/Test2::API Test2::API::Instance Test2::IPC::Driver Test2::Formatter/;<br/>diff --git a/cpan/Test-Simple/lib/Test2/API/Stack.pm b/cpan/Test-Simple/lib/Test2/API/Stack.pm<br/>index 894de47..ec19553 100644<br/>--- a/cpan/Test-Simple/lib/Test2/API/Stack.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/API/Stack.pm<br/>@@ -2,7 +2,7 @@ package Test2::API::Stack;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Test2::Hub();<br/>diff --git a/cpan/Test-Simple/lib/Test2/Event.pm b/cpan/Test-Simple/lib/Test2/Event.pm<br/>index 6e1c925..83365b5 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Event.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Event.pm<br/>@@ -2,7 +2,7 @@ package Test2::Event;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Test2::Util::HashBase qw/trace nested in_subtest subtest_id/;<br/>diff --git a/cpan/Test-Simple/lib/Test2/Event/Bail.pm b/cpan/Test-Simple/lib/Test2/Event/Bail.pm<br/>index e95890e..44688b3 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Event/Bail.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Event/Bail.pm<br/>@@ -2,7 +2,7 @@ package Test2::Event::Bail;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }<br/>diff --git a/cpan/Test-Simple/lib/Test2/Event/Diag.pm b/cpan/Test-Simple/lib/Test2/Event/Diag.pm<br/>index 66b1ac5..afb4d6f 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Event/Diag.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Event/Diag.pm<br/>@@ -2,7 +2,7 @@ package Test2::Event::Diag;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }<br/>diff --git a/cpan/Test-Simple/lib/Test2/Event/Exception.pm b/cpan/Test-Simple/lib/Test2/Event/Exception.pm<br/>index d08bde3..5e914fc 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Event/Exception.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Event/Exception.pm<br/>@@ -2,7 +2,7 @@ package Test2::Event::Exception;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }<br/>diff --git a/cpan/Test-Simple/lib/Test2/Event/Generic.pm b/cpan/Test-Simple/lib/Test2/Event/Generic.pm<br/>index 69007a2..4a7d332 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Event/Generic.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Event/Generic.pm<br/>@@ -5,7 +5,7 @@ use warnings;<br/> use Carp qw/croak/;<br/> use Scalar::Util qw/reftype/;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }<br/> use Test2::Util::HashBase;<br/>diff --git a/cpan/Test-Simple/lib/Test2/Event/Info.pm b/cpan/Test-Simple/lib/Test2/Event/Info.pm<br/>index 656e272..029ab54 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Event/Info.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Event/Info.pm<br/>@@ -4,7 +4,7 @@ use warnings;<br/> <br/> use Scalar::Util qw/blessed/;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }<br/> use Test2::Util::HashBase qw/diagnostics renderer/;<br/>diff --git a/cpan/Test-Simple/lib/Test2/Event/Note.pm b/cpan/Test-Simple/lib/Test2/Event/Note.pm<br/>index 1425ce4..c277296 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Event/Note.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Event/Note.pm<br/>@@ -2,7 +2,7 @@ package Test2::Event::Note;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }<br/>diff --git a/cpan/Test-Simple/lib/Test2/Event/Ok.pm b/cpan/Test-Simple/lib/Test2/Event/Ok.pm<br/>index 2b8c31e..341dc06 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Event/Ok.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Event/Ok.pm<br/>@@ -2,7 +2,7 @@ package Test2::Event::Ok;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }<br/>diff --git a/cpan/Test-Simple/lib/Test2/Event/Plan.pm b/cpan/Test-Simple/lib/Test2/Event/Plan.pm<br/>index a7d51b3..904f6e9 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Event/Plan.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Event/Plan.pm<br/>@@ -2,7 +2,7 @@ package Test2::Event::Plan;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }<br/>diff --git a/cpan/Test-Simple/lib/Test2/Event/Skip.pm b/cpan/Test-Simple/lib/Test2/Event/Skip.pm<br/>index 71a0a22..9b7aa64 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Event/Skip.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Event/Skip.pm<br/>@@ -2,7 +2,7 @@ package Test2::Event::Skip;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }<br/>diff --git a/cpan/Test-Simple/lib/Test2/Event/Subtest.pm b/cpan/Test-Simple/lib/Test2/Event/Subtest.pm<br/>index 45efddb..45ba0f5 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Event/Subtest.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Event/Subtest.pm<br/>@@ -2,7 +2,7 @@ package Test2::Event::Subtest;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }<br/>diff --git a/cpan/Test-Simple/lib/Test2/Event/Waiting.pm b/cpan/Test-Simple/lib/Test2/Event/Waiting.pm<br/>index fb41f14..15db583 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Event/Waiting.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Event/Waiting.pm<br/>@@ -2,7 +2,7 @@ package Test2::Event::Waiting;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }<br/>diff --git a/cpan/Test-Simple/lib/Test2/Formatter.pm b/cpan/Test-Simple/lib/Test2/Formatter.pm<br/>index e258651..77d023d 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Formatter.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Formatter.pm<br/>@@ -2,7 +2,7 @@ package Test2::Formatter;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> my %ADDED;<br/>diff --git a/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm b/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm<br/>index 9243069..09211f0 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm<br/>@@ -3,7 +3,7 @@ use strict;<br/> use warnings;<br/> require PerlIO;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Test2::Util::HashBase qw{<br/>diff --git a/cpan/Test-Simple/lib/Test2/Hub.pm b/cpan/Test-Simple/lib/Test2/Hub.pm<br/>index d1ba531..707c585 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Hub.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Hub.pm<br/>@@ -2,7 +2,7 @@ package Test2::Hub;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Carp qw/carp croak confess/;<br/>diff --git a/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm b/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm<br/>index d9dec73..f81284d 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm<br/>@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Test2::Hub::Interceptor::Terminator();<br/>diff --git a/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm b/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm<br/>index 1fa8913..1666274 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm<br/>@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor::Terminator;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> 1;<br/>diff --git a/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm b/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm<br/>index 96338c2..835090a 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm<br/>@@ -2,7 +2,7 @@ package Test2::Hub::Subtest;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) }<br/>diff --git a/cpan/Test-Simple/lib/Test2/IPC.pm b/cpan/Test-Simple/lib/Test2/IPC.pm<br/>index 4fa952d..c09293a 100644<br/>--- a/cpan/Test-Simple/lib/Test2/IPC.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/IPC.pm<br/>@@ -2,7 +2,7 @@ package Test2::IPC;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Test2::API::Instance;<br/>diff --git a/cpan/Test-Simple/lib/Test2/IPC/Driver.pm b/cpan/Test-Simple/lib/Test2/IPC/Driver.pm<br/>index 2e06eab..521e4ce 100644<br/>--- a/cpan/Test-Simple/lib/Test2/IPC/Driver.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/IPC/Driver.pm<br/>@@ -2,7 +2,7 @@ package Test2::IPC::Driver;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Carp qw/confess longmess/;<br/>diff --git a/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm b/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm<br/>index 5c9740d..7cf62c8 100644<br/>--- a/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm<br/>@@ -2,7 +2,7 @@ package Test2::IPC::Driver::Files;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> BEGIN { require Test2::IPC::Driver; our @ISA = qw(Test2::IPC::Driver) }<br/>@@ -18,6 +18,51 @@ use POSIX();<br/> use Test2::Util qw/try get_tid pkg_to_file IS_WIN32/;<br/> use Test2::API qw/test2_ipc_set_pending/;<br/> <br/>+BEGIN {<br/>+ if (IS_WIN32) {<br/>+ my $max_tries = 5;<br/>+<br/>+ *do_rename = sub {<br/>+ my ($from, $to) = @_;<br/>+<br/>+ my $err;<br/>+ for (1 .. $max_tries) {<br/>+ return (1) if rename($from, $to);<br/>+ $err = &quot;$!&quot;;<br/>+ last if $_ == $max_tries;<br/>+ sleep 1;<br/>+ }<br/>+<br/>+ return (0, $err);<br/>+ };<br/>+ *do_unlink = sub {<br/>+ my ($file) = @_;<br/>+<br/>+ my $err;<br/>+ for (1 .. $max_tries) {<br/>+ return (1) if unlink($file);<br/>+ $err = &quot;$!&quot;;<br/>+ last if $_ == $max_tries;<br/>+ sleep 1;<br/>+ }<br/>+<br/>+ return (0, &quot;$!&quot;);<br/>+ };<br/>+ }<br/>+ else {<br/>+ *do_rename = sub {<br/>+ my ($from, $to) = @_;<br/>+ return (1) if rename($from, $to);<br/>+ return (0, &quot;$!&quot;);<br/>+ };<br/>+ *do_unlink = sub {<br/>+ my ($file) = @_;<br/>+ return (1) if unlink($file);<br/>+ return (0, &quot;$!&quot;);<br/>+ };<br/>+ }<br/>+}<br/>+<br/> sub use_shm { 1 }<br/> sub shm_size() { 64 }<br/> <br/>@@ -107,10 +152,12 @@ sub drop_hub {<br/> unless get_tid() == $tid;<br/> <br/> if ($ENV{T2_KEEP_TEMPDIR}) {<br/>- rename($hfile, File::Spec-&gt;canonpath(&quot;$hfile.complete&quot;)) or $self-&gt;abort_trace(&quot;Could not rename file &#39;$hfile&#39; -&gt; &#39;$hfile.complete&#39;&quot;);<br/>+ my ($ok, $err) = do_rename($hfile, File::Spec-&gt;canonpath(&quot;$hfile.complete&quot;));<br/>+ $self-&gt;abort_trace(&quot;Could not rename file &#39;$hfile&#39; -&gt; &#39;$hfile.complete&#39;: $err&quot;) unless $ok<br/> }<br/> else {<br/>- unlink($hfile) or $self-&gt;abort_trace(&quot;Could not remove file for hub &#39;$hid&#39;&quot;);<br/>+ my ($ok, $err) = do_unlink($hfile);<br/>+ $self-&gt;abort_trace(&quot;Could not remove file for hub &#39;$hid&#39;: $err&quot;) unless $ok<br/> }<br/> <br/> opendir(my $dh, $tdir) or $self-&gt;abort_trace(&quot;Could not open temp dir!&quot;);<br/>@@ -170,7 +217,11 @@ do so if Test::Builder is loaded for legacy reasons.<br/> # Write and rename the file.<br/> my ($ok, $err) = try {<br/> Storable::store($e, $file);<br/>- rename($file, $ready) or $self-&gt;abort(&quot;Could not rename file &#39;$file&#39; -&gt; &#39;$ready&#39;&quot;);<br/>+ my ($ok, $err) = do_rename(&quot;$file&quot;, $ready);<br/>+ unless ($ok) {<br/>+ POSIX::sigprocmask(POSIX::SIG_SETMASK(), $old, POSIX::SigSet-&gt;new()) if defined $blocked;<br/>+ $self-&gt;abort(&quot;Could not rename file &#39;$file&#39; -&gt; &#39;$ready&#39;: $err&quot;);<br/>+ };<br/> test2_ipc_set_pending(substr($file, -(shm_size)));<br/> };<br/> <br/>@@ -214,35 +265,22 @@ sub cull {<br/> opendir(my $dh, $tempdir) or $self-&gt;abort(&quot;could not open IPC temp dir ($tempdir)!&quot;);<br/> <br/> my @out;<br/>- for my $file (sort readdir($dh)) {<br/>- next if substr($file, 0, 1) eq &#39;.&#39;;<br/>-<br/>- next unless substr($file, -6, 6) eq &#39;.ready&#39;;<br/>-<br/>- my $global = substr($file, 0, 6) eq &#39;GLOBAL&#39;;<br/>- my $hid_len = length($hid);<br/>- my $have_hid = !$global &amp;&amp; substr($file, 0, $hid_len) eq $hid &amp;&amp; substr($file, $hid_len, 1) eq &#39;-&#39;;<br/>-<br/>- next unless $have_hid || $global;<br/>-<br/>- next if $global &amp;&amp; $self-&gt;{+GLOBALS}-&gt;{$hid}-&gt;{$file}++;<br/>-<br/>- # Untaint the path.<br/>- my $full = File::Spec-&gt;catfile($tempdir, $file);<br/>- ($full) = ($full =~ m/^(.*)$/gs);<br/>-<br/>+ for my $info (sort cmp_events map { $self-&gt;should_read_event($hid, $_) } readdir($dh)) {<br/>+ my $full = $info-&gt;{full_path};<br/> my $obj = $self-&gt;read_event_file($full);<br/> push @out =&gt; $obj;<br/> <br/> # Do not remove global events<br/>- next if $global;<br/>+ next if $info-&gt;{global};<br/> <br/>- my $complete = File::Spec-&gt;canonpath(&quot;$full.complete&quot;);<br/> if ($ENV{T2_KEEP_TEMPDIR}) {<br/>- rename($full, $complete) or $self-&gt;abort(&quot;Could not rename IPC file &#39;$full&#39;, &#39;$complete&#39;&quot;);<br/>+ my $complete = File::Spec-&gt;canonpath(&quot;$full.complete&quot;);<br/>+ my ($ok, $err) = do_rename($full, $complete);<br/>+ $self-&gt;abort(&quot;Could not rename IPC file &#39;$full&#39;, &#39;$complete&#39;: $err&quot;) unless $ok;<br/> }<br/> else {<br/>- unlink($full) or $self-&gt;abort(&quot;Could not unlink IPC file: $file&quot;);<br/>+ my ($ok, $err) = do_unlink(&quot;$full&quot;);<br/>+ $self-&gt;abort(&quot;Could not unlink IPC file &#39;$full&#39;: $err&quot;) unless $ok;<br/> }<br/> }<br/> <br/>@@ -250,6 +288,64 @@ sub cull {<br/> return @out;<br/> }<br/> <br/>+sub parse_event_filename {<br/>+ my $self = shift;<br/>+ my ($file) = @_;<br/>+<br/>+ # The || is to force 0 in false<br/>+ my $complete = substr($file, -9, 9) eq &#39;.complete&#39; || 0 and substr($file, -9, 9, &quot;&quot;);<br/>+ my $ready = substr($file, -6, 6) eq &#39;.ready&#39; || 0 and substr($file, -6, 6, &quot;&quot;);<br/>+<br/>+ my @parts = split &#39;-&#39;, $file;<br/>+ my ($global, $hid) = $parts[0] eq &#39;GLOBAL&#39; ? (1, shift @parts) : (0, join &#39;-&#39; =&gt; splice(@parts, 0, 3));<br/>+ my ($pid, $tid, $eid) = splice(@parts, 0, 3);<br/>+ my $type = join &#39;::&#39; =&gt; @parts;<br/>+<br/>+ return {<br/>+ ready =&gt; $ready,<br/>+ complete =&gt; $complete,<br/>+ global =&gt; $global,<br/>+ type =&gt; $type,<br/>+ hid =&gt; $hid,<br/>+ pid =&gt; $pid,<br/>+ tid =&gt; $tid,<br/>+ eid =&gt; $eid,<br/>+ };<br/>+}<br/>+<br/>+sub should_read_event {<br/>+ my $self = shift;<br/>+ my ($hid, $file) = @_;<br/>+<br/>+ return if substr($file, 0, 1) eq &#39;.&#39;;<br/>+<br/>+ my $parsed = $self-&gt;parse_event_filename($file);<br/>+<br/>+ return if $parsed-&gt;{complete};<br/>+ return unless $parsed-&gt;{ready};<br/>+ return unless $parsed-&gt;{global} || $parsed-&gt;{hid} eq $hid;<br/>+<br/>+ return if $parsed-&gt;{global} &amp;&amp; $self-&gt;{+GLOBALS}-&gt;{$hid}-&gt;{$file}++;<br/>+<br/>+ # Untaint the path.<br/>+ my $full = File::Spec-&gt;catfile($self-&gt;{+TEMPDIR}, $file);<br/>+ ($full) = ($full =~ m/^(.*)$/gs) if ${^TAINT};<br/>+<br/>+ $parsed-&gt;{full_path} = $full;<br/>+<br/>+ return $parsed;<br/>+}<br/>+<br/>+sub cmp_events {<br/>+ # Globals first<br/>+ return -1 if $a-&gt;{global} &amp;&amp; !$b-&gt;{global};<br/>+ return 1 if $b-&gt;{global} &amp;&amp; !$a-&gt;{global};<br/>+<br/>+ return $a-&gt;{pid} &lt;=&gt; $b-&gt;{pid}<br/>+ || $a-&gt;{tid} &lt;=&gt; $b-&gt;{tid}<br/>+ || $a-&gt;{eid} &lt;=&gt; $b-&gt;{eid};<br/>+}<br/>+<br/> sub read_event_file {<br/> my $self = shift;<br/> my ($file) = @_;<br/>@@ -306,7 +402,8 @@ sub DESTROY {<br/> $full =~ m/^(.*)$/;<br/> $full = $1; # Untaint it<br/> next if $ENV{T2_KEEP_TEMPDIR};<br/>- unlink($full) or $self-&gt;abort(&quot;Could not unlink IPC file: $full&quot;);<br/>+ my ($ok, $err) = do_unlink($full);<br/>+ $self-&gt;abort(&quot;Could not unlink IPC file &#39;$full&#39;: $err&quot;) unless $ok;<br/> next;<br/> }<br/> <br/>diff --git a/cpan/Test-Simple/lib/Test2/Util.pm b/cpan/Test-Simple/lib/Test2/Util.pm<br/>index 299a0be..c44a752 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Util.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Util.pm<br/>@@ -2,7 +2,7 @@ package Test2::Util;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Config qw/%Config/;<br/>diff --git a/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm b/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm<br/>index 37ce841..e7555e3 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm<br/>@@ -2,7 +2,7 @@ package Test2::Util::ExternalMeta;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Carp qw/croak/;<br/>diff --git a/cpan/Test-Simple/lib/Test2/Util/HashBase.pm b/cpan/Test-Simple/lib/Test2/Util/HashBase.pm<br/>index a61b7fb..1121385 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Util/HashBase.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Util/HashBase.pm<br/>@@ -2,7 +2,7 @@ package Test2::Util::HashBase;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> require Carp;<br/>diff --git a/cpan/Test-Simple/lib/Test2/Util/Trace.pm b/cpan/Test-Simple/lib/Test2/Util/Trace.pm<br/>index 67286f9..0dc99fe 100644<br/>--- a/cpan/Test-Simple/lib/Test2/Util/Trace.pm<br/>+++ b/cpan/Test-Simple/lib/Test2/Util/Trace.pm<br/>@@ -2,7 +2,7 @@ package Test2::Util::Trace;<br/> use strict;<br/> use warnings;<br/> <br/>-our $VERSION = &#39;1.302040&#39;;<br/>+our $VERSION = &#39;1.302045&#39;;<br/> <br/> <br/> use Test2::Util qw/get_tid/;<br/>diff --git a/cpan/Test-Simple/lib/ok.pm b/cpan/Test-Simple/lib/ok.pm<br/>index c8cf308..5f3dd1c 100644<br/>--- a/cpan/Test-Simple/lib/ok.pm<br/>+++ b/cpan/Test-Simple/lib/ok.pm<br/>@@ -1,5 +1,5 @@<br/> package ok;<br/>-$ok::VERSION = &#39;1.302040&#39;;<br/>+$ok::VERSION = &#39;1.302045&#39;;<br/> <br/> use strict;<br/> use Test::More ();<br/>diff --git a/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t b/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t<br/>index 5cda691..1691751 100644<br/>--- a/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t<br/>+++ b/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t<br/>@@ -2,6 +2,7 @@ BEGIN { require &quot;t/tools.pl&quot; };<br/> use Test2::Util qw/get_tid USE_THREADS try/;<br/> use File::Temp qw/tempfile/;<br/> use File::Spec qw/catfile/;<br/>+use List::Util qw/shuffle/;<br/> use strict;<br/> use warnings;<br/> <br/>@@ -40,7 +41,7 @@ ok(-d $ipc-&gt;tempdir, &quot;created temp dir&quot;);<br/> is($ipc-&gt;pid, $$, &quot;stored pid&quot;);<br/> is($ipc-&gt;tid, get_tid(), &quot;stored the tid&quot;);<br/> <br/>-my $hid = &#39;12345&#39;;<br/>+my $hid = &#39;12345-1-1&#39;;<br/> <br/> $ipc-&gt;add_hub($hid);<br/> my $hubfile = File::Spec-&gt;catfile($ipc-&gt;tempdir, &quot;HUB-$hid&quot;);<br/>@@ -171,8 +172,8 @@ ok(!-d $tmpdir, &quot;cleaned up temp dir&quot;);<br/> like($out-&gt;{STDERR}, qr/IPC Temp Dir: \Q$tmpdir\E/m, &quot;Got temp dir path&quot;);<br/> like($out-&gt;{STDERR}, qr/^# Not removing temp dir: \Q$tmpdir\E$/m, &quot;Notice about not closing tempdir&quot;);<br/> <br/>- like($out-&gt;{STDERR}, qr/^IPC Fatal Error: File for hub &#39;12345&#39; already exists/m, &quot;Got message for duplicate hub&quot;);<br/>- like($out-&gt;{STDERR}, qr/^IPC Fatal Error: File for hub &#39;12345&#39; does not exist/m, &quot;Cannot remove hub twice&quot;);<br/>+ like($out-&gt;{STDERR}, qr/^IPC Fatal Error: File for hub &#39;12345-1-1&#39; already exists/m, &quot;Got message for duplicate hub&quot;);<br/>+ like($out-&gt;{STDERR}, qr/^IPC Fatal Error: File for hub &#39;12345-1-1&#39; does not exist/m, &quot;Cannot remove hub twice&quot;);<br/> <br/> $out = capture {<br/> my $ipc = Test2::IPC::Driver::Files-&gt;new();<br/>@@ -185,7 +186,7 @@ ok(!-d $tmpdir, &quot;cleaned up temp dir&quot;);<br/> <br/> like($out-&gt;{STDERR}, qr/IPC Fatal Error:/, &quot;Got fatal error&quot;);<br/> like($out-&gt;{STDERR}, qr/There was an error writing an event/, &quot;Explanation&quot;);<br/>- like($out-&gt;{STDERR}, qr/Destination: 12345/, &quot;Got dest&quot;);<br/>+ like($out-&gt;{STDERR}, qr/Destination: 12345-1-1/, &quot;Got dest&quot;);<br/> like($out-&gt;{STDERR}, qr/Origin PID:\s+$$/, &quot;Got pid&quot;);<br/> like($out-&gt;{STDERR}, qr/Error: Can&#39;t store GLOB items/, &quot;Got cause&quot;);<br/> <br/>@@ -196,7 +197,7 @@ ok(!-d $tmpdir, &quot;cleaned up temp dir&quot;);<br/> print STDERR $@ unless $@ =~ m/^255/;<br/> $ipc = undef;<br/> };<br/>- like($out-&gt;{STDERR}, qr/IPC Fatal Error: hub &#39;12345&#39; is not available, failed to send event!/, &quot;Cannot send to missing hub&quot;);<br/>+ like($out-&gt;{STDERR}, qr/IPC Fatal Error: hub &#39;12345-1-1&#39; is not available, failed to send event!/, &quot;Cannot send to missing hub&quot;);<br/> <br/> $out = capture {<br/> my $ipc = Test2::IPC::Driver::Files-&gt;new();<br/>@@ -208,7 +209,7 @@ ok(!-d $tmpdir, &quot;cleaned up temp dir&quot;);<br/> print STDERR $@ unless $@ =~ m/^255/;<br/> };<br/> $cleanup-&gt;();<br/>- like($out-&gt;{STDERR}, qr/IPC Fatal Error: Not all files from hub &#39;12345&#39; have been collected/, &quot;Leftover files&quot;);<br/>+ like($out-&gt;{STDERR}, qr/IPC Fatal Error: Not all files from hub &#39;12345-1-1&#39; have been collected/, &quot;Leftover files&quot;);<br/> like($out-&gt;{STDERR}, qr/IPC Fatal Error: Leftover files in the directory \(.*\.ready\)/, &quot;What file&quot;);<br/> <br/> $out = capture {<br/>@@ -294,5 +295,232 @@ ok(!-d $tmpdir, &quot;cleaned up temp dir&quot;);<br/> $ipc = undef;<br/> }<br/> <br/>-done_testing;<br/>+{<br/>+ my @list = shuffle (<br/>+ {global =&gt; 0, pid =&gt; 2, tid =&gt; 1, eid =&gt; 1},<br/>+ {global =&gt; 0, pid =&gt; 2, tid =&gt; 1, eid =&gt; 2},<br/>+ {global =&gt; 0, pid =&gt; 2, tid =&gt; 1, eid =&gt; 3},<br/>+<br/>+ {global =&gt; 1, pid =&gt; 1, tid =&gt; 1, eid =&gt; 1},<br/>+ {global =&gt; 1, pid =&gt; 12, tid =&gt; 1, eid =&gt; 3},<br/>+ {global =&gt; 1, pid =&gt; 11, tid =&gt; 1, eid =&gt; 2},<br/>+<br/>+ {global =&gt; 0, pid =&gt; 2, tid =&gt; 3, eid =&gt; 1},<br/>+ {global =&gt; 0, pid =&gt; 2, tid =&gt; 3, eid =&gt; 10},<br/>+ {global =&gt; 0, pid =&gt; 2, tid =&gt; 3, eid =&gt; 100},<br/>+<br/>+ {global =&gt; 0, pid =&gt; 5, tid =&gt; 3, eid =&gt; 2},<br/>+ {global =&gt; 0, pid =&gt; 5, tid =&gt; 3, eid =&gt; 20},<br/>+ {global =&gt; 0, pid =&gt; 5, tid =&gt; 3, eid =&gt; 200},<br/>+ );<br/>+<br/>+ my @sorted;<br/>+ {<br/>+ package Test2::IPC::Driver::Files;<br/>+ @sorted = sort cmp_events @list;<br/>+ }<br/>+<br/>+ is_deeply(<br/>+ \@sorted,<br/>+ [<br/>+ {global =&gt; 1, pid =&gt; 1, tid =&gt; 1, eid =&gt; 1},<br/>+ {global =&gt; 1, pid =&gt; 11, tid =&gt; 1, eid =&gt; 2},<br/>+ {global =&gt; 1, pid =&gt; 12, tid =&gt; 1, eid =&gt; 3},<br/>+<br/>+ {global =&gt; 0, pid =&gt; 2, tid =&gt; 1, eid =&gt; 1},<br/>+ {global =&gt; 0, pid =&gt; 2, tid =&gt; 1, eid =&gt; 2},<br/>+ {global =&gt; 0, pid =&gt; 2, tid =&gt; 1, eid =&gt; 3},<br/>+<br/>+ {global =&gt; 0, pid =&gt; 2, tid =&gt; 3, eid =&gt; 1},<br/>+ {global =&gt; 0, pid =&gt; 2, tid =&gt; 3, eid =&gt; 10},<br/>+ {global =&gt; 0, pid =&gt; 2, tid =&gt; 3, eid =&gt; 100},<br/>+<br/>+ {global =&gt; 0, pid =&gt; 5, tid =&gt; 3, eid =&gt; 2},<br/>+ {global =&gt; 0, pid =&gt; 5, tid =&gt; 3, eid =&gt; 20},<br/>+ {global =&gt; 0, pid =&gt; 5, tid =&gt; 3, eid =&gt; 200},<br/>+ ],<br/>+ &quot;Sort by global, pid, tid and then eid&quot;<br/>+ );<br/>+}<br/>+<br/>+{<br/>+ my $ipc = &#39;Test2::IPC::Driver::Files&#39;;<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;parse_event_filename(&#39;GLOBAL-123-456-789-Event-Type-Foo.ready.complete&#39;),<br/>+ {<br/>+ ready =&gt; 1,<br/>+ complete =&gt; 1,<br/>+ global =&gt; 1,<br/>+ type =&gt; &quot;Event::Type::Foo&quot;,<br/>+ hid =&gt; &quot;GLOBAL&quot;,<br/>+ pid =&gt; &quot;123&quot;,<br/>+ tid =&gt; &quot;456&quot;,<br/>+ eid =&gt; &quot;789&quot;,<br/>+ },<br/>+ &quot;Parsed global complete&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;parse_event_filename(&#39;GLOBAL-123-456-789-Event-Type-Foo.ready&#39;),<br/>+ {<br/>+ ready =&gt; 1,<br/>+ complete =&gt; 0,<br/>+ global =&gt; 1,<br/>+ type =&gt; &quot;Event::Type::Foo&quot;,<br/>+ hid =&gt; &quot;GLOBAL&quot;,<br/>+ pid =&gt; &quot;123&quot;,<br/>+ tid =&gt; &quot;456&quot;,<br/>+ eid =&gt; &quot;789&quot;,<br/>+ },<br/>+ &quot;Parsed global ready&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;parse_event_filename(&#39;GLOBAL-123-456-789-Event-Type-Foo&#39;),<br/>+ {<br/>+ ready =&gt; 0,<br/>+ complete =&gt; 0,<br/>+ global =&gt; 1,<br/>+ type =&gt; &quot;Event::Type::Foo&quot;,<br/>+ hid =&gt; &quot;GLOBAL&quot;,<br/>+ pid =&gt; &quot;123&quot;,<br/>+ tid =&gt; &quot;456&quot;,<br/>+ eid =&gt; &quot;789&quot;,<br/>+ },<br/>+ &quot;Parsed global not ready&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;parse_event_filename(&#39;1-1-1-123-456-789-Event-Type-Foo.ready.complete&#39;),<br/>+ {<br/>+ ready =&gt; 1,<br/>+ complete =&gt; 1,<br/>+ global =&gt; 0,<br/>+ type =&gt; &quot;Event::Type::Foo&quot;,<br/>+ hid =&gt; &quot;1-1-1&quot;,<br/>+ pid =&gt; &quot;123&quot;,<br/>+ tid =&gt; &quot;456&quot;,<br/>+ eid =&gt; &quot;789&quot;,<br/>+ },<br/>+ &quot;Parsed event complete&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;parse_event_filename(&#39;1-2-3-123-456-789-Event-Type-Foo.ready&#39;),<br/>+ {<br/>+ ready =&gt; 1,<br/>+ complete =&gt; 0,<br/>+ global =&gt; 0,<br/>+ type =&gt; &quot;Event::Type::Foo&quot;,<br/>+ hid =&gt; &quot;1-2-3&quot;,<br/>+ pid =&gt; &quot;123&quot;,<br/>+ tid =&gt; &quot;456&quot;,<br/>+ eid =&gt; &quot;789&quot;,<br/>+ },<br/>+ &quot;Parsed event ready&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;parse_event_filename(&#39;3-2-11-123-456-789-Event&#39;),<br/>+ {<br/>+ ready =&gt; 0,<br/>+ complete =&gt; 0,<br/>+ global =&gt; 0,<br/>+ type =&gt; &quot;Event&quot;,<br/>+ hid =&gt; &quot;3-2-11&quot;,<br/>+ pid =&gt; &quot;123&quot;,<br/>+ tid =&gt; &quot;456&quot;,<br/>+ eid =&gt; &quot;789&quot;,<br/>+ },<br/>+ &quot;Parsed event not ready&quot;<br/>+ );<br/>+}<br/>+<br/>+{<br/>+ my $ipc = Test2::IPC::Driver::Files-&gt;new();<br/>+<br/>+ my $hid = &quot;1-1-1&quot;;<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;should_read_event($hid, &quot;GLOBAL-123-456-789-Event-Type-Foo.ready.complete&quot;) ? 1 : 0,<br/>+ 0,<br/>+ &quot;Do not read complete global&quot;<br/>+ );<br/> <br/>+ is_deeply(<br/>+ $ipc-&gt;should_read_event($hid, &quot;GLOBAL-123-456-789-Event-Type-Foo.ready&quot;) ? 1 : 0,<br/>+ 1,<br/>+ &quot;Should read ready global the first time&quot;<br/>+ );<br/>+ is_deeply(<br/>+ $ipc-&gt;should_read_event($hid, &quot;GLOBAL-123-456-789-Event-Type-Foo.ready&quot;) ? 1 : 0,<br/>+ 0,<br/>+ &quot;Should not read ready global again&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;should_read_event($hid, &quot;GLOBAL-123-456-789-Event-Type-Foo&quot;) ? 1 : 0,<br/>+ 0,<br/>+ &quot;Should not read un-ready global&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;should_read_event($hid, &quot;$hid-123-456-789-Event-Type-Foo.ready.complete&quot;) ? 1 : 0,<br/>+ 0,<br/>+ &quot;Do not read complete our hid&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;should_read_event($hid, &quot;$hid-123-456-789-Event-Type-Foo.ready&quot;) ? 1 : 0,<br/>+ 1,<br/>+ &quot;Should read ready our hid&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;should_read_event($hid, &quot;$hid-123-456-789-Event-Type-Foo.ready&quot;) ? 1 : 0,<br/>+ 1,<br/>+ &quot;Should read ready our hid (again, no duplicate checking)&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;should_read_event($hid, &quot;$hid-123-456-789-Event-Type-Foo&quot;) ? 1 : 0,<br/>+ 0,<br/>+ &quot;Should not read un-ready our hid&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;should_read_event($hid, &quot;1-2-3-123-456-789-Event-Type-Foo.ready.complete&quot;) ? 1 : 0,<br/>+ 0,<br/>+ &quot;Not ours - complete&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;should_read_event($hid, &quot;1-2-3-123-456-789-Event-Type-Foo.ready&quot;) ? 1 : 0,<br/>+ 0,<br/>+ &quot;Not ours - ready&quot;<br/>+ );<br/>+<br/>+ is_deeply(<br/>+ $ipc-&gt;should_read_event($hid, &quot;1-2-3-123-456-789-Event-Type-Foo&quot;) ? 1 : 0,<br/>+ 0,<br/>+ &quot;Not ours - unready&quot;<br/>+ );<br/>+<br/>+ my @got = $ipc-&gt;should_read_event($hid, &quot;$hid-123-456-789-Event-Type-Foo&quot;);<br/>+ ok(!@got, &quot;return empty list for false&quot;);<br/>+<br/>+ @got = $ipc-&gt;should_read_event($hid, &quot;$hid-123-456-789-Event-Type-Foo.ready&quot;);<br/>+ is(@got, 1, &quot;got 1 item on true&quot;);<br/>+<br/>+ like(delete $got[0]-&gt;{full_path}, qr{^.+\Q$hid\E-123-456-789-Event-Type-Foo\.ready$}, &quot;Got full path&quot;);<br/>+ is_deeply(<br/>+ $got[0],<br/>+ $ipc-&gt;parse_event_filename(&quot;$hid-123-456-789-Event-Type-Foo.ready&quot;),<br/>+ &quot;Apart from full_path we get entire parsed filename&quot;<br/>+ );<br/>+<br/>+ $ipc = undef;<br/>+}<br/>+<br/>+done_testing;<br/>diff --git a/cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t b/cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t<br/>new file mode 100644<br/>index 0000000..c365b8a<br/>--- /dev/null<br/>+++ b/cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t<br/>@@ -0,0 +1,30 @@<br/>+BEGIN { require &quot;t/tools.pl&quot; };<br/>+use strict;<br/>+use warnings;<br/>+<br/>+skip_all(&quot;Test cannot run on perls below 5.8.8&quot;) unless &quot;$]&quot; &gt; 5.008007;<br/>+<br/>+use Test2::Util qw/CAN_THREAD/;<br/>+use Test2::IPC;<br/>+use Test2::API qw/context intercept/;<br/>+<br/>+skip_all(&#39;System does not have threads&#39;) unless CAN_THREAD();<br/>+<br/>+require threads;<br/>+threads-&gt;import;<br/>+<br/>+my $events = intercept {<br/>+ threads-&gt;create(<br/>+ sub {<br/>+ ok 1, &quot;something $_ nonlocal&quot; for (1 .. 15);<br/>+ }<br/>+ )-&gt;join;<br/>+};<br/>+<br/>+is_deeply(<br/>+ [map { $_-&gt;{name} } @$events],<br/>+ [map &quot;something $_ nonlocal&quot;, 1 .. 15],<br/>+ &quot;Culled sub-thread events in correct order&quot;<br/>+);<br/>+<br/>+done_testing;<br/>diff --git a/cpan/libnet/Makefile.PL b/cpan/libnet/Makefile.PL<br/>index 64d6959..6efc003 100644<br/>--- a/cpan/libnet/Makefile.PL<br/>+++ b/cpan/libnet/Makefile.PL<br/>@@ -66,7 +66,7 @@ MAIN: {<br/> ABSTRACT =&gt; &#39;Collection of network protocol modules&#39;,<br/> AUTHOR =&gt; &#39;Graham Barr &lt;gbarr@pobox.com&gt;, Steve Hay &lt;shay@cpan.org&gt;&#39;,<br/> LICENSE =&gt; &#39;perl_5&#39;,<br/>- VERSION =&gt; &#39;3.08&#39;,<br/>+ VERSION =&gt; &#39;3.09&#39;,<br/> <br/> META_MERGE =&gt; {<br/> &#39;meta-spec&#39; =&gt; {<br/>@@ -120,7 +120,7 @@ MAIN: {<br/> prereqs =&gt; {<br/> runtime =&gt; {<br/> requires =&gt; {<br/>- &#39;IO::Socket::IP&#39; =&gt; &#39;0.20&#39;<br/>+ &#39;IO::Socket::IP&#39; =&gt; &#39;0.25&#39;<br/> # or IO::Socket::INET6 2.62<br/> }<br/> }<br/>diff --git a/cpan/libnet/lib/Net/Cmd.pm b/cpan/libnet/lib/Net/Cmd.pm<br/>index 2242600..3f102b9 100644<br/>--- a/cpan/libnet/lib/Net/Cmd.pm<br/>+++ b/cpan/libnet/lib/Net/Cmd.pm<br/>@@ -28,7 +28,7 @@ BEGIN {<br/> }<br/> }<br/> <br/>-our $VERSION = &quot;3.08&quot;;<br/>+our $VERSION = &quot;3.09&quot;;<br/> our @ISA = qw(Exporter);<br/> our @EXPORT = qw(CMD_INFO CMD_OK CMD_MORE CMD_REJECT CMD_ERROR CMD_PENDING);<br/> <br/>@@ -190,6 +190,8 @@ sub set_status {<br/> 1;<br/> }<br/> <br/>+sub timeout { 0 }<br/>+<br/> sub _syswrite_with_timeout {<br/> my $cmd = shift;<br/> my $line = shift;<br/>@@ -748,6 +750,12 @@ command server.<br/> <br/> Returns undef upon failure.<br/> <br/>+=item timeout ()<br/>+<br/>+Returns the timeout value for this class, in seconds. The timeout provided<br/>+by the default implementation is 0; subclasses may override this if they<br/>+choose.<br/>+<br/> =item unsupported ()<br/> <br/> Sets the status code to 580 and the response text to &#39;Unsupported command&#39;.<br/>diff --git a/cpan/libnet/lib/Net/Config.pm b/cpan/libnet/lib/Net/Config.pm<br/>index 3aa547e..ff2b841 100644<br/>--- a/cpan/libnet/lib/Net/Config.pm<br/>+++ b/cpan/libnet/lib/Net/Config.pm<br/>@@ -20,7 +20,7 @@ use Socket qw(inet_aton inet_ntoa);<br/> <br/> our @EXPORT = qw(%NetConfig);<br/> our @ISA = qw(Net::LocalCfg Exporter);<br/>-our $VERSION = &quot;3.08&quot;;<br/>+our $VERSION = &quot;3.09&quot;;<br/> <br/> our($CONFIGURE, $LIBNET_CFG);<br/> <br/>diff --git a/cpan/libnet/lib/Net/Domain.pm b/cpan/libnet/lib/Net/Domain.pm<br/>index e2be3b1..6b650b8 100644<br/>--- a/cpan/libnet/lib/Net/Domain.pm<br/>+++ b/cpan/libnet/lib/Net/Domain.pm<br/>@@ -21,7 +21,7 @@ use Net::Config;<br/> <br/> our @ISA = qw(Exporter);<br/> our @EXPORT_OK = qw(hostname hostdomain hostfqdn domainname);<br/>-our $VERSION = &quot;3.08&quot;;<br/>+our $VERSION = &quot;3.09&quot;;<br/> <br/> my ($host, $domain, $fqdn) = (undef, undef, undef);<br/> <br/>diff --git a/cpan/libnet/lib/Net/FTP.pm b/cpan/libnet/lib/Net/FTP.pm<br/>index c0904c6..2bf6fc9 100644<br/>--- a/cpan/libnet/lib/Net/FTP.pm<br/>+++ b/cpan/libnet/lib/Net/FTP.pm<br/>@@ -25,7 +25,7 @@ use Net::Config;<br/> use Socket;<br/> use Time::Local;<br/> <br/>-our $VERSION = &#39;3.08&#39;;<br/>+our $VERSION = &#39;3.09&#39;;<br/> <br/> our $IOCLASS;<br/> my $family_key;<br/>@@ -45,7 +45,7 @@ BEGIN {<br/> my $inet6_class = eval {<br/> require IO::Socket::IP;<br/> no warnings &#39;numeric&#39;;<br/>- IO::Socket::IP-&gt;VERSION(0.20);<br/>+ IO::Socket::IP-&gt;VERSION(0.25);<br/> } &amp;&amp; &#39;IO::Socket::IP&#39; || eval {<br/> require IO::Socket::INET6;<br/> no warnings &#39;numeric&#39;;<br/>diff --git a/cpan/libnet/lib/Net/FTP/A.pm b/cpan/libnet/lib/Net/FTP/A.pm<br/>index a1ae30b..5dc16fa 100644<br/>--- a/cpan/libnet/lib/Net/FTP/A.pm<br/>+++ b/cpan/libnet/lib/Net/FTP/A.pm<br/>@@ -13,7 +13,7 @@ use Carp;<br/> use Net::FTP::dataconn;<br/> <br/> our @ISA = qw(Net::FTP::dataconn);<br/>-our $VERSION = &quot;3.08&quot;;<br/>+our $VERSION = &quot;3.09&quot;;<br/> <br/> our $buf;<br/> <br/>diff --git a/cpan/libnet/lib/Net/FTP/E.pm b/cpan/libnet/lib/Net/FTP/E.pm<br/>index cf09d90..5f77665 100644<br/>--- a/cpan/libnet/lib/Net/FTP/E.pm<br/>+++ b/cpan/libnet/lib/Net/FTP/E.pm<br/>@@ -8,6 +8,6 @@ use warnings;<br/> use Net::FTP::I;<br/> <br/> our @ISA = qw(Net::FTP::I);<br/>-our $VERSION = &quot;3.08&quot;;<br/>+our $VERSION = &quot;3.09&quot;;<br/> <br/> 1;<br/>diff --git a/cpan/libnet/lib/Net/FTP/I.pm b/cpan/libnet/lib/Net/FTP/I.pm<br/>index b014f08..25d14c0 100644<br/>--- a/cpan/libnet/lib/Net/FTP/I.pm<br/>+++ b/cpan/libnet/lib/Net/FTP/I.pm<br/>@@ -13,7 +13,7 @@ use Carp;<br/> use Net::FTP::dataconn;<br/> <br/> our @ISA = qw(Net::FTP::dataconn);<br/>-our $VERSION = &quot;3.08&quot;;<br/>+our $VERSION = &quot;3.09&quot;;<br/> <br/> our $buf;<br/> <br/>diff --git a/cpan/libnet/lib/Net/FTP/L.pm b/cpan/libnet/lib/Net/FTP/L.pm<br/>index d13efe7..1809194 100644<br/>--- a/cpan/libnet/lib/Net/FTP/L.pm<br/>+++ b/cpan/libnet/lib/Net/FTP/L.pm<br/>@@ -8,6 +8,6 @@ use warnings;<br/> use Net::FTP::I;<br/> <br/> our @ISA = qw(Net::FTP::I);<br/>-our $VERSION = &quot;3.08&quot;;<br/>+our $VERSION = &quot;3.09&quot;;<br/> <br/> 1;<br/>diff --git a/cpan/libnet/lib/Net/FTP/dataconn.pm b/cpan/libnet/lib/Net/FTP/dataconn.pm<br/>index 8d82030..24b2ac7 100644<br/>--- a/cpan/libnet/lib/Net/FTP/dataconn.pm<br/>+++ b/cpan/libnet/lib/Net/FTP/dataconn.pm<br/>@@ -13,7 +13,7 @@ use Carp;<br/> use Errno;<br/> use Net::Cmd;<br/> <br/>-our $VERSION = &#39;3.08&#39;;<br/>+our $VERSION = &#39;3.09&#39;;<br/> <br/> $Net::FTP::IOCLASS or die &quot;please load Net::FTP before Net::FTP::dataconn&quot;;<br/> our @ISA = $Net::FTP::IOCLASS;<br/>diff --git a/cpan/libnet/lib/Net/NNTP.pm b/cpan/libnet/lib/Net/NNTP.pm<br/>index 0d690de..803692b 100644<br/>--- a/cpan/libnet/lib/Net/NNTP.pm<br/>+++ b/cpan/libnet/lib/Net/NNTP.pm<br/>@@ -21,7 +21,7 @@ use Net::Cmd;<br/> use Net::Config;<br/> use Time::Local;<br/> <br/>-our $VERSION = &quot;3.08&quot;;<br/>+our $VERSION = &quot;3.09&quot;;<br/> <br/> # Code for detecting if we can use SSL<br/> my $ssl_class = eval {<br/>@@ -39,7 +39,7 @@ my $family_key = &#39;Domain&#39;;<br/> my $inet6_class = eval {<br/> require IO::Socket::IP;<br/> no warnings &#39;numeric&#39;;<br/>- IO::Socket::IP-&gt;VERSION(0.20) || die;<br/>+ IO::Socket::IP-&gt;VERSION(0.25) || die;<br/> $family_key = &#39;Family&#39;;<br/> } &amp;&amp; &#39;IO::Socket::IP&#39; || eval {<br/> require IO::Socket::INET6;<br/>@@ -845,10 +845,10 @@ NNTP server, a value of zero will cause all IO operations to block.<br/> B&lt;Debug&gt; - Enable the printing of debugging information to STDERR<br/> <br/> B&lt;Reader&gt; - If the remote server is INN then initially the connection<br/>-will be to nnrpd, by default C&lt;Net::NNTP&gt; will issue a C&lt;MODE READER&gt; command<br/>-so that the remote server becomes innd. If the C&lt;Reader&gt; option is given<br/>+will be to innd, by default C&lt;Net::NNTP&gt; will issue a C&lt;MODE READER&gt; command<br/>+so that the remote server becomes nnrpd. If the C&lt;Reader&gt; option is given<br/> with a value of zero, then this command will not be sent and the<br/>-connection will be left talking to nnrpd.<br/>+connection will be left talking to innd.<br/> <br/> B&lt;LocalAddr&gt; and B&lt;LocalPort&gt; - These parameters are passed directly<br/> to IO::Socket to allow binding the socket to a specific local address and port.<br/>diff --git a/cpan/libnet/lib/Net/Netrc.pm b/cpan/libnet/lib/Net/Netrc.pm<br/>index 4945604..5988606 100644<br/>--- a/cpan/libnet/lib/Net/Netrc.pm<br/>+++ b/cpan/libnet/lib/Net/Netrc.pm<br/>@@ -18,7 +18,7 @@ use warnings;<br/> use Carp;<br/> use FileHandle;<br/> <br/>-our $VERSION = &quot;3.08&quot;;<br/>+our $VERSION = &quot;3.09&quot;;<br/> <br/> our $TESTING;<br/> <br/>diff --git a/cpan/libnet/lib/Net/POP3.pm b/cpan/libnet/lib/Net/POP3.pm<br/>index bccdfb0..eaff511 100644<br/>--- a/cpan/libnet/lib/Net/POP3.pm<br/>+++ b/cpan/libnet/lib/Net/POP3.pm<br/>@@ -20,7 +20,7 @@ use IO::Socket;<br/> use Net::Cmd;<br/> use Net::Config;<br/> <br/>-our $VERSION = &quot;3.08&quot;;<br/>+our $VERSION = &quot;3.09&quot;;<br/> <br/> # Code for detecting if we can use SSL<br/> my $ssl_class = eval {<br/>@@ -38,7 +38,7 @@ my $family_key = &#39;Domain&#39;;<br/> my $inet6_class = eval {<br/> require IO::Socket::IP;<br/> no warnings &#39;numeric&#39;;<br/>- IO::Socket::IP-&gt;VERSION(0.20) || die;<br/>+ IO::Socket::IP-&gt;VERSION(0.25) || die;<br/> $family_key = &#39;Family&#39;;<br/> } &amp;&amp; &#39;IO::Socket::IP&#39; || eval {<br/> require IO::Socket::INET6;<br/>diff --git a/cpan/libnet/lib/Net/SMTP.pm b/cpan/libnet/lib/Net/SMTP.pm<br/>index 6d3e4c2..726035d 100644<br/>--- a/cpan/libnet/lib/Net/SMTP.pm<br/>+++ b/cpan/libnet/lib/Net/SMTP.pm<br/>@@ -21,7 +21,7 @@ use Net::Cmd;<br/> use Net::Config;<br/> use Socket;<br/> <br/>-our $VERSION = &quot;3.08&quot;;<br/>+our $VERSION = &quot;3.09&quot;;<br/> <br/> # Code for detecting if we can use SSL<br/> my $ssl_class = eval {<br/>@@ -39,7 +39,7 @@ my $family_key = &#39;Domain&#39;;<br/> my $inet6_class = eval {<br/> require IO::Socket::IP;<br/> no warnings &#39;numeric&#39;;<br/>- IO::Socket::IP-&gt;VERSION(0.20) || die;<br/>+ IO::Socket::IP-&gt;VERSION(0.25) || die;<br/> $family_key = &#39;Family&#39;;<br/> } &amp;&amp; &#39;IO::Socket::IP&#39; || eval {<br/> require IO::Socket::INET6;<br/>@@ -225,11 +225,15 @@ sub auth {<br/> if defined $str and length $str;<br/> <br/> while (($code = $self-&gt;command(@cmd)-&gt;response()) == CMD_MORE) {<br/>+ my $str2 = MIME::Base64::decode_base64(($self-&gt;message)[0]);<br/>+ $self-&gt;debug_print(0, &quot;(decoded) &quot; . $str2 . &quot;\n&quot;) if $self-&gt;debug;<br/>+<br/>+ $str = $client-&gt;client_step($str2);<br/> @cmd = (<br/>- MIME::Base64::encode_base64(<br/>- $client-&gt;client_step(MIME::Base64::decode_base64(($self-&gt;message)[0])), &#39;&#39;<br/>- )<br/>+ MIME::Base64::encode_base64($str, &#39;&#39;)<br/> );<br/>+<br/>+ $self-&gt;debug_print(1, &quot;(decoded) &quot; . $str . &quot;\n&quot;) if $self-&gt;debug;<br/> }<br/> <br/> $code == CMD_OK;<br/>diff --git a/cpan/libnet/lib/Net/Time.pm b/cpan/libnet/lib/Net/Time.pm<br/>index fae93f8..a8f0b43 100644<br/>--- a/cpan/libnet/lib/Net/Time.pm<br/>+++ b/cpan/libnet/lib/Net/Time.pm<br/>@@ -24,7 +24,7 @@ use Net::Config;<br/> our @ISA = qw(Exporter);<br/> our @EXPORT_OK = qw(inet_time inet_daytime);<br/> <br/>-our $VERSION = &quot;3.08&quot;;<br/>+our $VERSION = &quot;3.09&quot;;<br/> <br/> our $TIMEOUT = 120;<br/> <br/>diff --git a/cpan/libnet/lib/Net/libnetFAQ.pod b/cpan/libnet/lib/Net/libnetFAQ.pod<br/>index f8ad797..d844f6e 100644<br/>--- a/cpan/libnet/lib/Net/libnetFAQ.pod<br/>+++ b/cpan/libnet/lib/Net/libnetFAQ.pod<br/>@@ -56,7 +56,7 @@ Authen::SASL is required for AUTH support.<br/> <br/> IO::Socket::SSL version 2.007 or higher is required for SSL support.<br/> <br/>-IO::Socket::IP version 0.20 or IO::Socket::INET6 version 2.62 is<br/>+IO::Socket::IP version 0.25 or IO::Socket::INET6 version 2.62 is<br/> required for IPv6 support.<br/> <br/> =head2 What machines support libnet ?<br/>diff --git a/cpan/libnet/t/datasend.t b/cpan/libnet/t/datasend.t<br/>index 0aea9d4..05903fb 100644<br/>--- a/cpan/libnet/t/datasend.t<br/>+++ b/cpan/libnet/t/datasend.t<br/>@@ -21,8 +21,6 @@ BEGIN {<br/> use Net::Cmd;<br/> our @ISA = qw(Net::Cmd IO::File);<br/> <br/>- sub timeout { 0 }<br/>-<br/> sub new {<br/> my $fh = shift-&gt;new_tmpfile;<br/> binmode($fh);<br/>diff --git a/cpan/libnet/t/nntp_ipv6.t b/cpan/libnet/t/nntp_ipv6.t<br/>index 1992618..768489a 100644<br/>--- a/cpan/libnet/t/nntp_ipv6.t<br/>+++ b/cpan/libnet/t/nntp_ipv6.t<br/>@@ -63,4 +63,5 @@ sub nntp_server {<br/> }<br/> }<br/> note(&quot;NNTP dialog done&quot;);<br/>+ return 0;<br/> }<br/>diff --git a/cpan/libnet/t/pop3_ipv6.t b/cpan/libnet/t/pop3_ipv6.t<br/>index 1c88c1a..db31128 100644<br/>--- a/cpan/libnet/t/pop3_ipv6.t<br/>+++ b/cpan/libnet/t/pop3_ipv6.t<br/>@@ -63,4 +63,5 @@ sub pop3_server {<br/> }<br/> <br/> note(&quot;POP3 dialog done&quot;);<br/>+ return 0;<br/> }<br/>diff --git a/cpan/libnet/t/smtp_ipv6.t b/cpan/libnet/t/smtp_ipv6.t<br/>index a31b6ff..f430721 100644<br/>--- a/cpan/libnet/t/smtp_ipv6.t<br/>+++ b/cpan/libnet/t/smtp_ipv6.t<br/>@@ -65,4 +65,5 @@ sub smtp_server {<br/> }<br/> <br/> note(&quot;SMTP dialog done&quot;);<br/>+ return 0;<br/> }<br/>diff --git a/pod/perldelta.pod b/pod/perldelta.pod<br/>index 3d1b0b7..31759c6 100644<br/>--- a/pod/perldelta.pod<br/>+++ b/pod/perldelta.pod<br/>@@ -2,9 +2,6 @@<br/> <br/> =head1 NAME<br/> <br/>-[ this is a template for a new perldelta file. Any text flagged as XXX needs<br/>-to be processed before release. ]<br/>-<br/> perldelta - what is new for perl v5.25.3<br/> <br/> =head1 DESCRIPTION<br/>@@ -15,157 +12,120 @@ release.<br/> If you are upgrading from an earlier release such as 5.25.1, first read<br/> L&lt;perl5252delta&gt;, which describes differences between 5.25.1 and 5.25.2.<br/> <br/>-=head1 Notice<br/>-<br/>-XXX Any important notices here<br/>-<br/> =head1 Core Enhancements<br/> <br/>-XXX New core language features go here. Summarize user-visible core language<br/>-enhancements. Particularly prominent performance optimisations could go<br/>-here, but most should go in the L&lt;/Performance Enhancements&gt; section.<br/>-<br/>-[ List each enhancement as a =head2 entry ]<br/>-<br/> =head2 Unicode 9.0 is now supported<br/> <br/>-A list of changes is at<br/>-L&lt;http://www.unicode.org/versions/Unicode9.0.0/&gt;. Modules that are<br/>-shipped with core Perl but not maintained by p5p do not necessarily<br/>-support Unicode 9.0. L&lt;Unicode::Normalize&gt; does work on 9.0.<br/>+A list of changes is at L&lt;http://www.unicode.org/versions/Unicode9.0.0/&gt;.<br/>+Modules that are shipped with core Perl but not maintained by p5p do not<br/>+necessarily support Unicode 9.0. L&lt;Unicode::Normalize&gt; does work on 9.0.<br/> <br/>-=head2 Use of C&lt;\p{I&lt;script&gt;}&gt; uses the improved Script_Extensions<br/>-property<br/>+=head2 Use of C&lt;\p{I&lt;script&gt;}&gt; uses the improved Script_Extensions property<br/> <br/>-Unicode 6.0 introduced an improved form of the Script (C&lt;sc&gt;) property,<br/>-and called it Script_Extensions (C&lt;scx&gt;). As of now, Perl uses this<br/>-improved version when a property is specified as just C&lt;\p{I&lt;script&gt;}&gt;.<br/>-The meaning of compound forms, like C&lt;\p{sc=I&lt;script&gt;}&gt; are unchanged.<br/>-This should make programs be more accurate when determining if a<br/>-character is used in a given script, but there is a slight chance of<br/>-breakage for programs that very specifically needed the old behavior.<br/>-See L&lt;perlunicode/Scripts&gt;.<br/>+Unicode 6.0 introduced an improved form of the Script (C&lt;sc&gt;) property, and<br/>+called it Script_Extensions (C&lt;scx&gt;). As of now, Perl uses this improved<br/>+version when a property is specified as just C&lt;\p{I&lt;script&gt;}&gt;. The meaning of<br/>+compound forms, like C&lt;\p{sc=I&lt;script&gt;}&gt; are unchanged. This should make<br/>+programs be more accurate when determining if a character is used in a given<br/>+script, but there is a slight chance of breakage for programs that very<br/>+specifically needed the old behavior. See L&lt;perlunicode/Scripts&gt;.<br/> <br/> =head2 Declaring a reference to a variable<br/> <br/>-As an experimental feature, Perl now allows the referencing operator to<br/>-come after C&lt;my&gt;, C&lt;state&gt;, C&lt;our&gt;, or C&lt;local&gt;. This syntax must be<br/>-enabled with C&lt;use feature &#39;declared_refs&#39;&gt;. It is experimental, and will<br/>-warn by default unless C&lt;no warnings &#39;experimental::refaliasing&#39;&gt; is in<br/>-effect. It is intended mainly for use in assignments to references. For<br/>-example:<br/>+As an experimental feature, Perl now allows the referencing operator to come<br/>+after L&lt;C&lt;my()&gt;|perlfunc/my&gt;, L&lt;C&lt;state()&gt;|perlfunc/state&gt;,<br/>+L&lt;C&lt;our()&gt;|perlfunc/our&gt;, or L&lt;C&lt;local()&gt;|perlfunc/local&gt;. This syntax must<br/>+be enabled with C&lt;use feature &#39;declared_refs&#39;&gt;. It is experimental, and will<br/>+warn by default unless C&lt;no warnings &#39;experimental::refaliasing&#39;&gt; is in effect.<br/>+It is intended mainly for use in assignments to references. For example:<br/> <br/> use experimental &#39;refaliasing&#39;, &#39;declared_refs&#39;;<br/> my \$a = \$b;<br/> <br/> See L&lt;perlref/Assigning to References&gt; for slightly more detail.<br/> <br/>-=head1 Security<br/>-<br/>-XXX Any security-related notices go here. In particular, any security<br/>-vulnerabilities closed should be noted here rather than in the<br/>-L&lt;/Selected Bug Fixes&gt; section.<br/>-<br/>-[ List each security issue as a =head2 entry ]<br/>-<br/> =head1 Incompatible Changes<br/> <br/>-XXX For a release on a stable branch, this section aspires to be:<br/>-<br/>- There are no changes intentionally incompatible with 5.XXX.XXX<br/>- If any exist, they are bugs, and we request that you submit a<br/>- report. See L&lt;/Reporting Bugs&gt; below.<br/>-<br/>-[ List each incompatible change as a =head2 entry ]<br/>-<br/> =head2 C&lt;${^ENCODING}&gt; has been removed<br/> <br/>-Consequently, the L&lt;encoding&gt; pragma&#39;s default mode is no longer supported.<br/>-If you still need to write your source code in encodings other than UTF-8,<br/>-use a source filter such as L&lt;Filter::Encoding&gt; on CPAN or L&lt;encoding&gt;&#39;s<br/>-C&lt;Filter&gt; option.<br/>+Consequently, the L&lt;encoding&gt; pragma&#39;s default mode is no longer supported. If<br/>+you still need to write your source code in encodings other than UTF-8, use a<br/>+source filter such as L&lt;Filter::Encoding&gt; on CPAN or L&lt;encoding&gt;&#39;s C&lt;Filter&gt;<br/>+option.<br/> <br/>-=head1 Deprecations<br/>+=head2 C&lt;scalar(%hash)&gt; return signature changed<br/> <br/>-XXX Any deprecated features, syntax, modules etc. should be listed here.<br/>+The value returned for C&lt;scalar(%hash)&gt; will no longer show information about<br/>+the buckets allocated in the hash. It will simply return the count of used<br/>+keys. It is thus equivalent to C&lt;0+keys(%hash)&gt;.<br/> <br/>-=head2 Module removals<br/>+A form of backwards compatibility is provided via C&lt;Hash::Util::bucket_ratio()&gt;<br/>+which provides the same behavior as C&lt;scalar(%hash)&gt; provided prior to Perl<br/>+5.25.<br/> <br/>-XXX Remove this section if inapplicable.<br/>+=head1 Modules and Pragmata<br/> <br/>-The following modules will be removed from the core distribution in a<br/>-future release, and will at that time need to be installed from CPAN.<br/>-Distributions on CPAN which require these modules will need to list them as<br/>-prerequisites.<br/>+=head2 Updated Modules and Pragmata<br/> <br/>-The core versions of these modules will now issue C&lt;&quot;deprecated&quot;&gt;-category<br/>-warnings to alert you to this fact. To silence these deprecation warnings,<br/>-install the modules in question from CPAN.<br/>+=over 4<br/> <br/>-Note that these are (with rare exceptions) fine modules that you are encouraged<br/>-to continue to use. Their disinclusion from core primarily hinges on their<br/>-necessity to bootstrapping a fully functional, CPAN-capable Perl installation,<br/>-not usually on concerns over their design.<br/>+=item *<br/> <br/>-=over<br/>+L&lt;bignum&gt; has been upgraded from version 0.42 to 0.43.<br/> <br/>-=item XXX<br/>+=item *<br/> <br/>-XXX Note that deprecated modules should be listed here even if they are listed<br/>-as an updated module in the L&lt;/Modules and Pragmata&gt; section.<br/>+L&lt;Data::Dumper&gt; has been upgraded from version 2.160 to 2.161.<br/> <br/>-=back<br/>+=item *<br/> <br/>-[ List each other deprecation as a =head2 entry ]<br/>+L&lt;Devel::PPPort&gt; has been upgraded from version 3.32 to 3.35.<br/> <br/>-=head1 Performance Enhancements<br/>+=item *<br/> <br/>-XXX Changes which enhance performance without changing behaviour go here.<br/>-There may well be none in a stable release.<br/>+L&lt;Encode&gt; has been upgraded from version 2.80 to 2.84.<br/> <br/>-[ List each enhancement as a =item entry ]<br/>+=item *<br/> <br/>-=over 4<br/>+L&lt;encoding&gt; has been upgraded from version 2.17 to 2.17_01.<br/>+<br/>+This module&#39;s default mode is no longer supported as of Perl 5.25.3. It now<br/>+dies when imported, unless the C&lt;Filter&gt; option is being used.<br/> <br/> =item *<br/> <br/>-XXX<br/>+L&lt;encoding::warnings&gt; has been upgraded from version 0.12 to 0.13.<br/> <br/>-=back<br/>+This module is no longer supported as of Perl 5.25.3. It emits a warning to<br/>+that effect and then does nothing.<br/> <br/>-=head2 C&lt;scalar(%hash)&gt; return signature changed<br/>+=item *<br/> <br/>-The value returned for C&lt;scalar(%hash)&gt; will no longer show information<br/>-about the buckets allocated in the hash. It will simply return the count<br/>-of used keys. It is thus equivalent to C&lt;0+keys(%hash)&gt;.<br/>+L&lt;ExtUtils::ParseXS&gt; has been upgraded from version 3.32 to 3.33.<br/> <br/>-A form of backwards compatibility is provided via C&lt;Hash::Util::bucket_ratio()&gt;<br/>-which provides the same behavior as scalar(%hash) provided prior to<br/>-Perl 5.25.<br/>+=item *<br/> <br/>-=head1 Modules and Pragmata<br/>+L&lt;ExtUtils::Typemaps&gt; has been upgraded from version 3.32 to 3.33.<br/> <br/>-XXX All changes to installed files in F&lt;cpan/&gt;, F&lt;dist/&gt;, F&lt;ext/&gt; and F&lt;lib/&gt;<br/>-go here. If Module::CoreList is updated, generate an initial draft of the<br/>-following sections using F&lt;Porting/corelist-perldelta.pl&gt;. A paragraph summary<br/>-for important changes should then be added by hand. In an ideal world,<br/>-dual-life modules would have a F&lt;Changes&gt; file that could be cribbed.<br/>+=item *<br/> <br/>-[ Within each section, list entries as a =item entry ]<br/>+L&lt;feature&gt; has been upgraded from version 1.44 to 1.45.<br/> <br/>-=head2 New Modules and Pragmata<br/>+=item *<br/> <br/>-=over 4<br/>+L&lt;Hash::Util&gt; has been upgraded from version 0.19 to 0.20.<br/> <br/> =item *<br/> <br/>-XXX<br/>+L&lt;Math::BigInt&gt; has been upgraded from version 1.999715 to 1.999726.<br/> <br/>-=back<br/>+=item *<br/> <br/>-=head2 Updated Modules and Pragmata<br/>+L&lt;Math::BigInt::FastCalc&gt; has been upgraded from version 0.40 to 0.42.<br/> <br/>-=over 4<br/>+=item *<br/>+<br/>+L&lt;Math::BigRat&gt; has been upgraded from version 0.260802 to 0.260804.<br/> <br/> =item *<br/> <br/>@@ -173,224 +133,193 @@ L&lt;Module::CoreList&gt; has been upgraded from version 5.20160620 to 5.20160720.<br/> <br/> =item *<br/> <br/>-L&lt;XSLoader&gt; has been upgraded from version 0.21 to 0.22, fixing a security<br/>-hole in which binary files could be loaded from a path outside of @INC.<br/>+L&lt;Parse::CPAN::Meta&gt; has been upgraded from version 1.4417 to 1.4422.<br/> <br/> =item *<br/> <br/>-L&lt;encoding&gt; has been upgraded from version 2.17 to 2.17_01.<br/>-<br/>-This module&#39;s default mode is no longer supported as of Perl v5.25.3. It<br/>-now dies when imported, unless the C&lt;Filter&gt; option is being used.<br/>+L&lt;Perl::OSType&gt; has been upgraded from version 1.009 to 1.010.<br/> <br/> =item *<br/> <br/>-L&lt;encoding::warnings&gt; has been upgraded from version 0.12 to 0.13.<br/>+L&lt;Test::Simple&gt; has been upgraded from version 1.302026 to 1.302045.<br/> <br/>-This module is no longer supported as of Perl v5.25.3. It emits a<br/>-warning to that effect and then does nothing.<br/>+=item *<br/> <br/>-=back<br/>+L&lt;Time::HiRes&gt; has been upgraded from version 1.9734 to 1.9739.<br/> <br/>-=head2 Removed Modules and Pragmata<br/>+=item *<br/> <br/>-=over 4<br/>+L&lt;Unicode::UCD&gt; has been upgraded from version 0.65 to 0.66.<br/> <br/> =item *<br/> <br/>-XXX<br/>-<br/>-=back<br/>+L&lt;version&gt; has been upgraded from version 0.9916 to 0.9917.<br/> <br/>-=head1 Documentation<br/>+=item *<br/> <br/>-XXX Changes to files in F&lt;pod/&gt; go here. Consider grouping entries by<br/>-file and be sure to link to the appropriate page, e.g. L&lt;perlfunc&gt;.<br/>+L&lt;warnings&gt; has been upgraded from version 1.36 to 1.37.<br/> <br/>-=head2 New Documentation<br/>+=item *<br/> <br/>-XXX Changes which create B&lt;new&gt; files in F&lt;pod/&gt; go here.<br/>+L&lt;XSLoader&gt; has been upgraded from version 0.21 to 0.22, fixing a security hole<br/>+in which binary files could be loaded from a path outside of<br/>+L&lt;C&lt;@INC&gt;|perlvar/@INC&gt;.<br/> <br/>-=head3 L&lt;XXX&gt;<br/>+=back<br/> <br/>-XXX Description of the purpose of the new file here<br/>+=head1 Documentation<br/> <br/> =head2 Changes to Existing Documentation<br/> <br/>-XXX Changes which significantly change existing files in F&lt;pod/&gt; go here.<br/>-However, any changes to F&lt;pod/perldiag.pod&gt; should go in the L&lt;/Diagnostics&gt;<br/>-section.<br/>-<br/>-=head3 L&lt;XXX&gt;<br/>+=head3 L&lt;perldata&gt; and L&lt;perltie&gt;<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-XXX Description of the change here<br/>+Updated documentation of C&lt;scalar(%hash)&gt;. See L&lt;/scalar(%hash) return<br/>+signature changed&gt; above.<br/> <br/> =back<br/> <br/>-=head1 Diagnostics<br/>-<br/>-The following additions or changes have been made to diagnostic output,<br/>-including warnings and fatal error messages. For the complete list of<br/>-diagnostic messages, see L&lt;perldiag&gt;.<br/>-<br/>-XXX New or changed warnings emitted by the core&#39;s C&lt;C&gt; code go here. Also<br/>-include any changes in L&lt;perldiag&gt; that reconcile it to the C&lt;C&gt; code.<br/>-<br/>-=head2 New Diagnostics<br/>-<br/>-XXX Newly added diagnostic messages go under here, separated into New Errors<br/>-and New Warnings<br/>-<br/>-=head3 New Errors<br/>+=head3 L&lt;perlexperiment&gt; and L&lt;perlref&gt;<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-XXX L&lt;message|perldiag/&quot;message&quot;&gt;<br/>+Documented new feature: See L&lt;/Declaring a reference to a variable&gt; above.<br/> <br/> =back<br/> <br/>-=head3 New Warnings<br/>+=head3 L&lt;perlfunc&gt;<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-XXX L&lt;message|perldiag/&quot;message&quot;&gt;<br/>+Clarified documentation of L&lt;C&lt;seek()&gt;|perlfunc/seek&gt;,<br/>+L&lt;C&lt;tell()&gt;|perlfunc/tell&gt; and L&lt;C&lt;sysseek()&gt;|perlfunc/sysseek&gt;.<br/>+L&lt;[perl #128607]|https://rt.perl.org/Public/Bug/Display.html?id=128607&gt;<br/> <br/>-=back<br/>+=item *<br/> <br/>-=head2 Changes to Existing Diagnostics<br/>+Removed obsolete documentation of L&lt;C&lt;study()&gt;|perlfunc/study&gt;.<br/>+<br/>+=back<br/> <br/>-XXX Changes (i.e. rewording) of diagnostic messages go here<br/>+=head3 L&lt;perlunicode&gt;<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-XXX Describe change here<br/>+Documented change to C&lt;\p{I&lt;script&gt;}&gt; to now use the improved Script_Extensions<br/>+property. See L&lt;/Use of \p{script} uses the improved Script_Extensions<br/>+property&gt; above.<br/> <br/>-=back<br/>-<br/>-=head1 Utility Changes<br/>+=item *<br/> <br/>-XXX Changes to installed programs such as F&lt;perlbug&gt; and F&lt;xsubpp&gt; go here.<br/>-Most of these are built within the directory F&lt;utils&gt;.<br/>+Updated the text to correspond with changes in Unicode UTS#18, concerning<br/>+regular expressions, and Perl compatibility with what it says.<br/> <br/>-[ List utility changes as a =head2 entry for each utility and =item<br/>-entries for each change<br/>-Use L&lt;XXX&gt; with program names to get proper documentation linking. ]<br/>+=back<br/> <br/>-=head2 L&lt;XXX&gt;<br/>+=head3 L&lt;perlvar&gt;<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-XXX<br/>+Removed obsolete documentation of C&lt;${^ENCODING}&gt;. See L&lt;/${^ENCODING} has<br/>+been removed&gt; above.<br/> <br/> =back<br/> <br/>-=head1 Configuration and Compilation<br/>+=head1 Diagnostics<br/> <br/>-XXX Changes to F&lt;Configure&gt;, F&lt;installperl&gt;, F&lt;installman&gt;, and analogous tools<br/>-go here. Any other changes to the Perl build process should be listed here.<br/>-However, any platform-specific changes should be listed in the<br/>-L&lt;/Platform Support&gt; section, instead.<br/>+The following additions or changes have been made to diagnostic output,<br/>+including warnings and fatal error messages. For the complete list of<br/>+diagnostic messages, see L&lt;perldiag&gt;.<br/>+<br/>+=head2 New Diagnostics<br/> <br/>-[ List changes as a =item entry ].<br/>+=head3 New Errors<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-XXX<br/>+L&lt;The experimental declared_refs feature is not enabled|perldiag/&quot;The experimental declared_refs feature is not enabled&quot;&gt;<br/> <br/>-=back<br/>+(F) To declare references to variables, as in C&lt;my \%x&gt;, you must first enable<br/>+the feature:<br/> <br/>-=head1 Testing<br/>+ no warnings &quot;experimental::declared_refs&quot;;<br/>+ use feature &quot;declared_refs&quot;;<br/> <br/>-XXX Any significant changes to the testing of a freshly built perl should be<br/>-listed here. Changes which create B&lt;new&gt; files in F&lt;t/&gt; go here as do any<br/>-large changes to the testing harness (e.g. when parallel testing was added).<br/>-Changes to existing files in F&lt;t/&gt; aren&#39;t worth summarizing, although the bugs<br/>-that they represent may be covered elsewhere.<br/>+=back<br/> <br/>-[ List each test improvement as a =item entry ]<br/>+=head3 New Warnings<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-XXX<br/>-<br/>-=back<br/>+L&lt;Declaring references is experimental|perldiag/&quot;Declaring references is experimental&quot;&gt;<br/> <br/>-=head1 Platform Support<br/>+(S experimental::declared_refs) This warning is emitted if you use a reference<br/>+constructor on the right-hand side of C&lt;my()&gt;, C&lt;state()&gt;, C&lt;our()&gt;, or<br/>+C&lt;local()&gt;. Simply suppress the warning if you want to use the feature, but<br/>+know that in doing so you are taking the risk of using an experimental feature<br/>+which may change or be removed in a future Perl version:<br/> <br/>-XXX Any changes to platform support should be listed in the sections below.<br/>+ no warnings &quot;experimental::declared_refs&quot;;<br/>**** PATCH TRUNCATED AT 2000 LINES -- 229 NOT SHOWN ****<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47682.html Fri, 22 Jul 2016 02:30:57 +0000 [perl.git] branch maint-votes, updated.dbd85777f6c1dc6a3a88e21c72a68aff24ce1b65 by Steve Hay via perl5-changes In perl.git, the branch maint-votes has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/dbd85777f6c1dc6a3a88e21c72a68aff24ce1b65?hp=673a7f32967c9ccd0cfd406463f4d8b63043587a&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit dbd85777f6c1dc6a3a88e21c72a68aff24ce1b65<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Thu Jul 21 22:32:36 2016 +0100<br/><br/> Vote for davem&#39;s PERL_GLOBAL_STRUCT fix<br/> <br/> as promised in http://www.nntp.perl.org/group/perl.perl5.porters/2016/07/msg238061.html<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> votes-5.24.xml | 1 +<br/> 1 file changed, 1 insertion(+)<br/><br/>diff --git a/votes-5.24.xml b/votes-5.24.xml<br/>index f006f27..86f4238 100644<br/>--- a/votes-5.24.xml<br/>+++ b/votes-5.24.xml<br/>@@ -74,6 +74,7 @@ Perhaps just the removal of SETERRNO() from this.<br/> <br/> &lt;commit votes=&quot;jhi sprout&quot; id=&quot;d06c8f869698f7905df974ab8bafb703a5438fc1&quot; desc=&quot;[perl #128538] [PATCH] Fix copy/paste error in Configure&quot;/&gt;<br/> &lt;commit votes=&quot;jhi sprout&quot; id=&quot;a2c061044c1e87ae8e777d6134191760235db0de&quot; desc=&quot;make Configure abort if both -Duselongdouble and -Dusequadmath are requested&quot;/&gt;<br/>+&lt;commit votes=&quot;steveh&quot; id=&quot;ab0fe36e478f78846a1944a3e22e9cd26260c042&quot; desc=&quot;fix build on clang plus -DPERL_GLOBAL_STRUCT&quot;/&gt;<br/> <br/> &lt;/div&gt;<br/> <br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47681.html Fri, 22 Jul 2016 02:30:54 +0000 [perl.git] branch maint-votes, updated.673a7f32967c9ccd0cfd406463f4d8b63043587a by Steve Hay via perl5-changes In perl.git, the branch maint-votes has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/673a7f32967c9ccd0cfd406463f4d8b63043587a?hp=bd1896c532a7cf6e056e4b92f5395d16d1567edc&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 673a7f32967c9ccd0cfd406463f4d8b63043587a<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Thu Jul 21 22:27:11 2016 +0100<br/><br/> The perl #128528 fixes are now backported (with my vote being the third)<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> votes-5.22.xml | 4 ----<br/> votes-5.24.xml | 4 ----<br/> 2 files changed, 8 deletions(-)<br/><br/>diff --git a/votes-5.22.xml b/votes-5.22.xml<br/>index 03a9e75..791b368 100644<br/>--- a/votes-5.22.xml<br/>+++ b/votes-5.22.xml<br/>@@ -25,10 +25,6 @@ The same criteria apply to code in dual-life modules as to core code.)<br/> <br/> &lt;div&gt;&lt;h3&gt;Security Fixes&lt;/h3&gt;<br/> <br/>-When these two are merged, the version needs to be bumped to 0.20_01 (change the version in the pod, too):<br/>-&lt;commit votes=&quot;sprout jhi&quot; id=&quot;08e3451d7b3b714ad63a27f1b9c2a23ee75d15ee&quot; ticket=&quot;128528&quot; desc=&quot;Don&acirc;&#128;&#153;t let XSLoader load relative paths&quot;/&gt;<br/>-&lt;commit votes=&quot;sprout jhi&quot; id=&quot;a651dcdf6a9151150dcf0fb6b18849d3e39b0811&quot; ticket=&quot;128528&quot; desc=&quot;Fix XSLoader to recognize drive letters&quot;/&gt;<br/>-<br/> &lt;/div&gt;<br/> <br/> &lt;div&gt;&lt;h3&gt;Crash / Assertion / Memory Corruption Fixes&lt;/h3&gt;<br/>diff --git a/votes-5.24.xml b/votes-5.24.xml<br/>index 2460b8f..f006f27 100644<br/>--- a/votes-5.24.xml<br/>+++ b/votes-5.24.xml<br/>@@ -42,10 +42,6 @@ The same criteria apply to code in dual-life modules as to core code.)<br/> <br/> &lt;div&gt;&lt;h3&gt;Security Fixes&lt;/h3&gt;<br/> <br/>-&lt;commit votes=&quot;sprout jhi&quot; id=&quot;08e3451d7b3b714ad63a27f1b9c2a23ee75d15ee&quot; ticket=&quot;128528&quot; desc=&quot;Don&acirc;&#128;&#153;t let XSLoader load relative paths&quot;/&gt;<br/>-&lt;commit votes=&quot;sprout jhi&quot; id=&quot;a651dcdf6a9151150dcf0fb6b18849d3e39b0811&quot; ticket=&quot;128528&quot; desc=&quot;Fix XSLoader to recognize drive letters&quot;/&gt;<br/>-&lt;commit votes=&quot;sprout&quot; id=&quot;ae635bbffa4769051671b9832a7472b9d977c198&quot; ticket=&quot;128528&quot; desc=&quot;Synchronize blead with CPAN XSLoader 0.22&quot;/&gt;<br/>-<br/> &lt;/div&gt;<br/> <br/> &lt;div&gt;&lt;h3&gt;Crash / Assertion / Memory Corruption Fixes&lt;/h3&gt;<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47680.html Fri, 22 Jul 2016 02:30:54 +0000 [perl.git] branch maint-5.24, updated. v5.24.1-RC1-13-g46b7ac4 by Steve Hay via perl5-changes In perl.git, the branch maint-5.24 has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/46b7ac49cca5dd8c4b20bdc00d54042dfa9e069a?hp=1c7fe5908115266bbe4cd24b5fba94b74dbe7a98&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 46b7ac49cca5dd8c4b20bdc00d54042dfa9e069a<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Thu Jul 21 22:58:20 2016 +0100<br/><br/> Update Module-CoreList for 5.25.3<br/> <br/> (manually cherry picked from commit 42a3cde12f0f45ddd039878a6424efba18e480c8)<br/><br/>M dist/Module-CoreList/lib/Module/CoreList.pm<br/><br/>commit f44b80de2c2c8e7ef76a7a4242c1a94d23212aa5<br/>Author: Matthew Horsfall &lt;wolfsage@gmail.com&gt;<br/>Date: Thu Jul 21 22:55:54 2016 +0100<br/><br/> Bump Module::CoreList version for 5.25.3<br/> <br/> (manually cherry picked from commit c338e234d57f13141c5e04b6361ed8cc9e14b42a)<br/><br/>M dist/Module-CoreList/Changes<br/>M dist/Module-CoreList/lib/Module/CoreList.pm<br/>M dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/><br/>commit 9ed0f66f37c9fdc64192b7c13ef6a6332003d0d9<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 17:38:35 2016 +0100<br/><br/> Add epigraph for 5.25.3<br/> <br/> (cherry picked from commit 4d3fd69973bfa6d2632d40f12b52aaeb6c3f4d03)<br/><br/>M Porting/epigraphs.pod<br/><br/>commit 425c0a0fc578aabdf626bf5d562e2293385b2cd4<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 15:27:02 2016 +0100<br/><br/> 5.25.3 today<br/> <br/> (cherry picked from commit c137098022dcef5e7ea32608e5299276efea6457)<br/><br/>M pod/perlhist.pod<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> Porting/epigraphs.pod | 32 ++++++<br/> dist/Module-CoreList/Changes | 3 +<br/> dist/Module-CoreList/lib/Module/CoreList.pm | 118 ++++++++++++++++++++++<br/> dist/Module-CoreList/lib/Module/CoreList/Utils.pm | 7 ++<br/> pod/perlhist.pod | 1 +<br/> 5 files changed, 161 insertions(+)<br/><br/>diff --git a/Porting/epigraphs.pod b/Porting/epigraphs.pod<br/>index beac792..052fec4 100644<br/>--- a/Porting/epigraphs.pod<br/>+++ b/Porting/epigraphs.pod<br/>@@ -17,6 +17,38 @@ Consult your favorite dictionary for details.<br/> <br/> =head1 EPIGRAPHS<br/> <br/>+=head2 v5.25.3 - Edward Lear, ed. Vivien Noakes, &quot;The Complete Nonsense and Other Verse&quot;: The Dong with a Luminous Nose<br/>+<br/>+L&lt;Announced on 2016-07-20 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2016/07/msg238158.html&gt;<br/>+<br/>+ When awful darkness and silence reign<br/>+ Over the great Gromboolian plain,<br/>+ Through the long, long wintry nights; -<br/>+ When the angry breakers roar<br/>+ As they beat on the rocky shore; -<br/>+ When Storm-clouds brood on the towering heights<br/>+ Of the Hills of the Chankly Bore: -<br/>+<br/>+ Then, through the vast and gloomy dark,<br/>+ There moves what seems a fiery spark,<br/>+ A lonely spark with silvery rays<br/>+ Piercing the coal-black night, -<br/>+ A Meteor strange and bright: -<br/>+ Hither and thither the vision strays,<br/>+ A single lurid light.<br/>+<br/>+ Slowly it wanders, - pauses, - creeps, -<br/>+ Anon it sparkles, - flashes and leaps;<br/>+ And ever as onward it gleaming goes<br/>+ A light on the Bong-tree stems it throws.<br/>+ And those who watch at that midnight hour<br/>+ From Hall or Terrace, or lofty Tower,<br/>+ Cry, as the wild light passes along, -<br/>+ &#39;The Dong! - the Dong!<br/>+ The wandering Dong through the forest goes!<br/>+ The Dong! the Dong!<br/>+ The Dong with a luminous Nose!&#39;<br/>+<br/> =head2 v5.25.2 - Dan le Sac Vs Scroobius Pip &quot;Waiting For The Beat To Kick In&quot;<br/> <br/> L&lt;Announced on 2016-06-20 by Matthew Horsfall|http://www.nntp.perl.org/group/perl.perl5.porters/2016/06/msg237274.html&gt;<br/>diff --git a/dist/Module-CoreList/Changes b/dist/Module-CoreList/Changes<br/>index 9fad1b4..7322306 100644<br/>--- a/dist/Module-CoreList/Changes<br/>+++ b/dist/Module-CoreList/Changes<br/>@@ -1,6 +1,9 @@<br/> 5.20160730_24<br/> - Updated for v5.24.1<br/> <br/>+5.20160720<br/>+ - Updated for v5.25.3<br/>+<br/> 5.20160620<br/> - Updated for v5.25.2<br/> <br/>diff --git a/dist/Module-CoreList/lib/Module/CoreList.pm b/dist/Module-CoreList/lib/Module/CoreList.pm<br/>index 4bc2aaf..f780d85 100644<br/>--- a/dist/Module-CoreList/lib/Module/CoreList.pm<br/>+++ b/dist/Module-CoreList/lib/Module/CoreList.pm<br/>@@ -296,6 +296,7 @@ sub changes_between {<br/> 5.025000 =&gt; &#39;2016-05-09&#39;,<br/> 5.025001 =&gt; &#39;2016-05-20&#39;,<br/> 5.025002 =&gt; &#39;2016-06-20&#39;,<br/>+ 5.025003 =&gt; &#39;2016-07-20&#39;,<br/> 5.024001 =&gt; &#39;????-??-??&#39;,<br/> );<br/> <br/>@@ -12703,6 +12704,116 @@ for my $version ( sort { $a &lt;=&gt; $b } keys %released ) {<br/> removed =&gt; {<br/> }<br/> },<br/>+ 5.025003 =&gt; {<br/>+ delta_from =&gt; 5.025002,<br/>+ changed =&gt; {<br/>+ &#39;B::Op_private&#39; =&gt; &#39;5.025003&#39;,<br/>+ &#39;Config&#39; =&gt; &#39;5.025003&#39;,<br/>+ &#39;Data::Dumper&#39; =&gt; &#39;2.161&#39;,<br/>+ &#39;Devel::PPPort&#39; =&gt; &#39;3.35&#39;,<br/>+ &#39;Encode&#39; =&gt; &#39;2.84&#39;,<br/>+ &#39;Encode::MIME::Header&#39; =&gt; &#39;2.23&#39;,<br/>+ &#39;Encode::MIME::Header::ISO_2022_JP&#39;=&gt; &#39;1.07&#39;,<br/>+ &#39;ExtUtils::ParseXS&#39; =&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::ParseXS::Constants&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::ParseXS::CountLines&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::ParseXS::Eval&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::ParseXS::Utilities&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps&#39; =&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps::Cmd&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps::InputMap&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps::OutputMap&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps::Type&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;Hash::Util&#39; =&gt; &#39;0.20&#39;,<br/>+ &#39;Math::BigFloat&#39; =&gt; &#39;1.999726&#39;,<br/>+ &#39;Math::BigFloat::Trace&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;Math::BigInt&#39; =&gt; &#39;1.999726&#39;,<br/>+ &#39;Math::BigInt::Calc&#39; =&gt; &#39;1.999726&#39;,<br/>+ &#39;Math::BigInt::CalcEmu&#39; =&gt; &#39;1.999726&#39;,<br/>+ &#39;Math::BigInt::FastCalc&#39;=&gt; &#39;0.42&#39;,<br/>+ &#39;Math::BigInt::Trace&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;Math::BigRat&#39; =&gt; &#39;0.260804&#39;,<br/>+ &#39;Module::CoreList&#39; =&gt; &#39;5.20160720&#39;,<br/>+ &#39;Module::CoreList::TieHashDelta&#39;=&gt; &#39;5.20160720&#39;,<br/>+ &#39;Module::CoreList::Utils&#39;=&gt; &#39;5.20160720&#39;,<br/>+ &#39;Net::Cmd&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::Config&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::Domain&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::A&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::E&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::I&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::L&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::dataconn&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::NNTP&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::Netrc&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::POP3&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::SMTP&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::Time&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Parse::CPAN::Meta&#39; =&gt; &#39;1.4422&#39;,<br/>+ &#39;Perl::OSType&#39; =&gt; &#39;1.010&#39;,<br/>+ &#39;Test2&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API::Breakage&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API::Context&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API::Instance&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API::Stack&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Bail&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Diag&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Exception&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Generic&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Info&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Note&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Ok&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Plan&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Skip&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Subtest&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Waiting&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Formatter&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Formatter::TAP&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Hub&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Hub::Interceptor&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Hub::Interceptor::Terminator&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Hub::Subtest&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::IPC&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::IPC::Driver&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::IPC::Driver::Files&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Util&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Util::ExternalMeta&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Util::HashBase&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Util::Trace&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::Formatter&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::Module&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::Tester&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::Tester::Color&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::TodoDiag&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::More&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Simple&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Tester&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Tester::Capture&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Tester::CaptureRunner&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Tester::Delegate&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::use::ok&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Time::HiRes&#39; =&gt; &#39;1.9739&#39;,<br/>+ &#39;Unicode&#39; =&gt; &#39;9.0.0&#39;,<br/>+ &#39;Unicode::UCD&#39; =&gt; &#39;0.66&#39;,<br/>+ &#39;XSLoader&#39; =&gt; &#39;0.22&#39;,<br/>+ &#39;bigint&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;bignum&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;bigrat&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;encoding&#39; =&gt; &#39;2.17_01&#39;,<br/>+ &#39;encoding::warnings&#39; =&gt; &#39;0.13&#39;,<br/>+ &#39;feature&#39; =&gt; &#39;1.45&#39;,<br/>+ &#39;ok&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;version&#39; =&gt; &#39;0.9917&#39;,<br/>+ &#39;version::regex&#39; =&gt; &#39;0.9917&#39;,<br/>+ &#39;warnings&#39; =&gt; &#39;1.37&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/> 5.024001 =&gt; {<br/> delta_from =&gt; 5.024000,<br/> changed =&gt; {<br/>@@ -13392,6 +13503,13 @@ for my $version (sort { $a &lt;=&gt; $b } keys %delta) {<br/> removed =&gt; {<br/> }<br/> },<br/>+ 5.025003 =&gt; {<br/>+ delta_from =&gt; 5.025002,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/> 5.024001 =&gt; {<br/> delta_from =&gt; 5.024000,<br/> changed =&gt; {<br/>diff --git a/dist/Module-CoreList/lib/Module/CoreList/Utils.pm b/dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/>index 6c4d81b..7f2eae0 100644<br/>--- a/dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/>+++ b/dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/>@@ -1171,6 +1171,13 @@ my %delta = (<br/> removed =&gt; {<br/> }<br/> },<br/>+ 5.025003 =&gt; {<br/>+ delta_from =&gt; 5.025002,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/> 5.024001 =&gt; {<br/> delta_from =&gt; 5.024000,<br/> changed =&gt; {<br/>diff --git a/pod/perlhist.pod b/pod/perlhist.pod<br/>index 013acb5..e0a5289 100644<br/>--- a/pod/perlhist.pod<br/>+++ b/pod/perlhist.pod<br/>@@ -591,6 +591,7 @@ the strings?).<br/> Ricardo 5.25.0 2016-May-09 The 5.25 development track<br/> Sawyer X 5.25.1 2016-May-20<br/> Matthew 5.25.2 2016-Jun-20<br/>+ Steve 5.25.3 2016-Jul-20<br/> <br/> =head2 SELECTED RELEASE SIZES<br/> <br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47679.html Fri, 22 Jul 2016 02:30:53 +0000 [perl.git] branch maint-5.24, updated. v5.24.1-RC1-9-g1c7fe59 by Steve Hay via perl5-changes In perl.git, the branch maint-5.24 has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/1c7fe5908115266bbe4cd24b5fba94b74dbe7a98?hp=7682ed29a1a27848f952c4d878fd57f25b603d57&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 1c7fe5908115266bbe4cd24b5fba94b74dbe7a98<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Thu Jul 21 22:20:30 2016 +0100<br/><br/> Add rt.perl.org link for XSLoader fix<br/><br/>M pod/perldelta.pod<br/><br/>commit 10cde2473b2cc5e4a7cac5d318251e1b51eaa967<br/>Author: Father Chrysostomos &lt;sprout@cpan.org&gt;<br/>Date: Thu Jul 21 21:46:07 2016 +0100<br/><br/> perldelta for previous four commits<br/> <br/> (manually cherry picked from commit 8da8adf3c3d9a4b3a0b4fde347690723a404a523)<br/><br/>M pod/perldelta.pod<br/><br/>commit 9fdff28ad711d4dbe9146664703cecb84aa7a4c6<br/>Author: S&Atilde;&copy;bastien Aperghis-Tramoni &lt;sebastien@aperghis.net&gt;<br/>Date: Thu Jul 21 21:35:40 2016 +0100<br/><br/> $VERSION++ for XSLoader in POD<br/> <br/> (manually cherry picked from commit ae635bbffa4769051671b9832a7472b9d977c198)<br/><br/>M dist/XSLoader/XSLoader_pm.PL<br/><br/>commit a4ad7b3061fb758d52d468e01d6f6ee905dc8689<br/>Author: Father Chrysostomos &lt;sprout@cpan.org&gt;<br/>Date: Sat Jul 2 22:57:46 2016 -0700<br/><br/> Increase $XSLoader::VERSION to 0.22<br/> <br/> (cherry picked from commit 5993d6620f29d22b0a72701f4f0fdacff3d25460)<br/><br/>M dist/XSLoader/XSLoader_pm.PL<br/><br/>commit 8dc3e612fd2ec9ab8b3cd3973f54d82ceb3b6f3b<br/>Author: Father Chrysostomos &lt;sprout@cpan.org&gt;<br/>Date: Mon Jul 4 08:48:57 2016 -0700<br/><br/> Fix XSLoader to recognize drive letters<br/> <br/> Commit 08e3451d made XSLoader confirm that the file path it got<br/> from (caller)[2] was in @INC if it looked like a relative path.<br/> Not taking drive letters into account, it made that @INC search<br/> mandatory on Windows and some other systems. It still worked, but<br/> was slightly slower.<br/> <br/> (cherry picked from commit a651dcdf6a9151150dcf0fb6b18849d3e39b0811)<br/><br/>M dist/XSLoader/XSLoader_pm.PL<br/><br/>commit 7099cb3d4b19649244b3ff4171da683abbd5e2bd<br/>Author: Father Chrysostomos &lt;sprout@cpan.org&gt;<br/>Date: Sat Jul 2 22:56:51 2016 -0700<br/><br/> Don&acirc;&#128;&#153;t let XSLoader load relative paths<br/> <br/> [rt.cpan.org #115808]<br/> <br/> The logic in XSLoader for determining the library goes like this:<br/> <br/> my $c = () = split(/::/,$caller,-1);<br/> $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&amp;D basename<br/> my $file = &quot;$modlibname/auto/$modpname/$modfname.bundle&quot;;<br/> <br/> (That last line varies by platform.)<br/> <br/> $caller is the calling package. $modlibname is the calling file. It<br/> removes as many path segments from $modlibname as there are segments<br/> in $caller. So if you have Foo/Bar/XS.pm calling XSLoader from the<br/> Foo::Bar package, the $modlibname will end up containing the path in<br/> @INC where XS.pm was found, followed by &quot;/Foo&quot;. Usually the fallback<br/> to Dynaloader::bootstrap_inherit, which does an @INC search, makes<br/> things Just Work.<br/> <br/> But if our hypothetical Foo/Bar/XS.pm actually calls<br/> XSLoader::load from inside a string eval, then path ends up being<br/> &quot;(eval 1)/auto/Foo/Bar/Bar.bundle&quot;.<br/> <br/> So if someone creates a directory named &acirc;&#128;&#152;(eval 1)&acirc;&#128;&#153; with a naughty<br/> binary file in it, it will be loaded if a script using Foo::Bar is run<br/> in the parent directory.<br/> <br/> This commit makes XSLoader fall back to Dynaloader&acirc;&#128;&#153;s @INC search if<br/> the calling file has a relative path that is not found in @INC.<br/> <br/> (cherry picked from commit 08e3451d7b3b714ad63a27f1b9c2a23ee75d15ee)<br/><br/>M dist/XSLoader/XSLoader_pm.PL<br/>M dist/XSLoader/t/XSLoader.t<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> dist/XSLoader/XSLoader_pm.PL | 41 +++++++++++++++++++++++++++++++++++++++--<br/> dist/XSLoader/t/XSLoader.t | 27 ++++++++++++++++++++++++++-<br/> pod/perldelta.pod | 7 +++++++<br/> 3 files changed, 72 insertions(+), 3 deletions(-)<br/><br/>diff --git a/dist/XSLoader/XSLoader_pm.PL b/dist/XSLoader/XSLoader_pm.PL<br/>index 8a8852e..09f9d4b 100644<br/>--- a/dist/XSLoader/XSLoader_pm.PL<br/>+++ b/dist/XSLoader/XSLoader_pm.PL<br/>@@ -11,7 +11,7 @@ print OUT &lt;&lt;&#39;EOT&#39;;<br/> <br/> package XSLoader;<br/> <br/>-$VERSION = &quot;0.21&quot;;<br/>+$VERSION = &quot;0.22&quot;;<br/> <br/> #use strict;<br/> <br/>@@ -93,6 +93,43 @@ print OUT &lt;&lt;&#39;EOT&#39;;<br/> $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&amp;D basename<br/> EOT<br/> <br/>+my $to_print = &lt;&lt;&#39;EOT&#39;;<br/>+ # Does this look like a relative path?<br/>+ if ($modlibname !~ m{regexp}) {<br/>+EOT<br/>+<br/>+$to_print =~ s~regexp~<br/>+ $^O eq &#39;MSWin32&#39; || $^O eq &#39;os2&#39; || $^O eq &#39;cygwin&#39; || $^O eq &#39;amigaos&#39;<br/>+ ? &#39;^(?:[A-Za-z]:)?[\\\/]&#39; # Optional drive letter<br/>+ : &#39;^/&#39;<br/>+~e;<br/>+<br/>+print OUT $to_print, &lt;&lt;&#39;EOT&#39;;<br/>+ # Someone may have a #line directive that changes the file name, or<br/>+ # may be calling XSLoader::load from inside a string eval. We cer-<br/>+ # tainly do not want to go loading some code that is not in @INC,<br/>+ # as it could be untrusted.<br/>+ #<br/>+ # We could just fall back to DynaLoader here, but then the rest of<br/>+ # this function would go untested in the perl core, since all @INC<br/>+ # paths are relative during testing. That would be a time bomb<br/>+ # waiting to happen, since bugs could be introduced into the code.<br/>+ #<br/>+ # So look through @INC to see if $modlibname is in it. A rela-<br/>+ # tive $modlibname is not a common occurrence, so this block is<br/>+ # not hot code.<br/>+ FOUND: {<br/>+ for (@INC) {<br/>+ if ($_ eq $modlibname) {<br/>+ last FOUND;<br/>+ }<br/>+ }<br/>+ # Not found. Fall back to DynaLoader.<br/>+ goto \&amp;XSLoader::bootstrap_inherit;<br/>+ }<br/>+ }<br/>+EOT<br/>+<br/> my $dl_dlext = quotemeta($Config::Config{&#39;dlext&#39;});<br/> <br/> print OUT &lt;&lt;&quot;EOT&quot;;<br/>@@ -218,7 +255,7 @@ XSLoader - Dynamically load C libraries into Perl code<br/> <br/> =head1 VERSION<br/> <br/>-Version 0.17<br/>+Version 0.22<br/> <br/> =head1 SYNOPSIS<br/> <br/>diff --git a/dist/XSLoader/t/XSLoader.t b/dist/XSLoader/t/XSLoader.t<br/>index 2ff11fe..1e86faa 100644<br/>--- a/dist/XSLoader/t/XSLoader.t<br/>+++ b/dist/XSLoader/t/XSLoader.t<br/>@@ -33,7 +33,7 @@ my %modules = (<br/> &#39;Time::HiRes&#39;=&gt; q| ::can_ok( &#39;Time::HiRes&#39; =&gt; &#39;usleep&#39; ) |, # 5.7.3<br/> );<br/> <br/>-plan tests =&gt; keys(%modules) * 3 + 9;<br/>+plan tests =&gt; keys(%modules) * 3 + 10;<br/> <br/> # Try to load the module<br/> use_ok( &#39;XSLoader&#39; );<br/>@@ -125,3 +125,28 @@ XSLoader::load(&quot;Devel::Peek&quot;);<br/> EOS<br/> or ::diag $@;<br/> }<br/>+<br/>+SKIP: {<br/>+ skip &quot;File::Path not available&quot;, 1<br/>+ unless eval { require File::Path };<br/>+ my $name = &quot;phooo$$&quot;;<br/>+ File::Path::make_path(&quot;$name/auto/Foo/Bar&quot;);<br/>+ open my $fh,<br/>+ &quot;&gt;$name/auto/Foo/Bar/Bar.$Config::Config{&#39;dlext&#39;}&quot;;<br/>+ close $fh;<br/>+ my $fell_back;<br/>+ local *XSLoader::bootstrap_inherit = sub {<br/>+ $fell_back++;<br/>+ # Break out of the calling subs<br/>+ goto the_test;<br/>+ };<br/>+ eval &lt;&lt;END;<br/>+#line 1 $name<br/>+package Foo::Bar;<br/>+XSLoader::load(&quot;Foo::Bar&quot;);<br/>+END<br/>+ the_test:<br/>+ ok $fell_back,<br/>+ &#39;XSLoader will not load relative paths based on (caller)[1]&#39;;<br/>+ File::Path::remove_tree($name);<br/>+}<br/>diff --git a/pod/perldelta.pod b/pod/perldelta.pod<br/>index 90d110e..23646bd 100644<br/>--- a/pod/perldelta.pod<br/>+++ b/pod/perldelta.pod<br/>@@ -48,6 +48,13 @@ L&lt;/Reporting Bugs&gt; below.<br/> <br/> L&lt;Module::CoreList&gt; has been upgraded from version 5.20160506 to 5.20160730_24.<br/> <br/>+=item *<br/>+<br/>+L&lt;XSLoader&gt; has been upgraded from version 0.21 to 0.22, fixing a security hole<br/>+in which binary files could be loaded from a path outside of<br/>+L&lt;C&lt;@INC&gt;|perlvar/@INC&gt;.<br/>+L&lt;[perl #128528]|https://rt.perl.org/Public/Bug/Display.html?id=128528&gt;<br/>+<br/> =back<br/> <br/> =head1 Documentation<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47678.html Fri, 22 Jul 2016 02:30:52 +0000 [perl.git] branch blead, updated. v5.25.3-7-g1e0a641 by Rafael Garcia-Suarez In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/1e0a64115c2048e2aa95c55b284bec003e28b695?hp=f31df0ce8d77152d0d9498bf7f87177e54b824e9&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 1e0a64115c2048e2aa95c55b284bec003e28b695<br/>Author: Rafael Garcia-Suarez &lt;rgs@consttype.org&gt;<br/>Date: Thu Jul 21 15:37:25 2016 +0200<br/><br/> Switch the order of the two backtracking chapters in perlre<br/> <br/> It makes more sense to explain what backtracking is first, and<br/> then introduce the special backtracking control verbs.<br/> <br/> This is just chapter swapping, no other edit has been done.<br/> In other words this diff is basically:<br/> <br/> +=head2 Backtracking<br/> =head2 Special Backtracking Control Verbs<br/> -=head2 Backtracking<br/> =head2 Version 8 Regular Expressions<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> pod/perlre.pod | 414 ++++++++++++++++++++++++++++-----------------------------<br/> 1 file changed, 207 insertions(+), 207 deletions(-)<br/><br/>diff --git a/pod/perlre.pod b/pod/perlre.pod<br/>index 10f9f22..0e3928c 100644<br/>--- a/pod/perlre.pod<br/>+++ b/pod/perlre.pod<br/>@@ -1883,6 +1883,213 @@ See L&lt;perlrecharclass/Extended Bracketed Character Classes&gt;.<br/> <br/> =back<br/> <br/>+=head2 Backtracking<br/>+X&lt;backtrack&gt; X&lt;backtracking&gt;<br/>+<br/>+NOTE: This section presents an abstract approximation of regular<br/>+expression behavior. For a more rigorous (and complicated) view of<br/>+the rules involved in selecting a match among possible alternatives,<br/>+see L&lt;/Combining RE Pieces&gt;.<br/>+<br/>+A fundamental feature of regular expression matching involves the<br/>+notion called I&lt;backtracking&gt;, which is currently used (when needed)<br/>+by all regular non-possessive expression quantifiers, namely C&lt;&quot;*&quot;&gt;, C&lt;&quot;*?&quot;&gt;, C&lt;&quot;+&quot;&gt;,<br/>+C&lt;&quot;+?&quot;&gt;, C&lt;{n,m}&gt;, and C&lt;{n,m}?&gt;. Backtracking is often optimized<br/>+internally, but the general principle outlined here is valid.<br/>+<br/>+For a regular expression to match, the I&lt;entire&gt; regular expression must<br/>+match, not just part of it. So if the beginning of a pattern containing a<br/>+quantifier succeeds in a way that causes later parts in the pattern to<br/>+fail, the matching engine backs up and recalculates the beginning<br/>+part--that&#39;s why it&#39;s called backtracking.<br/>+<br/>+Here is an example of backtracking: Let&#39;s say you want to find the<br/>+word following &quot;foo&quot; in the string &quot;Food is on the foo table.&quot;:<br/>+<br/>+ $_ = &quot;Food is on the foo table.&quot;;<br/>+ if ( /\b(foo)\s+(\w+)/i ) {<br/>+ print &quot;$2 follows $1.\n&quot;;<br/>+ }<br/>+<br/>+When the match runs, the first part of the regular expression (C&lt;\b(foo)&gt;)<br/>+finds a possible match right at the beginning of the string, and loads up<br/>+C&lt;$1&gt; with &quot;Foo&quot;. However, as soon as the matching engine sees that there&#39;s<br/>+no whitespace following the &quot;Foo&quot; that it had saved in C&lt;$1&gt;, it realizes its<br/>+mistake and starts over again one character after where it had the<br/>+tentative match. This time it goes all the way until the next occurrence<br/>+of &quot;foo&quot;. The complete regular expression matches this time, and you get<br/>+the expected output of &quot;table follows foo.&quot;<br/>+<br/>+Sometimes minimal matching can help a lot. Imagine you&#39;d like to match<br/>+everything between &quot;foo&quot; and &quot;bar&quot;. Initially, you write something<br/>+like this:<br/>+<br/>+ $_ = &quot;The food is under the bar in the barn.&quot;;<br/>+ if ( /foo(.*)bar/ ) {<br/>+ print &quot;got &lt;$1&gt;\n&quot;;<br/>+ }<br/>+<br/>+Which perhaps unexpectedly yields:<br/>+<br/>+ got &lt;d is under the bar in the &gt;<br/>+<br/>+That&#39;s because C&lt;.*&gt; was greedy, so you get everything between the<br/>+I&lt;first&gt; &quot;foo&quot; and the I&lt;last&gt; &quot;bar&quot;. Here it&#39;s more effective<br/>+to use minimal matching to make sure you get the text between a &quot;foo&quot;<br/>+and the first &quot;bar&quot; thereafter.<br/>+<br/>+ if ( /foo(.*?)bar/ ) { print &quot;got &lt;$1&gt;\n&quot; }<br/>+ got &lt;d is under the &gt;<br/>+<br/>+Here&#39;s another example. Let&#39;s say you&#39;d like to match a number at the end<br/>+of a string, and you also want to keep the preceding part of the match.<br/>+So you write this:<br/>+<br/>+ $_ = &quot;I have 2 numbers: 53147&quot;;<br/>+ if ( /(.*)(\d*)/ ) { # Wrong!<br/>+ print &quot;Beginning is &lt;$1&gt;, number is &lt;$2&gt;.\n&quot;;<br/>+ }<br/>+<br/>+That won&#39;t work at all, because C&lt;.*&gt; was greedy and gobbled up the<br/>+whole string. As C&lt;\d*&gt; can match on an empty string the complete<br/>+regular expression matched successfully.<br/>+<br/>+ Beginning is &lt;I have 2 numbers: 53147&gt;, number is &lt;&gt;.<br/>+<br/>+Here are some variants, most of which don&#39;t work:<br/>+<br/>+ $_ = &quot;I have 2 numbers: 53147&quot;;<br/>+ @pats = qw{<br/>+ (.*)(\d*)<br/>+ (.*)(\d+)<br/>+ (.*?)(\d*)<br/>+ (.*?)(\d+)<br/>+ (.*)(\d+)$<br/>+ (.*?)(\d+)$<br/>+ (.*)\b(\d+)$<br/>+ (.*\D)(\d+)$<br/>+ };<br/>+<br/>+ for $pat (@pats) {<br/>+ printf &quot;%-12s &quot;, $pat;<br/>+ if ( /$pat/ ) {<br/>+ print &quot;&lt;$1&gt; &lt;$2&gt;\n&quot;;<br/>+ } else {<br/>+ print &quot;FAIL\n&quot;;<br/>+ }<br/>+ }<br/>+<br/>+That will print out:<br/>+<br/>+ (.*)(\d*) &lt;I have 2 numbers: 53147&gt; &lt;&gt;<br/>+ (.*)(\d+) &lt;I have 2 numbers: 5314&gt; &lt;7&gt;<br/>+ (.*?)(\d*) &lt;&gt; &lt;&gt;<br/>+ (.*?)(\d+) &lt;I have &gt; &lt;2&gt;<br/>+ (.*)(\d+)$ &lt;I have 2 numbers: 5314&gt; &lt;7&gt;<br/>+ (.*?)(\d+)$ &lt;I have 2 numbers: &gt; &lt;53147&gt;<br/>+ (.*)\b(\d+)$ &lt;I have 2 numbers: &gt; &lt;53147&gt;<br/>+ (.*\D)(\d+)$ &lt;I have 2 numbers: &gt; &lt;53147&gt;<br/>+<br/>+As you see, this can be a bit tricky. It&#39;s important to realize that a<br/>+regular expression is merely a set of assertions that gives a definition<br/>+of success. There may be 0, 1, or several different ways that the<br/>+definition might succeed against a particular string. And if there are<br/>+multiple ways it might succeed, you need to understand backtracking to<br/>+know which variety of success you will achieve.<br/>+<br/>+When using lookahead assertions and negations, this can all get even<br/>+trickier. Imagine you&#39;d like to find a sequence of non-digits not<br/>+followed by &quot;123&quot;. You might try to write that as<br/>+<br/>+ $_ = &quot;ABC123&quot;;<br/>+ if ( /^\D*(?!123)/ ) { # Wrong!<br/>+ print &quot;Yup, no 123 in $_\n&quot;;<br/>+ }<br/>+<br/>+But that isn&#39;t going to match; at least, not the way you&#39;re hoping. It<br/>+claims that there is no 123 in the string. Here&#39;s a clearer picture of<br/>+why that pattern matches, contrary to popular expectations:<br/>+<br/>+ $x = &#39;ABC123&#39;;<br/>+ $y = &#39;ABC445&#39;;<br/>+<br/>+ print &quot;1: got $1\n&quot; if $x =~ /^(ABC)(?!123)/;<br/>+ print &quot;2: got $1\n&quot; if $y =~ /^(ABC)(?!123)/;<br/>+<br/>+ print &quot;3: got $1\n&quot; if $x =~ /^(\D*)(?!123)/;<br/>+ print &quot;4: got $1\n&quot; if $y =~ /^(\D*)(?!123)/;<br/>+<br/>+This prints<br/>+<br/>+ 2: got ABC<br/>+ 3: got AB<br/>+ 4: got ABC<br/>+<br/>+You might have expected test 3 to fail because it seems to a more<br/>+general purpose version of test 1. The important difference between<br/>+them is that test 3 contains a quantifier (C&lt;\D*&gt;) and so can use<br/>+backtracking, whereas test 1 will not. What&#39;s happening is<br/>+that you&#39;ve asked &quot;Is it true that at the start of C&lt;$x&gt;, following 0 or more<br/>+non-digits, you have something that&#39;s not 123?&quot; If the pattern matcher had<br/>+let C&lt;\D*&gt; expand to &quot;ABC&quot;, this would have caused the whole pattern to<br/>+fail.<br/>+<br/>+The search engine will initially match C&lt;\D*&gt; with &quot;ABC&quot;. Then it will<br/>+try to match C&lt;(?!123)&gt; with &quot;123&quot;, which fails. But because<br/>+a quantifier (C&lt;\D*&gt;) has been used in the regular expression, the<br/>+search engine can backtrack and retry the match differently<br/>+in the hope of matching the complete regular expression.<br/>+<br/>+The pattern really, I&lt;really&gt; wants to succeed, so it uses the<br/>+standard pattern back-off-and-retry and lets C&lt;\D*&gt; expand to just &quot;AB&quot; this<br/>+time. Now there&#39;s indeed something following &quot;AB&quot; that is not<br/>+&quot;123&quot;. It&#39;s &quot;C123&quot;, which suffices.<br/>+<br/>+We can deal with this by using both an assertion and a negation.<br/>+We&#39;ll say that the first part in C&lt;$1&gt; must be followed both by a digit<br/>+and by something that&#39;s not &quot;123&quot;. Remember that the lookaheads<br/>+are zero-width expressions--they only look, but don&#39;t consume any<br/>+of the string in their match. So rewriting this way produces what<br/>+you&#39;d expect; that is, case 5 will fail, but case 6 succeeds:<br/>+<br/>+ print &quot;5: got $1\n&quot; if $x =~ /^(\D*)(?=\d)(?!123)/;<br/>+ print &quot;6: got $1\n&quot; if $y =~ /^(\D*)(?=\d)(?!123)/;<br/>+<br/>+ 6: got ABC<br/>+<br/>+In other words, the two zero-width assertions next to each other work as though<br/>+they&#39;re ANDed together, just as you&#39;d use any built-in assertions: C&lt;/^$/&gt;<br/>+matches only if you&#39;re at the beginning of the line AND the end of the<br/>+line simultaneously. The deeper underlying truth is that juxtaposition in<br/>+regular expressions always means AND, except when you write an explicit OR<br/>+using the vertical bar. C&lt;/ab/&gt; means match &quot;a&quot; AND (then) match &quot;b&quot;,<br/>+although the attempted matches are made at different positions because &quot;a&quot;<br/>+is not a zero-width assertion, but a one-width assertion.<br/>+<br/>+B&lt;WARNING&gt;: Particularly complicated regular expressions can take<br/>+exponential time to solve because of the immense number of possible<br/>+ways they can use backtracking to try for a match. For example, without<br/>+internal optimizations done by the regular expression engine, this will<br/>+take a painfully long time to run:<br/>+<br/>+ &#39;aaaaaaaaaaaa&#39; =~ /((a{0,5}){0,5})*[c]/<br/>+<br/>+And if you used C&lt;&quot;*&quot;&gt;&#39;s in the internal groups instead of limiting them<br/>+to 0 through 5 matches, then it would take forever--or until you ran<br/>+out of stack space. Moreover, these internal optimizations are not<br/>+always applicable. For example, if you put C&lt;{0,5}&gt; instead of C&lt;&quot;*&quot;&gt;<br/>+on the external group, no current optimization is applicable, and the<br/>+match takes a long time to finish.<br/>+<br/>+A powerful tool for optimizing such beasts is what is known as an<br/>+&quot;independent group&quot;,<br/>+which does not backtrack (see L&lt;/C&lt;&lt; (?&gt;pattern) &gt;&gt;&gt;). Note also that<br/>+zero-length lookahead/lookbehind assertions will not backtrack to make<br/>+the tail match, since they are in &quot;logical&quot; context: only<br/>+whether they match is considered relevant. For an example<br/>+where side-effects of lookahead I&lt;might&gt; have influenced the<br/>+following match, see L&lt;/C&lt;&lt; (?&gt;pattern) &gt;&gt;&gt;.<br/>+<br/> =head2 Special Backtracking Control Verbs<br/> <br/> These special patterns are generally of the form C&lt;(*I&lt;VERB&gt;:I&lt;ARG&gt;)&gt;. Unless<br/>@@ -2129,213 +2336,6 @@ C&lt;$REGMARK&gt; after the match completes.<br/> <br/> =back<br/> <br/>-=head2 Backtracking<br/>-X&lt;backtrack&gt; X&lt;backtracking&gt;<br/>-<br/>-NOTE: This section presents an abstract approximation of regular<br/>-expression behavior. For a more rigorous (and complicated) view of<br/>-the rules involved in selecting a match among possible alternatives,<br/>-see L&lt;/Combining RE Pieces&gt;.<br/>-<br/>-A fundamental feature of regular expression matching involves the<br/>-notion called I&lt;backtracking&gt;, which is currently used (when needed)<br/>-by all regular non-possessive expression quantifiers, namely C&lt;&quot;*&quot;&gt;, C&lt;&quot;*?&quot;&gt;, C&lt;&quot;+&quot;&gt;,<br/>-C&lt;&quot;+?&quot;&gt;, C&lt;{n,m}&gt;, and C&lt;{n,m}?&gt;. Backtracking is often optimized<br/>-internally, but the general principle outlined here is valid.<br/>-<br/>-For a regular expression to match, the I&lt;entire&gt; regular expression must<br/>-match, not just part of it. So if the beginning of a pattern containing a<br/>-quantifier succeeds in a way that causes later parts in the pattern to<br/>-fail, the matching engine backs up and recalculates the beginning<br/>-part--that&#39;s why it&#39;s called backtracking.<br/>-<br/>-Here is an example of backtracking: Let&#39;s say you want to find the<br/>-word following &quot;foo&quot; in the string &quot;Food is on the foo table.&quot;:<br/>-<br/>- $_ = &quot;Food is on the foo table.&quot;;<br/>- if ( /\b(foo)\s+(\w+)/i ) {<br/>- print &quot;$2 follows $1.\n&quot;;<br/>- }<br/>-<br/>-When the match runs, the first part of the regular expression (C&lt;\b(foo)&gt;)<br/>-finds a possible match right at the beginning of the string, and loads up<br/>-C&lt;$1&gt; with &quot;Foo&quot;. However, as soon as the matching engine sees that there&#39;s<br/>-no whitespace following the &quot;Foo&quot; that it had saved in C&lt;$1&gt;, it realizes its<br/>-mistake and starts over again one character after where it had the<br/>-tentative match. This time it goes all the way until the next occurrence<br/>-of &quot;foo&quot;. The complete regular expression matches this time, and you get<br/>-the expected output of &quot;table follows foo.&quot;<br/>-<br/>-Sometimes minimal matching can help a lot. Imagine you&#39;d like to match<br/>-everything between &quot;foo&quot; and &quot;bar&quot;. Initially, you write something<br/>-like this:<br/>-<br/>- $_ = &quot;The food is under the bar in the barn.&quot;;<br/>- if ( /foo(.*)bar/ ) {<br/>- print &quot;got &lt;$1&gt;\n&quot;;<br/>- }<br/>-<br/>-Which perhaps unexpectedly yields:<br/>-<br/>- got &lt;d is under the bar in the &gt;<br/>-<br/>-That&#39;s because C&lt;.*&gt; was greedy, so you get everything between the<br/>-I&lt;first&gt; &quot;foo&quot; and the I&lt;last&gt; &quot;bar&quot;. Here it&#39;s more effective<br/>-to use minimal matching to make sure you get the text between a &quot;foo&quot;<br/>-and the first &quot;bar&quot; thereafter.<br/>-<br/>- if ( /foo(.*?)bar/ ) { print &quot;got &lt;$1&gt;\n&quot; }<br/>- got &lt;d is under the &gt;<br/>-<br/>-Here&#39;s another example. Let&#39;s say you&#39;d like to match a number at the end<br/>-of a string, and you also want to keep the preceding part of the match.<br/>-So you write this:<br/>-<br/>- $_ = &quot;I have 2 numbers: 53147&quot;;<br/>- if ( /(.*)(\d*)/ ) { # Wrong!<br/>- print &quot;Beginning is &lt;$1&gt;, number is &lt;$2&gt;.\n&quot;;<br/>- }<br/>-<br/>-That won&#39;t work at all, because C&lt;.*&gt; was greedy and gobbled up the<br/>-whole string. As C&lt;\d*&gt; can match on an empty string the complete<br/>-regular expression matched successfully.<br/>-<br/>- Beginning is &lt;I have 2 numbers: 53147&gt;, number is &lt;&gt;.<br/>-<br/>-Here are some variants, most of which don&#39;t work:<br/>-<br/>- $_ = &quot;I have 2 numbers: 53147&quot;;<br/>- @pats = qw{<br/>- (.*)(\d*)<br/>- (.*)(\d+)<br/>- (.*?)(\d*)<br/>- (.*?)(\d+)<br/>- (.*)(\d+)$<br/>- (.*?)(\d+)$<br/>- (.*)\b(\d+)$<br/>- (.*\D)(\d+)$<br/>- };<br/>-<br/>- for $pat (@pats) {<br/>- printf &quot;%-12s &quot;, $pat;<br/>- if ( /$pat/ ) {<br/>- print &quot;&lt;$1&gt; &lt;$2&gt;\n&quot;;<br/>- } else {<br/>- print &quot;FAIL\n&quot;;<br/>- }<br/>- }<br/>-<br/>-That will print out:<br/>-<br/>- (.*)(\d*) &lt;I have 2 numbers: 53147&gt; &lt;&gt;<br/>- (.*)(\d+) &lt;I have 2 numbers: 5314&gt; &lt;7&gt;<br/>- (.*?)(\d*) &lt;&gt; &lt;&gt;<br/>- (.*?)(\d+) &lt;I have &gt; &lt;2&gt;<br/>- (.*)(\d+)$ &lt;I have 2 numbers: 5314&gt; &lt;7&gt;<br/>- (.*?)(\d+)$ &lt;I have 2 numbers: &gt; &lt;53147&gt;<br/>- (.*)\b(\d+)$ &lt;I have 2 numbers: &gt; &lt;53147&gt;<br/>- (.*\D)(\d+)$ &lt;I have 2 numbers: &gt; &lt;53147&gt;<br/>-<br/>-As you see, this can be a bit tricky. It&#39;s important to realize that a<br/>-regular expression is merely a set of assertions that gives a definition<br/>-of success. There may be 0, 1, or several different ways that the<br/>-definition might succeed against a particular string. And if there are<br/>-multiple ways it might succeed, you need to understand backtracking to<br/>-know which variety of success you will achieve.<br/>-<br/>-When using lookahead assertions and negations, this can all get even<br/>-trickier. Imagine you&#39;d like to find a sequence of non-digits not<br/>-followed by &quot;123&quot;. You might try to write that as<br/>-<br/>- $_ = &quot;ABC123&quot;;<br/>- if ( /^\D*(?!123)/ ) { # Wrong!<br/>- print &quot;Yup, no 123 in $_\n&quot;;<br/>- }<br/>-<br/>-But that isn&#39;t going to match; at least, not the way you&#39;re hoping. It<br/>-claims that there is no 123 in the string. Here&#39;s a clearer picture of<br/>-why that pattern matches, contrary to popular expectations:<br/>-<br/>- $x = &#39;ABC123&#39;;<br/>- $y = &#39;ABC445&#39;;<br/>-<br/>- print &quot;1: got $1\n&quot; if $x =~ /^(ABC)(?!123)/;<br/>- print &quot;2: got $1\n&quot; if $y =~ /^(ABC)(?!123)/;<br/>-<br/>- print &quot;3: got $1\n&quot; if $x =~ /^(\D*)(?!123)/;<br/>- print &quot;4: got $1\n&quot; if $y =~ /^(\D*)(?!123)/;<br/>-<br/>-This prints<br/>-<br/>- 2: got ABC<br/>- 3: got AB<br/>- 4: got ABC<br/>-<br/>-You might have expected test 3 to fail because it seems to a more<br/>-general purpose version of test 1. The important difference between<br/>-them is that test 3 contains a quantifier (C&lt;\D*&gt;) and so can use<br/>-backtracking, whereas test 1 will not. What&#39;s happening is<br/>-that you&#39;ve asked &quot;Is it true that at the start of C&lt;$x&gt;, following 0 or more<br/>-non-digits, you have something that&#39;s not 123?&quot; If the pattern matcher had<br/>-let C&lt;\D*&gt; expand to &quot;ABC&quot;, this would have caused the whole pattern to<br/>-fail.<br/>-<br/>-The search engine will initially match C&lt;\D*&gt; with &quot;ABC&quot;. Then it will<br/>-try to match C&lt;(?!123)&gt; with &quot;123&quot;, which fails. But because<br/>-a quantifier (C&lt;\D*&gt;) has been used in the regular expression, the<br/>-search engine can backtrack and retry the match differently<br/>-in the hope of matching the complete regular expression.<br/>-<br/>-The pattern really, I&lt;really&gt; wants to succeed, so it uses the<br/>-standard pattern back-off-and-retry and lets C&lt;\D*&gt; expand to just &quot;AB&quot; this<br/>-time. Now there&#39;s indeed something following &quot;AB&quot; that is not<br/>-&quot;123&quot;. It&#39;s &quot;C123&quot;, which suffices.<br/>-<br/>-We can deal with this by using both an assertion and a negation.<br/>-We&#39;ll say that the first part in C&lt;$1&gt; must be followed both by a digit<br/>-and by something that&#39;s not &quot;123&quot;. Remember that the lookaheads<br/>-are zero-width expressions--they only look, but don&#39;t consume any<br/>-of the string in their match. So rewriting this way produces what<br/>-you&#39;d expect; that is, case 5 will fail, but case 6 succeeds:<br/>-<br/>- print &quot;5: got $1\n&quot; if $x =~ /^(\D*)(?=\d)(?!123)/;<br/>- print &quot;6: got $1\n&quot; if $y =~ /^(\D*)(?=\d)(?!123)/;<br/>-<br/>- 6: got ABC<br/>-<br/>-In other words, the two zero-width assertions next to each other work as though<br/>-they&#39;re ANDed together, just as you&#39;d use any built-in assertions: C&lt;/^$/&gt;<br/>-matches only if you&#39;re at the beginning of the line AND the end of the<br/>-line simultaneously. The deeper underlying truth is that juxtaposition in<br/>-regular expressions always means AND, except when you write an explicit OR<br/>-using the vertical bar. C&lt;/ab/&gt; means match &quot;a&quot; AND (then) match &quot;b&quot;,<br/>-although the attempted matches are made at different positions because &quot;a&quot;<br/>-is not a zero-width assertion, but a one-width assertion.<br/>-<br/>-B&lt;WARNING&gt;: Particularly complicated regular expressions can take<br/>-exponential time to solve because of the immense number of possible<br/>-ways they can use backtracking to try for a match. For example, without<br/>-internal optimizations done by the regular expression engine, this will<br/>-take a painfully long time to run:<br/>-<br/>- &#39;aaaaaaaaaaaa&#39; =~ /((a{0,5}){0,5})*[c]/<br/>-<br/>-And if you used C&lt;&quot;*&quot;&gt;&#39;s in the internal groups instead of limiting them<br/>-to 0 through 5 matches, then it would take forever--or until you ran<br/>-out of stack space. Moreover, these internal optimizations are not<br/>-always applicable. For example, if you put C&lt;{0,5}&gt; instead of C&lt;&quot;*&quot;&gt;<br/>-on the external group, no current optimization is applicable, and the<br/>-match takes a long time to finish.<br/>-<br/>-A powerful tool for optimizing such beasts is what is known as an<br/>-&quot;independent group&quot;,<br/>-which does not backtrack (see L&lt;/C&lt;&lt; (?&gt;pattern) &gt;&gt;&gt;). Note also that<br/>-zero-length lookahead/lookbehind assertions will not backtrack to make<br/>-the tail match, since they are in &quot;logical&quot; context: only<br/>-whether they match is considered relevant. For an example<br/>-where side-effects of lookahead I&lt;might&gt; have influenced the<br/>-following match, see L&lt;/C&lt;&lt; (?&gt;pattern) &gt;&gt;&gt;.<br/>-<br/> =head2 Version 8 Regular Expressions<br/> X&lt;regular expression, version 8&gt; X&lt;regex, version 8&gt; X&lt;regexp, version 8&gt;<br/> <br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47677.html Fri, 22 Jul 2016 02:30:51 +0000 [perl.git] branch maint-5.22, updated. v5.22.3-RC1-9-g82b4195 by Steve Hay via perl5-changes In perl.git, the branch maint-5.22 has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/82b41950cac22300bf881a79b1912f53ab35e280?hp=69786aa7e563ebda50aadaaead54c0f4e9bd6393&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 82b41950cac22300bf881a79b1912f53ab35e280<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Thu Jul 21 22:20:14 2016 +0100<br/><br/> Add rt.perl.org link for XSLoader fix<br/><br/>M pod/perldelta.pod<br/><br/>commit 73971c96f5b62c5b839e6f04ab7ac1a47d86a5d0<br/>Author: Father Chrysostomos &lt;sprout@cpan.org&gt;<br/>Date: Thu Jul 21 21:44:48 2016 +0100<br/><br/> perldelta for previous three commits<br/> <br/> (manually cherry picked from commit 8da8adf3c3d9a4b3a0b4fde347690723a404a523)<br/><br/>M pod/perldelta.pod<br/><br/>commit 4906af99ca0d3b9c85773a56e2821442dce282f1<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Thu Jul 21 21:30:23 2016 +0100<br/><br/> $VERSION++ for XSLoader<br/> <br/> Manual change in lieu of cherry-picking<br/> 5993d6620f29d22b0a72701f4f0fdacff3d25460 and part of<br/> ae635bbffa4769051671b9832a7472b9d977c198 since maint-5.22 has an older<br/> version of XSLoader.<br/><br/>M dist/XSLoader/XSLoader_pm.PL<br/><br/>commit 0305f4018f7ef3523ba67f7bb072c25abe890067<br/>Author: Father Chrysostomos &lt;sprout@cpan.org&gt;<br/>Date: Mon Jul 4 08:48:57 2016 -0700<br/><br/> Fix XSLoader to recognize drive letters<br/> <br/> Commit 08e3451d made XSLoader confirm that the file path it got<br/> from (caller)[2] was in @INC if it looked like a relative path.<br/> Not taking drive letters into account, it made that @INC search<br/> mandatory on Windows and some other systems. It still worked, but<br/> was slightly slower.<br/> <br/> (cherry picked from commit a651dcdf6a9151150dcf0fb6b18849d3e39b0811)<br/><br/>M dist/XSLoader/XSLoader_pm.PL<br/><br/>commit 7b5003b4f4213ca694d03577b95244f70a5e170c<br/>Author: Father Chrysostomos &lt;sprout@cpan.org&gt;<br/>Date: Sat Jul 2 22:56:51 2016 -0700<br/><br/> Don&acirc;&#128;&#153;t let XSLoader load relative paths<br/> <br/> [rt.cpan.org #115808]<br/> <br/> The logic in XSLoader for determining the library goes like this:<br/> <br/> my $c = () = split(/::/,$caller,-1);<br/> $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&amp;D basename<br/> my $file = &quot;$modlibname/auto/$modpname/$modfname.bundle&quot;;<br/> <br/> (That last line varies by platform.)<br/> <br/> $caller is the calling package. $modlibname is the calling file. It<br/> removes as many path segments from $modlibname as there are segments<br/> in $caller. So if you have Foo/Bar/XS.pm calling XSLoader from the<br/> Foo::Bar package, the $modlibname will end up containing the path in<br/> @INC where XS.pm was found, followed by &quot;/Foo&quot;. Usually the fallback<br/> to Dynaloader::bootstrap_inherit, which does an @INC search, makes<br/> things Just Work.<br/> <br/> But if our hypothetical Foo/Bar/XS.pm actually calls<br/> XSLoader::load from inside a string eval, then path ends up being<br/> &quot;(eval 1)/auto/Foo/Bar/Bar.bundle&quot;.<br/> <br/> So if someone creates a directory named &acirc;&#128;&#152;(eval 1)&acirc;&#128;&#153; with a naughty<br/> binary file in it, it will be loaded if a script using Foo::Bar is run<br/> in the parent directory.<br/> <br/> This commit makes XSLoader fall back to Dynaloader&acirc;&#128;&#153;s @INC search if<br/> the calling file has a relative path that is not found in @INC.<br/> <br/> (cherry picked from commit 08e3451d7b3b714ad63a27f1b9c2a23ee75d15ee)<br/><br/>M dist/XSLoader/XSLoader_pm.PL<br/>M dist/XSLoader/t/XSLoader.t<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> dist/XSLoader/XSLoader_pm.PL | 41 +++++++++++++++++++++++++++++++++++++++--<br/> dist/XSLoader/t/XSLoader.t | 27 ++++++++++++++++++++++++++-<br/> pod/perldelta.pod | 7 +++++++<br/> 3 files changed, 72 insertions(+), 3 deletions(-)<br/><br/>diff --git a/dist/XSLoader/XSLoader_pm.PL b/dist/XSLoader/XSLoader_pm.PL<br/>index 414eaf2..d4ed2c7 100644<br/>--- a/dist/XSLoader/XSLoader_pm.PL<br/>+++ b/dist/XSLoader/XSLoader_pm.PL<br/>@@ -10,7 +10,7 @@ print OUT &lt;&lt;&#39;EOT&#39;;<br/> <br/> package XSLoader;<br/> <br/>-$VERSION = &quot;0.20&quot;;<br/>+$VERSION = &quot;0.20_01&quot;;<br/> <br/> #use strict;<br/> <br/>@@ -92,6 +92,43 @@ print OUT &lt;&lt;&#39;EOT&#39;;<br/> $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&amp;D basename<br/> EOT<br/> <br/>+my $to_print = &lt;&lt;&#39;EOT&#39;;<br/>+ # Does this look like a relative path?<br/>+ if ($modlibname !~ m{regexp}) {<br/>+EOT<br/>+<br/>+$to_print =~ s~regexp~<br/>+ $^O eq &#39;MSWin32&#39; || $^O eq &#39;os2&#39; || $^O eq &#39;cygwin&#39; || $^O eq &#39;amigaos&#39;<br/>+ ? &#39;^(?:[A-Za-z]:)?[\\\/]&#39; # Optional drive letter<br/>+ : &#39;^/&#39;<br/>+~e;<br/>+<br/>+print OUT $to_print, &lt;&lt;&#39;EOT&#39;;<br/>+ # Someone may have a #line directive that changes the file name, or<br/>+ # may be calling XSLoader::load from inside a string eval. We cer-<br/>+ # tainly do not want to go loading some code that is not in @INC,<br/>+ # as it could be untrusted.<br/>+ #<br/>+ # We could just fall back to DynaLoader here, but then the rest of<br/>+ # this function would go untested in the perl core, since all @INC<br/>+ # paths are relative during testing. That would be a time bomb<br/>+ # waiting to happen, since bugs could be introduced into the code.<br/>+ #<br/>+ # So look through @INC to see if $modlibname is in it. A rela-<br/>+ # tive $modlibname is not a common occurrence, so this block is<br/>+ # not hot code.<br/>+ FOUND: {<br/>+ for (@INC) {<br/>+ if ($_ eq $modlibname) {<br/>+ last FOUND;<br/>+ }<br/>+ }<br/>+ # Not found. Fall back to DynaLoader.<br/>+ goto \&amp;XSLoader::bootstrap_inherit;<br/>+ }<br/>+ }<br/>+EOT<br/>+<br/> my $dl_dlext = quotemeta($Config::Config{&#39;dlext&#39;});<br/> <br/> print OUT &lt;&lt;&quot;EOT&quot;;<br/>@@ -208,7 +245,7 @@ XSLoader - Dynamically load C libraries into Perl code<br/> <br/> =head1 VERSION<br/> <br/>-Version 0.17<br/>+Version 0.20_01<br/> <br/> =head1 SYNOPSIS<br/> <br/>diff --git a/dist/XSLoader/t/XSLoader.t b/dist/XSLoader/t/XSLoader.t<br/>index 2ff11fe..1e86faa 100644<br/>--- a/dist/XSLoader/t/XSLoader.t<br/>+++ b/dist/XSLoader/t/XSLoader.t<br/>@@ -33,7 +33,7 @@ my %modules = (<br/> &#39;Time::HiRes&#39;=&gt; q| ::can_ok( &#39;Time::HiRes&#39; =&gt; &#39;usleep&#39; ) |, # 5.7.3<br/> );<br/> <br/>-plan tests =&gt; keys(%modules) * 3 + 9;<br/>+plan tests =&gt; keys(%modules) * 3 + 10;<br/> <br/> # Try to load the module<br/> use_ok( &#39;XSLoader&#39; );<br/>@@ -125,3 +125,28 @@ XSLoader::load(&quot;Devel::Peek&quot;);<br/> EOS<br/> or ::diag $@;<br/> }<br/>+<br/>+SKIP: {<br/>+ skip &quot;File::Path not available&quot;, 1<br/>+ unless eval { require File::Path };<br/>+ my $name = &quot;phooo$$&quot;;<br/>+ File::Path::make_path(&quot;$name/auto/Foo/Bar&quot;);<br/>+ open my $fh,<br/>+ &quot;&gt;$name/auto/Foo/Bar/Bar.$Config::Config{&#39;dlext&#39;}&quot;;<br/>+ close $fh;<br/>+ my $fell_back;<br/>+ local *XSLoader::bootstrap_inherit = sub {<br/>+ $fell_back++;<br/>+ # Break out of the calling subs<br/>+ goto the_test;<br/>+ };<br/>+ eval &lt;&lt;END;<br/>+#line 1 $name<br/>+package Foo::Bar;<br/>+XSLoader::load(&quot;Foo::Bar&quot;);<br/>+END<br/>+ the_test:<br/>+ ok $fell_back,<br/>+ &#39;XSLoader will not load relative paths based on (caller)[1]&#39;;<br/>+ File::Path::remove_tree($name);<br/>+}<br/>diff --git a/pod/perldelta.pod b/pod/perldelta.pod<br/>index 601fe02..11a8f7e 100644<br/>--- a/pod/perldelta.pod<br/>+++ b/pod/perldelta.pod<br/>@@ -48,6 +48,13 @@ L&lt;/Reporting Bugs&gt; below.<br/> <br/> L&lt;Module::CoreList&gt; has been upgraded from version 5.20160429 to 5.20160730_22.<br/> <br/>+=item *<br/>+<br/>+L&lt;XSLoader&gt; has been upgraded from version 0.20 to 0.20_01, fixing a security<br/>+hole in which binary files could be loaded from a path outside of<br/>+L&lt;C&lt;@INC&gt;|perlvar/@INC&gt;.<br/>+L&lt;[perl #128528]|https://rt.perl.org/Public/Bug/Display.html?id=128528&gt;<br/>+<br/> =back<br/> <br/> =head1 Documentation<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47676.html Fri, 22 Jul 2016 02:30:51 +0000 [perl.git] branch blead, updated. v5.25.3-5-gdec2b17 by Steve Hay via perl5-changes In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/dec2b171031d1c5f383f3b8571146901b3fae21c?hp=c137098022dcef5e7ea32608e5299276efea6457&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit dec2b171031d1c5f383f3b8571146901b3fae21c<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 17:59:02 2016 +0100<br/><br/> Prepare Module-CoreList for 5.25.4<br/><br/>M dist/Module-CoreList/Changes<br/>M dist/Module-CoreList/lib/Module/CoreList.pm<br/>M dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm<br/>M dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/><br/>commit 4359c934f4873d803eb38291853f700f6f086124<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 17:52:57 2016 +0100<br/><br/> Bump version to 5.25.4<br/> <br/> (including regen/opcode.pl)<br/><br/>M Cross/config.sh-arm-linux<br/>M Cross/config.sh-arm-linux-n770<br/>M INSTALL<br/>M META.json<br/>M META.yml<br/>M NetWare/Makefile<br/>M NetWare/config_H.wc<br/>M Porting/config.sh<br/>M Porting/config_H<br/>M Porting/perldelta_template.pod<br/>M Porting/todo.pod<br/>M README.haiku<br/>M README.macosx<br/>M README.os2<br/>M README.vms<br/>M hints/catamount.sh<br/>M lib/B/Op_private.pm<br/>M patchlevel.h<br/>M plan9/config.plan9<br/>M plan9/config_sh.sample<br/>M win32/GNUmakefile<br/>M win32/Makefile<br/>M win32/makefile.mk<br/><br/>commit c0ea32941a45c51071d793e208c290a31247c767<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 17:46:48 2016 +0100<br/><br/> Create new perldelta for 5.25.4<br/><br/>M MANIFEST<br/>M Makefile.SH<br/>M pod/.gitignore<br/>M pod/perl.pod<br/>A pod/perl5253delta.pod<br/>M pod/perldelta.pod<br/>M vms/descrip_mms.template<br/>M win32/GNUmakefile<br/>M win32/Makefile<br/>M win32/makefile.mk<br/>M win32/pod.mak<br/><br/>commit 9722322b15fd1f6d6c3503cbd9b2f4bbcc73b1f0<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 17:39:23 2016 +0100<br/><br/> 5.25.3 is released<br/><br/>M Porting/release_schedule.pod<br/><br/>commit 4d3fd69973bfa6d2632d40f12b52aaeb6c3f4d03<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 17:38:35 2016 +0100<br/><br/> Add epigraph for 5.25.3<br/><br/>M Porting/epigraphs.pod<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> Cross/config.sh-arm-linux | 40 +-<br/> Cross/config.sh-arm-linux-n770 | 40 +-<br/> INSTALL | 28 +-<br/> MANIFEST | 1 +<br/> META.json | 2 +-<br/> META.yml | 2 +-<br/> Makefile.SH | 8 +-<br/> NetWare/Makefile | 4 +-<br/> NetWare/config_H.wc | 10 +-<br/> Porting/config.sh | 42 +-<br/> Porting/config_H | 18 +-<br/> Porting/epigraphs.pod | 32 ++<br/> Porting/perldelta_template.pod | 2 +-<br/> Porting/release_schedule.pod | 2 +-<br/> Porting/todo.pod | 4 +-<br/> README.haiku | 4 +-<br/> README.macosx | 8 +-<br/> README.os2 | 2 +-<br/> README.vms | 4 +-<br/> dist/Module-CoreList/Changes | 3 +<br/> dist/Module-CoreList/lib/Module/CoreList.pm | 22 +-<br/> .../lib/Module/CoreList/TieHashDelta.pm | 2 +-<br/> dist/Module-CoreList/lib/Module/CoreList/Utils.pm | 9 +-<br/> hints/catamount.sh | 4 +-<br/> lib/B/Op_private.pm | 2 +-<br/> patchlevel.h | 4 +-<br/> plan9/config.plan9 | 10 +-<br/> plan9/config_sh.sample | 38 +-<br/> pod/.gitignore | 2 +-<br/> pod/perl.pod | 1 +<br/> pod/{perldelta.pod =&gt; perl5253delta.pod} | 2 +-<br/> pod/perldelta.pod | 456 +++++++++------------<br/> vms/descrip_mms.template | 2 +-<br/> win32/GNUmakefile | 6 +-<br/> win32/Makefile | 6 +-<br/> win32/makefile.mk | 6 +-<br/> win32/pod.mak | 4 +<br/> 37 files changed, 409 insertions(+), 423 deletions(-)<br/> copy pod/{perldelta.pod =&gt; perl5253delta.pod} (99%)<br/><br/>diff --git a/Cross/config.sh-arm-linux b/Cross/config.sh-arm-linux<br/>index 6fd3eac..9639e65 100644<br/>--- a/Cross/config.sh-arm-linux<br/>+++ b/Cross/config.sh-arm-linux<br/>@@ -32,12 +32,12 @@ alignbytes=&#39;4&#39;<br/> ansi2knr=&#39;&#39;<br/> aphostname=&#39;/bin/hostname&#39;<br/> api_revision=&#39;5&#39;<br/>-api_subversion=&#39;3&#39;<br/>+api_subversion=&#39;4&#39;<br/> api_version=&#39;25&#39;<br/>-api_versionstring=&#39;5.25.3&#39;<br/>+api_versionstring=&#39;5.25.4&#39;<br/> ar=&#39;ar&#39;<br/>-archlib=&#39;/usr/lib/perl5/5.25.3/armv4l-linux&#39;<br/>-archlibexp=&#39;/usr/lib/perl5/5.25.3/armv4l-linux&#39;<br/>+archlib=&#39;/usr/lib/perl5/5.25.4/armv4l-linux&#39;<br/>+archlibexp=&#39;/usr/lib/perl5/5.25.4/armv4l-linux&#39;<br/> archname64=&#39;&#39;<br/> archname=&#39;armv4l-linux&#39;<br/> archobjs=&#39;&#39;<br/>@@ -56,7 +56,7 @@ castflags=&#39;0&#39;<br/> cat=&#39;cat&#39;<br/> cc=&#39;cc&#39;<br/> cccdlflags=&#39;-fpic&#39;<br/>-ccdlflags=&#39;-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.3/armv4l-linux/CORE&#39;<br/>+ccdlflags=&#39;-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.4/armv4l-linux/CORE&#39;<br/> ccflags=&#39;-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64&#39;<br/> ccflags_uselargefiles=&#39;-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64&#39;<br/> ccname=&#39;arm-linux-gcc&#39;<br/>@@ -810,7 +810,7 @@ inc_version_list=&#39; &#39;<br/> inc_version_list_init=&#39;0&#39;<br/> incpath=&#39;&#39;<br/> inews=&#39;&#39;<br/>-installarchlib=&#39;./install_me_here/usr/lib/perl5/5.25.3/armv4l-linux&#39;<br/>+installarchlib=&#39;./install_me_here/usr/lib/perl5/5.25.4/armv4l-linux&#39;<br/> installbin=&#39;./install_me_here/usr/bin&#39;<br/> installhtml1dir=&#39;&#39;<br/> installhtml3dir=&#39;&#39;<br/>@@ -818,13 +818,13 @@ installman1dir=&#39;./install_me_here/usr/share/man/man1&#39;<br/> installman3dir=&#39;./install_me_here/usr/share/man/man3&#39;<br/> installprefix=&#39;./install_me_here/usr&#39;<br/> installprefixexp=&#39;./install_me_here/usr&#39;<br/>-installprivlib=&#39;./install_me_here/usr/lib/perl5/5.25.3&#39;<br/>+installprivlib=&#39;./install_me_here/usr/lib/perl5/5.25.4&#39;<br/> installscript=&#39;./install_me_here/usr/bin&#39;<br/>-installsitearch=&#39;./install_me_here/usr/lib/perl5/site_perl/5.25.3/armv4l-linux&#39;<br/>+installsitearch=&#39;./install_me_here/usr/lib/perl5/site_perl/5.25.4/armv4l-linux&#39;<br/> installsitebin=&#39;./install_me_here/usr/bin&#39;<br/> installsitehtml1dir=&#39;&#39;<br/> installsitehtml3dir=&#39;&#39;<br/>-installsitelib=&#39;./install_me_here/usr/lib/perl5/site_perl/5.25.3&#39;<br/>+installsitelib=&#39;./install_me_here/usr/lib/perl5/site_perl/5.25.4&#39;<br/> installsiteman1dir=&#39;./install_me_here/usr/share/man/man1&#39;<br/> installsiteman3dir=&#39;./install_me_here/usr/share/man/man3&#39;<br/> installsitescript=&#39;./install_me_here/usr/bin&#39;<br/>@@ -958,8 +958,8 @@ pmake=&#39;&#39;<br/> pr=&#39;&#39;<br/> prefix=&#39;/usr&#39;<br/> prefixexp=&#39;/usr&#39;<br/>-privlib=&#39;/usr/lib/perl5/5.25.3&#39;<br/>-privlibexp=&#39;/usr/lib/perl5/5.25.3&#39;<br/>+privlib=&#39;/usr/lib/perl5/5.25.4&#39;<br/>+privlibexp=&#39;/usr/lib/perl5/5.25.4&#39;<br/> procselfexe=&#39;&quot;/proc/self/exe&quot;&#39;<br/> prototype=&#39;define&#39;<br/> ptrsize=&#39;4&#39;<br/>@@ -1024,17 +1024,17 @@ sig_num=&#39;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<br/> sig_num_init=&#39;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, ... [78 chars truncated]<br/> sig_size=&#39;68&#39;<br/> signal_t=&#39;void&#39;<br/>-sitearch=&#39;/usr/lib/perl5/site_perl/5.25.3/armv4l-linux&#39;<br/>-sitearchexp=&#39;/usr/lib/perl5/site_perl/5.25.3/armv4l-linux&#39;<br/>+sitearch=&#39;/usr/lib/perl5/site_perl/5.25.4/armv4l-linux&#39;<br/>+sitearchexp=&#39;/usr/lib/perl5/site_perl/5.25.4/armv4l-linux&#39;<br/> sitebin=&#39;/usr/bin&#39;<br/> sitebinexp=&#39;/usr/bin&#39;<br/> sitehtml1dir=&#39;&#39;<br/> sitehtml1direxp=&#39;&#39;<br/> sitehtml3dir=&#39;&#39;<br/> sitehtml3direxp=&#39;&#39;<br/>-sitelib=&#39;/usr/lib/perl5/site_perl/5.25.3&#39;<br/>+sitelib=&#39;/usr/lib/perl5/site_perl/5.25.4&#39;<br/> sitelib_stem=&#39;/usr/lib/perl5/site_perl&#39;<br/>-sitelibexp=&#39;/usr/lib/perl5/site_perl/5.25.3&#39;<br/>+sitelibexp=&#39;/usr/lib/perl5/site_perl/5.25.4&#39;<br/> siteman1dir=&#39;/usr/share/man/man1&#39;<br/> siteman1direxp=&#39;/usr/share/man/man1&#39;<br/> siteman3dir=&#39;/usr/share/man/man3&#39;<br/>@@ -1073,7 +1073,7 @@ stdio_stream_array=&#39;&#39;<br/> strerror_r_proto=&#39;0&#39;<br/> strings=&#39;/usr/include/string.h&#39;<br/> submit=&#39;&#39;<br/>-subversion=&#39;3&#39;<br/>+subversion=&#39;4&#39;<br/> sysman=&#39;/usr/share/man/man1&#39;<br/> tail=&#39;&#39;<br/> tar=&#39;&#39;<br/>@@ -1165,8 +1165,8 @@ vendorprefix=&#39;&#39;<br/> vendorprefixexp=&#39;&#39;<br/> vendorscript=&#39;&#39;<br/> vendorscriptexp=&#39;&#39;<br/>-version=&#39;5.25.3&#39;<br/>-version_patchlevel_string=&#39;version 25 subversion 3&#39;<br/>+version=&#39;5.25.4&#39;<br/>+version_patchlevel_string=&#39;version 25 subversion 4&#39;<br/> versiononly=&#39;undef&#39;<br/> vi=&#39;&#39;<br/> xlibpth=&#39;/usr/lib/386 /lib/386&#39;<br/>@@ -1180,9 +1180,9 @@ config_args=&#39;&#39;<br/> config_argc=0<br/> PERL_REVISION=5<br/> PERL_VERSION=25<br/>-PERL_SUBVERSION=3<br/>+PERL_SUBVERSION=4<br/> PERL_API_REVISION=5<br/> PERL_API_VERSION=25<br/>-PERL_API_SUBVERSION=3<br/>+PERL_API_SUBVERSION=4<br/> PERL_PATCHLEVEL=<br/> PERL_CONFIG_SH=true<br/>diff --git a/Cross/config.sh-arm-linux-n770 b/Cross/config.sh-arm-linux-n770<br/>index 4621b80..f14c4cb 100644<br/>--- a/Cross/config.sh-arm-linux-n770<br/>+++ b/Cross/config.sh-arm-linux-n770<br/>@@ -32,12 +32,12 @@ alignbytes=&#39;4&#39;<br/> ansi2knr=&#39;&#39;<br/> aphostname=&#39;/bin/hostname&#39;<br/> api_revision=&#39;5&#39;<br/>-api_subversion=&#39;3&#39;<br/>+api_subversion=&#39;4&#39;<br/> api_version=&#39;25&#39;<br/>-api_versionstring=&#39;5.25.3&#39;<br/>+api_versionstring=&#39;5.25.4&#39;<br/> ar=&#39;ar&#39;<br/>-archlib=&#39;/usr/lib/perl5/5.25.3/armv4l-linux&#39;<br/>-archlibexp=&#39;/usr/lib/perl5/5.25.3/armv4l-linux&#39;<br/>+archlib=&#39;/usr/lib/perl5/5.25.4/armv4l-linux&#39;<br/>+archlibexp=&#39;/usr/lib/perl5/5.25.4/armv4l-linux&#39;<br/> archname64=&#39;&#39;<br/> archname=&#39;armv4l-linux&#39;<br/> archobjs=&#39;&#39;<br/>@@ -55,7 +55,7 @@ castflags=&#39;0&#39;<br/> cat=&#39;cat&#39;<br/> cc=&#39;arm-none-linux-gnueabi-gcc&#39;<br/> cccdlflags=&#39;-fpic&#39;<br/>-ccdlflags=&#39;-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.3/armv4l-linux/CORE&#39;<br/>+ccdlflags=&#39;-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.4/armv4l-linux/CORE&#39;<br/> ccflags=&#39;-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64&#39;<br/> ccflags_uselargefiles=&#39;-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64&#39;<br/> ccname=&#39;arm-linux-gcc&#39;<br/>@@ -699,7 +699,7 @@ inc_version_list=&#39; &#39;<br/> inc_version_list_init=&#39;0&#39;<br/> incpath=&#39;&#39;<br/> inews=&#39;&#39;<br/>-installarchlib=&#39;./install_me_here/usr/lib/perl5/5.25.3/armv4l-linux&#39;<br/>+installarchlib=&#39;./install_me_here/usr/lib/perl5/5.25.4/armv4l-linux&#39;<br/> installbin=&#39;./install_me_here/usr/bin&#39;<br/> installhtml1dir=&#39;&#39;<br/> installhtml3dir=&#39;&#39;<br/>@@ -707,13 +707,13 @@ installman1dir=&#39;./install_me_here/usr/share/man/man1&#39;<br/> installman3dir=&#39;./install_me_here/usr/share/man/man3&#39;<br/> installprefix=&#39;./install_me_here/usr&#39;<br/> installprefixexp=&#39;./install_me_here/usr&#39;<br/>-installprivlib=&#39;./install_me_here/usr/lib/perl5/5.25.3&#39;<br/>+installprivlib=&#39;./install_me_here/usr/lib/perl5/5.25.4&#39;<br/> installscript=&#39;./install_me_here/usr/bin&#39;<br/>-installsitearch=&#39;./install_me_here/usr/lib/perl5/site_perl/5.25.3/armv4l-linux&#39;<br/>+installsitearch=&#39;./install_me_here/usr/lib/perl5/site_perl/5.25.4/armv4l-linux&#39;<br/> installsitebin=&#39;./install_me_here/usr/bin&#39;<br/> installsitehtml1dir=&#39;&#39;<br/> installsitehtml3dir=&#39;&#39;<br/>-installsitelib=&#39;./install_me_here/usr/lib/perl5/site_perl/5.25.3&#39;<br/>+installsitelib=&#39;./install_me_here/usr/lib/perl5/site_perl/5.25.4&#39;<br/> installsiteman1dir=&#39;./install_me_here/usr/share/man/man1&#39;<br/> installsiteman3dir=&#39;./install_me_here/usr/share/man/man3&#39;<br/> installsitescript=&#39;./install_me_here/usr/bin&#39;<br/>@@ -841,8 +841,8 @@ pmake=&#39;&#39;<br/> pr=&#39;&#39;<br/> prefix=&#39;/usr&#39;<br/> prefixexp=&#39;/usr&#39;<br/>-privlib=&#39;/usr/lib/perl5/5.25.3&#39;<br/>-privlibexp=&#39;/usr/lib/perl5/5.25.3&#39;<br/>+privlib=&#39;/usr/lib/perl5/5.25.4&#39;<br/>+privlibexp=&#39;/usr/lib/perl5/5.25.4&#39;<br/> procselfexe=&#39;&quot;/proc/self/exe&quot;&#39;<br/> prototype=&#39;define&#39;<br/> ptrsize=&#39;4&#39;<br/>@@ -903,17 +903,17 @@ sig_num=&#39;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<br/> sig_num_init=&#39;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, ... [78 chars truncated]<br/> sig_size=&#39;68&#39;<br/> signal_t=&#39;void&#39;<br/>-sitearch=&#39;/usr/lib/perl5/site_perl/5.25.3/armv4l-linux&#39;<br/>-sitearchexp=&#39;/usr/lib/perl5/site_perl/5.25.3/armv4l-linux&#39;<br/>+sitearch=&#39;/usr/lib/perl5/site_perl/5.25.4/armv4l-linux&#39;<br/>+sitearchexp=&#39;/usr/lib/perl5/site_perl/5.25.4/armv4l-linux&#39;<br/> sitebin=&#39;/usr/bin&#39;<br/> sitebinexp=&#39;/usr/bin&#39;<br/> sitehtml1dir=&#39;&#39;<br/> sitehtml1direxp=&#39;&#39;<br/> sitehtml3dir=&#39;&#39;<br/> sitehtml3direxp=&#39;&#39;<br/>-sitelib=&#39;/usr/lib/perl5/site_perl/5.25.3&#39;<br/>+sitelib=&#39;/usr/lib/perl5/site_perl/5.25.4&#39;<br/> sitelib_stem=&#39;/usr/lib/perl5/site_perl&#39;<br/>-sitelibexp=&#39;/usr/lib/perl5/site_perl/5.25.3&#39;<br/>+sitelibexp=&#39;/usr/lib/perl5/site_perl/5.25.4&#39;<br/> siteman1dir=&#39;/usr/share/man/man1&#39;<br/> siteman1direxp=&#39;/usr/share/man/man1&#39;<br/> siteman3dir=&#39;/usr/share/man/man3&#39;<br/>@@ -950,7 +950,7 @@ stdio_stream_array=&#39;&#39;<br/> strerror_r_proto=&#39;0&#39;<br/> strings=&#39;/usr/include/string.h&#39;<br/> submit=&#39;&#39;<br/>-subversion=&#39;3&#39;<br/>+subversion=&#39;4&#39;<br/> sysman=&#39;/usr/share/man/man1&#39;<br/> tail=&#39;&#39;<br/> tar=&#39;&#39;<br/>@@ -1035,8 +1035,8 @@ vendorprefix=&#39;&#39;<br/> vendorprefixexp=&#39;&#39;<br/> vendorscript=&#39;&#39;<br/> vendorscriptexp=&#39;&#39;<br/>-version=&#39;5.25.3&#39;<br/>-version_patchlevel_string=&#39;version 25 subversion 3&#39;<br/>+version=&#39;5.25.4&#39;<br/>+version_patchlevel_string=&#39;version 25 subversion 4&#39;<br/> versiononly=&#39;undef&#39;<br/> vi=&#39;&#39;<br/> xlibpth=&#39;/usr/lib/386 /lib/386&#39;<br/>@@ -1050,9 +1050,9 @@ config_args=&#39;&#39;<br/> config_argc=0<br/> PERL_REVISION=5<br/> PERL_VERSION=25<br/>-PERL_SUBVERSION=3<br/>+PERL_SUBVERSION=4<br/> PERL_API_REVISION=5<br/> PERL_API_VERSION=25<br/>-PERL_API_SUBVERSION=3<br/>+PERL_API_SUBVERSION=4<br/> PERL_PATCHLEVEL=<br/> PERL_CONFIG_SH=true<br/>diff --git a/INSTALL b/INSTALL<br/>index c80017b..b3e3f75 100644<br/>--- a/INSTALL<br/>+++ b/INSTALL<br/>@@ -581,7 +581,7 @@ The directories set up by Configure fall into three broad categories.<br/> <br/> =item Directories for the perl distribution<br/> <br/>-By default, Configure will use the following directories for 5.25.3.<br/>+By default, Configure will use the following directories for 5.25.4.<br/> $version is the full perl version number, including subversion, e.g.<br/> 5.12.3, and $archname is a string like sun4-sunos,<br/> determined by Configure. The full definitions of all Configure<br/>@@ -2435,7 +2435,7 @@ http://www.chiark.greenend.org.uk/~sgtatham/bugs.html<br/> <br/> =head1 Coexistence with earlier versions of perl 5<br/> <br/>-Perl 5.25.3 is not binary compatible with earlier versions of Perl.<br/>+Perl 5.25.4 is not binary compatible with earlier versions of Perl.<br/> In other words, you will have to recompile your XS modules.<br/> <br/> In general, you can usually safely upgrade from one version of Perl<br/>@@ -2510,9 +2510,9 @@ won&#39;t interfere with another version. (The defaults guarantee this for<br/> libraries after 5.6.0, but not for executables. TODO?) One convenient<br/> way to do this is by using a separate prefix for each version, such as<br/> <br/>- sh Configure -Dprefix=/opt/perl5.25.3<br/>+ sh Configure -Dprefix=/opt/perl5.25.4<br/> <br/>-and adding /opt/perl5.25.3/bin to the shell PATH variable. Such users<br/>+and adding /opt/perl5.25.4/bin to the shell PATH variable. Such users<br/> may also wish to add a symbolic link /usr/local/bin/perl so that<br/> scripts can still start with #!/usr/local/bin/perl.<br/> <br/>@@ -2527,11 +2527,11 @@ yet.<br/> <br/> =head2 Upgrading from 5.25.2 or earlier<br/> <br/>-B&lt;Perl 5.25.3 may not be binary compatible with Perl 5.25.2 or<br/>+B&lt;Perl 5.25.4 may not be binary compatible with Perl 5.25.3 or<br/> earlier Perl releases.&gt; Perl modules having binary parts<br/> (meaning that a C compiler is used) will have to be recompiled to be<br/>-used with 5.25.3. If you find you do need to rebuild an extension with<br/>-5.25.3, you may safely do so without disturbing the older<br/>+used with 5.25.4. If you find you do need to rebuild an extension with<br/>+5.25.4, you may safely do so without disturbing the older<br/> installations. (See L&lt;&quot;Coexistence with earlier versions of perl 5&quot;&gt;<br/> above.)<br/> <br/>@@ -2564,15 +2564,15 @@ Firstly, the bare minimum to run this script<br/> print(&quot;$f\n&quot;);<br/> }<br/> <br/>-in Linux with perl-5.25.3 is as follows (under $Config{prefix}):<br/>+in Linux with perl-5.25.4 is as follows (under $Config{prefix}):<br/> <br/> ./bin/perl<br/>- ./lib/perl5/5.25.3/strict.pm<br/>- ./lib/perl5/5.25.3/warnings.pm<br/>- ./lib/perl5/5.25.3/i686-linux/File/Glob.pm<br/>- ./lib/perl5/5.25.3/feature.pm<br/>- ./lib/perl5/5.25.3/XSLoader.pm<br/>- ./lib/perl5/5.25.3/i686-linux/auto/File/Glob/Glob.so<br/>+ ./lib/perl5/5.25.4/strict.pm<br/>+ ./lib/perl5/5.25.4/warnings.pm<br/>+ ./lib/perl5/5.25.4/i686-linux/File/Glob.pm<br/>+ ./lib/perl5/5.25.4/feature.pm<br/>+ ./lib/perl5/5.25.4/XSLoader.pm<br/>+ ./lib/perl5/5.25.4/i686-linux/auto/File/Glob/Glob.so<br/> <br/> Secondly, for perl-5.10.1, the Debian perl-base package contains 591<br/> files, (of which 510 are for lib/unicore) totaling about 3.5MB in its<br/>diff --git a/MANIFEST b/MANIFEST<br/>index 8f1b65e..81261e1 100644<br/>--- a/MANIFEST<br/>+++ b/MANIFEST<br/>@@ -4812,6 +4812,7 @@ pod/perl5240delta.pod Perl changes in version 5.24.0<br/> pod/perl5250delta.pod Perl changes in version 5.25.0<br/> pod/perl5251delta.pod Perl changes in version 5.25.1<br/> pod/perl5252delta.pod Perl changes in version 5.25.2<br/>+pod/perl5253delta.pod Perl changes in version 5.25.3<br/> pod/perl561delta.pod Perl changes in version 5.6.1<br/> pod/perl56delta.pod Perl changes in version 5.6<br/> pod/perl581delta.pod Perl changes in version 5.8.1<br/>diff --git a/META.json b/META.json<br/>index 4c2497a..b5e818a 100644<br/>--- a/META.json<br/>+++ b/META.json<br/>@@ -124,6 +124,6 @@<br/> &quot;url&quot; : &quot;http://perl5.git.perl.org/&quot;<br/> }<br/> },<br/>- &quot;version&quot; : &quot;5.025003&quot;,<br/>+ &quot;version&quot; : &quot;5.025004&quot;,<br/> &quot;x_serialization_backend&quot; : &quot;JSON::PP version 2.27400&quot;<br/> }<br/>diff --git a/META.yml b/META.yml<br/>index 9c8ad97..1253e9d 100644<br/>--- a/META.yml<br/>+++ b/META.yml<br/>@@ -111,5 +111,5 @@ resources:<br/> homepage: http://www.perl.org/<br/> license: http://dev.perl.org/licenses/<br/> repository: http://perl5.git.perl.org/<br/>-version: &#39;5.025003&#39;<br/>+version: &#39;5.025004&#39;<br/> x_serialization_backend: &#39;CPAN::Meta::YAML version 0.018&#39;<br/>diff --git a/Makefile.SH b/Makefile.SH<br/>index 84d06ca..561d5e1 100755<br/>--- a/Makefile.SH<br/>+++ b/Makefile.SH<br/>@@ -522,7 +522,7 @@ miniperl_objs = $(miniperl_objs_nodt) $(DTRACE_MINI_O)<br/> perllib_objs = $(perllib_objs_nodt) $(DTRACE_PERLLIB_O)<br/> perlmain_objs = perlmain$(OBJ_EXT) $(DTRACE_MAIN_O)<br/> <br/>-perltoc_pod_prereqs = extra.pods pod/perl5253delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod<br/>+perltoc_pod_prereqs = extra.pods pod/perl5254delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod<br/> generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)<br/> generated_headers = uudmap.h bitcount.h mg_data.h<br/> <br/>@@ -1085,9 +1085,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc<br/> pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST<br/> $(MINIPERL) pod/perlmodlib.PL -q<br/> <br/>-pod/perl5253delta.pod: pod/perldelta.pod<br/>- $(RMS) pod/perl5253delta.pod<br/>- $(LNS) perldelta.pod pod/perl5253delta.pod<br/>+pod/perl5254delta.pod: pod/perldelta.pod<br/>+ $(RMS) pod/perl5254delta.pod<br/>+ $(LNS) perldelta.pod pod/perl5254delta.pod<br/> <br/> extra.pods: $(MINIPERL_EXE)<br/> -@test ! -f extra.pods || rm -f `cat extra.pods`<br/>diff --git a/NetWare/Makefile b/NetWare/Makefile<br/>index 1d7ee3a..77e27c8 100644<br/>--- a/NetWare/Makefile<br/>+++ b/NetWare/Makefile<br/>@@ -86,7 +86,7 @@ NLM_VERSION = 3,20,0<br/> <br/> <br/> # Here comes the CW tools - TO BE FILLED TO BUILD WITH CW -<br/>-MODULE_DESC = &quot;Perl 5.25.3 for NetWare&quot;<br/>+MODULE_DESC = &quot;Perl 5.25.4 for NetWare&quot;<br/> CCTYPE = CodeWarrior<br/> C_COMPILER = mwccnlm -c<br/> CPP_COMPILER = mwccnlm<br/>@@ -462,7 +462,7 @@ INST_NW_TOP2 = $(INST_NW_DRV)\perl<br/> # versioned installation can be obtained by setting INST_TOP above to a<br/> # path that includes an arbitrary version string.<br/> #<br/>-INST_VER = \5.25.3<br/>+INST_VER = \5.25.4<br/> <br/> #<br/> # Comment this out if you DON&#39;T want your perl installation to have<br/>diff --git a/NetWare/config_H.wc b/NetWare/config_H.wc<br/>index 3846db8..59a984a 100644<br/>--- a/NetWare/config_H.wc<br/>+++ b/NetWare/config_H.wc<br/>@@ -1042,7 +1042,7 @@<br/> * This symbol contains the ~name expanded version of ARCHLIB, to be used<br/> * in programs that are not prepared to deal with ~ expansion at run-time.<br/> */<br/>-#define ARCHLIB &quot;c:\\perl\\5.25.3\\lib\\NetWare-x86-multi-thread&quot; /**/<br/>+#define ARCHLIB &quot;c:\\perl\\5.25.4\\lib\\NetWare-x86-multi-thread&quot; /**/<br/> /*#define ARCHLIB_EXP &quot;&quot; /**/<br/> <br/> /* ARCHNAME:<br/>@@ -1073,8 +1073,8 @@<br/> * This symbol is the filename expanded version of the BIN symbol, for<br/> * programs that do not want to deal with that at run-time.<br/> */<br/>-#define BIN &quot;c:\\perl\\5.25.3\\bin\\NetWare-x86-multi-thread&quot; /**/<br/>-#define BIN_EXP &quot;c:\\perl\\5.25.3\\bin\\NetWare-x86-multi-thread&quot; /**/<br/>+#define BIN &quot;c:\\perl\\5.25.4\\bin\\NetWare-x86-multi-thread&quot; /**/<br/>+#define BIN_EXP &quot;c:\\perl\\5.25.4\\bin\\NetWare-x86-multi-thread&quot; /**/<br/> <br/> /* BYTEORDER:<br/> * This symbol holds the hexadecimal constant defined in byteorder,<br/>@@ -3047,7 +3047,7 @@<br/> * This symbol contains the ~name expanded version of SITEARCH, to be used<br/> * in programs that are not prepared to deal with ~ expansion at run-time.<br/> */<br/>-#define SITEARCH &quot;c:\\perl\\site\\5.25.3\\lib\\NetWare-x86-multi-thread&quot; /**/<br/>+#define SITEARCH &quot;c:\\perl\\site\\5.25.4\\lib\\NetWare-x86-multi-thread&quot; /**/<br/> /*#define SITEARCH_EXP &quot;&quot; /**/<br/> <br/> /* SITELIB:<br/>@@ -3070,7 +3070,7 @@<br/> * removed. The elements in inc_version_list (inc_version_list.U) can<br/> * be tacked onto this variable to generate a list of directories to search.<br/> */<br/>-#define SITELIB &quot;c:\\perl\\site\\5.25.3\\lib&quot; /**/<br/>+#define SITELIB &quot;c:\\perl\\site\\5.25.4\\lib&quot; /**/<br/> /*#define SITELIB_EXP &quot;&quot; /**/<br/> #define SITELIB_STEM &quot;&quot; /**/<br/> <br/>diff --git a/Porting/config.sh b/Porting/config.sh<br/>index 5609a92..68e0434 100644<br/>--- a/Porting/config.sh<br/>+++ b/Porting/config.sh<br/>@@ -39,12 +39,12 @@ alignbytes=&#39;8&#39;<br/> ansi2knr=&#39;&#39;<br/> aphostname=&#39;/bin/hostname&#39;<br/> api_revision=&#39;5&#39;<br/>-api_subversion=&#39;3&#39;<br/>+api_subversion=&#39;4&#39;<br/> api_version=&#39;25&#39;<br/>-api_versionstring=&#39;5.25.3&#39;<br/>+api_versionstring=&#39;5.25.4&#39;<br/> ar=&#39;ar&#39;<br/>-archlib=&#39;/tmp/mblead/lib/perl5/5.25.3/darwin-2level&#39;<br/>-archlibexp=&#39;/tmp/mblead/lib/perl5/5.25.3/darwin-2level&#39;<br/>+archlib=&#39;/tmp/mblead/lib/perl5/5.25.4/darwin-2level&#39;<br/>+archlibexp=&#39;/tmp/mblead/lib/perl5/5.25.4/darwin-2level&#39;<br/> archname64=&#39;&#39;<br/> archname=&#39;darwin-2level&#39;<br/> archobjs=&#39;&#39;<br/>@@ -831,7 +831,7 @@ incpath=&#39;&#39;<br/> incpth=&#39;/usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeD ... [514 chars truncated]<br/> inews=&#39;&#39;<br/> initialinstalllocation=&#39;/tmp/mblead/bin&#39;<br/>-installarchlib=&#39;/tmp/mblead/lib/perl5/5.25.3/darwin-2level&#39;<br/>+installarchlib=&#39;/tmp/mblead/lib/perl5/5.25.4/darwin-2level&#39;<br/> installbin=&#39;/tmp/mblead/bin&#39;<br/> installhtml1dir=&#39;&#39;<br/> installhtml3dir=&#39;&#39;<br/>@@ -839,13 +839,13 @@ installman1dir=&#39;/tmp/mblead/man/man1&#39;<br/> installman3dir=&#39;/tmp/mblead/man/man3&#39;<br/> installprefix=&#39;/tmp/mblead&#39;<br/> installprefixexp=&#39;/tmp/mblead&#39;<br/>-installprivlib=&#39;/tmp/mblead/lib/perl5/5.25.3&#39;<br/>+installprivlib=&#39;/tmp/mblead/lib/perl5/5.25.4&#39;<br/> installscript=&#39;/tmp/mblead/bin&#39;<br/>-installsitearch=&#39;/tmp/mblead/lib/perl5/site_perl/5.25.3/darwin-2level&#39;<br/>+installsitearch=&#39;/tmp/mblead/lib/perl5/site_perl/5.25.4/darwin-2level&#39;<br/> installsitebin=&#39;/tmp/mblead/bin&#39;<br/> installsitehtml1dir=&#39;&#39;<br/> installsitehtml3dir=&#39;&#39;<br/>-installsitelib=&#39;/tmp/mblead/lib/perl5/site_perl/5.25.3&#39;<br/>+installsitelib=&#39;/tmp/mblead/lib/perl5/site_perl/5.25.4&#39;<br/> installsiteman1dir=&#39;/tmp/mblead/man/man1&#39;<br/> installsiteman3dir=&#39;/tmp/mblead/man/man3&#39;<br/> installsitescript=&#39;/tmp/mblead/bin&#39;<br/>@@ -970,7 +970,7 @@ perl_patchlevel=&#39;&#39;<br/> perl_static_inline=&#39;static __inline__&#39;<br/> perladmin=&#39;aaron@daybreak.nonet&#39;<br/> perllibs=&#39;-lpthread -ldl -lm -lutil -lc&#39;<br/>-perlpath=&#39;/tmp/mblead/bin/perl5.25.3&#39;<br/>+perlpath=&#39;/tmp/mblead/bin/perl5.25.4&#39;<br/> pg=&#39;pg&#39;<br/> phostname=&#39;hostname&#39;<br/> pidtype=&#39;pid_t&#39;<br/>@@ -979,8 +979,8 @@ pmake=&#39;&#39;<br/> pr=&#39;&#39;<br/> prefix=&#39;/tmp/mblead&#39;<br/> prefixexp=&#39;/tmp/mblead&#39;<br/>-privlib=&#39;/tmp/mblead/lib/perl5/5.25.3&#39;<br/>-privlibexp=&#39;/tmp/mblead/lib/perl5/5.25.3&#39;<br/>+privlib=&#39;/tmp/mblead/lib/perl5/5.25.4&#39;<br/>+privlibexp=&#39;/tmp/mblead/lib/perl5/5.25.4&#39;<br/> procselfexe=&#39;&#39;<br/> prototype=&#39;define&#39;<br/> ptrsize=&#39;8&#39;<br/>@@ -1046,17 +1046,17 @@ sig_num=&#39;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<br/> sig_num_init=&#39;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&#39;<br/> sig_size=&#39;33&#39;<br/> signal_t=&#39;void&#39;<br/>-sitearch=&#39;/tmp/mblead/lib/perl5/site_perl/5.25.3/darwin-2level&#39;<br/>-sitearchexp=&#39;/tmp/mblead/lib/perl5/site_perl/5.25.3/darwin-2level&#39;<br/>+sitearch=&#39;/tmp/mblead/lib/perl5/site_perl/5.25.4/darwin-2level&#39;<br/>+sitearchexp=&#39;/tmp/mblead/lib/perl5/site_perl/5.25.4/darwin-2level&#39;<br/> sitebin=&#39;/tmp/mblead/bin&#39;<br/> sitebinexp=&#39;/tmp/mblead/bin&#39;<br/> sitehtml1dir=&#39;&#39;<br/> sitehtml1direxp=&#39;&#39;<br/> sitehtml3dir=&#39;&#39;<br/> sitehtml3direxp=&#39;&#39;<br/>-sitelib=&#39;/tmp/mblead/lib/perl5/site_perl/5.25.3&#39;<br/>+sitelib=&#39;/tmp/mblead/lib/perl5/site_perl/5.25.4&#39;<br/> sitelib_stem=&#39;/tmp/mblead/lib/perl5/site_perl&#39;<br/>-sitelibexp=&#39;/tmp/mblead/lib/perl5/site_perl/5.25.3&#39;<br/>+sitelibexp=&#39;/tmp/mblead/lib/perl5/site_perl/5.25.4&#39;<br/> siteman1dir=&#39;/tmp/mblead/man/man1&#39;<br/> siteman1direxp=&#39;/tmp/mblead/man/man1&#39;<br/> siteman3dir=&#39;/tmp/mblead/man/man3&#39;<br/>@@ -1082,7 +1082,7 @@ src=&#39;.&#39;<br/> ssizetype=&#39;ssize_t&#39;<br/> st_ino_sign=&#39;1&#39;<br/> st_ino_size=&#39;8&#39;<br/>-startperl=&#39;#!/tmp/mblead/bin/perl5.25.3&#39;<br/>+startperl=&#39;#!/tmp/mblead/bin/perl5.25.4&#39;<br/> startsh=&#39;#!/bin/sh&#39;<br/> static_ext=&#39; &#39;<br/> stdchar=&#39;char&#39;<br/>@@ -1095,7 +1095,7 @@ stdio_stream_array=&#39;&#39;<br/> strerror_r_proto=&#39;0&#39;<br/> strings=&#39;/usr/include/string.h&#39;<br/> submit=&#39;&#39;<br/>-subversion=&#39;3&#39;<br/>+subversion=&#39;4&#39;<br/> sysman=&#39;/usr/share/man/man1&#39;<br/> sysroot=&#39;&#39;<br/> tail=&#39;&#39;<br/>@@ -1194,8 +1194,8 @@ vendorprefix=&#39;&#39;<br/> vendorprefixexp=&#39;&#39;<br/> vendorscript=&#39;&#39;<br/> vendorscriptexp=&#39;&#39;<br/>-version=&#39;5.25.3&#39;<br/>-version_patchlevel_string=&#39;version 25 subversion 3&#39;<br/>+version=&#39;5.25.4&#39;<br/>+version_patchlevel_string=&#39;version 25 subversion 4&#39;<br/> versiononly=&#39;define&#39;<br/> vi=&#39;&#39;<br/> xlibpth=&#39;/usr/lib/386 /lib/386&#39;<br/>@@ -1205,9 +1205,9 @@ zcat=&#39;&#39;<br/> zip=&#39;zip&#39;<br/> PERL_REVISION=5<br/> PERL_VERSION=25<br/>-PERL_SUBVERSION=3<br/>+PERL_SUBVERSION=4<br/> PERL_API_REVISION=5<br/> PERL_API_VERSION=25<br/>-PERL_API_SUBVERSION=3<br/>+PERL_API_SUBVERSION=4<br/> PERL_PATCHLEVEL=&#39;&#39;<br/> PERL_CONFIG_SH=true<br/>diff --git a/Porting/config_H b/Porting/config_H<br/>index b90afc7..2522426 100644<br/>--- a/Porting/config_H<br/>+++ b/Porting/config_H<br/>@@ -960,8 +960,8 @@<br/> * This symbol contains the ~name expanded version of ARCHLIB, to be used<br/> * in programs that are not prepared to deal with ~ expansion at run-time.<br/> */<br/>-#define ARCHLIB &quot;/pro/lib/perl5/5.25.3/i686-linux-64int-ld&quot; /**/<br/>-#define ARCHLIB_EXP &quot;/pro/lib/perl5/5.25.3/i686-linux-64int-ld&quot; /**/<br/>+#define ARCHLIB &quot;/pro/lib/perl5/5.25.4/i686-linux-64int-ld&quot; /**/<br/>+#define ARCHLIB_EXP &quot;/pro/lib/perl5/5.25.4/i686-linux-64int-ld&quot; /**/<br/> <br/> /* ARCHNAME:<br/> * This symbol holds a string representing the architecture name.<br/>@@ -2068,8 +2068,8 @@<br/> * This symbol contains the ~name expanded version of PRIVLIB, to be used<br/> * in programs that are not prepared to deal with ~ expansion at run-time.<br/> */<br/>-#define PRIVLIB &quot;/pro/lib/perl5/5.25.3&quot; /**/<br/>-#define PRIVLIB_EXP &quot;/pro/lib/perl5/5.25.3&quot; /**/<br/>+#define PRIVLIB &quot;/pro/lib/perl5/5.25.4&quot; /**/<br/>+#define PRIVLIB_EXP &quot;/pro/lib/perl5/5.25.4&quot; /**/<br/> <br/> /* PTRSIZE:<br/> * This symbol contains the size of a pointer, so that the C preprocessor<br/>@@ -2119,8 +2119,8 @@<br/> * This symbol contains the ~name expanded version of SITEARCH, to be used<br/> * in programs that are not prepared to deal with ~ expansion at run-time.<br/> */<br/>-#define SITEARCH &quot;/pro/lib/perl5/site_perl/5.25.3/i686-linux-64int-ld&quot; /**/<br/>-#define SITEARCH_EXP &quot;/pro/lib/perl5/site_perl/5.25.3/i686-linux-64int-ld&quot; /**/<br/>+#define SITEARCH &quot;/pro/lib/perl5/site_perl/5.25.4/i686-linux-64int-ld&quot; /**/<br/>+#define SITEARCH_EXP &quot;/pro/lib/perl5/site_perl/5.25.4/i686-linux-64int-ld&quot; /**/<br/> <br/> /* SITELIB:<br/> * This symbol contains the name of the private library for this package.<br/>@@ -2142,8 +2142,8 @@<br/> * removed. The elements in inc_version_list (inc_version_list.U) can<br/> * be tacked onto this variable to generate a list of directories to search.<br/> */<br/>-#define SITELIB &quot;/pro/lib/perl5/site_perl/5.25.3&quot; /**/<br/>-#define SITELIB_EXP &quot;/pro/lib/perl5/site_perl/5.25.3&quot; /**/<br/>+#define SITELIB &quot;/pro/lib/perl5/site_perl/5.25.4&quot; /**/<br/>+#define SITELIB_EXP &quot;/pro/lib/perl5/site_perl/5.25.4&quot; /**/<br/> #define SITELIB_STEM &quot;/pro/lib/perl5/site_perl&quot; /**/<br/> <br/> /* SSize_t:<br/>@@ -4282,7 +4282,7 @@<br/> * script to make sure (one hopes) that it runs with perl and not<br/> * some shell.<br/> */<br/>-#define STARTPERL &quot;#!/pro/bin/perl5.25.3&quot; /**/<br/>+#define STARTPERL &quot;#!/pro/bin/perl5.25.4&quot; /**/<br/> <br/> /* HAS_STDIO_STREAM_ARRAY:<br/> * This symbol, if defined, tells that there is an array<br/>diff --git a/Porting/epigraphs.pod b/Porting/epigraphs.pod<br/>index beac792..052fec4 100644<br/>--- a/Porting/epigraphs.pod<br/>+++ b/Porting/epigraphs.pod<br/>@@ -17,6 +17,38 @@ Consult your favorite dictionary for details.<br/> <br/> =head1 EPIGRAPHS<br/> <br/>+=head2 v5.25.3 - Edward Lear, ed. Vivien Noakes, &quot;The Complete Nonsense and Other Verse&quot;: The Dong with a Luminous Nose<br/>+<br/>+L&lt;Announced on 2016-07-20 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2016/07/msg238158.html&gt;<br/>+<br/>+ When awful darkness and silence reign<br/>+ Over the great Gromboolian plain,<br/>+ Through the long, long wintry nights; -<br/>+ When the angry breakers roar<br/>+ As they beat on the rocky shore; -<br/>+ When Storm-clouds brood on the towering heights<br/>+ Of the Hills of the Chankly Bore: -<br/>+<br/>+ Then, through the vast and gloomy dark,<br/>+ There moves what seems a fiery spark,<br/>+ A lonely spark with silvery rays<br/>+ Piercing the coal-black night, -<br/>+ A Meteor strange and bright: -<br/>+ Hither and thither the vision strays,<br/>+ A single lurid light.<br/>+<br/>+ Slowly it wanders, - pauses, - creeps, -<br/>+ Anon it sparkles, - flashes and leaps;<br/>+ And ever as onward it gleaming goes<br/>+ A light on the Bong-tree stems it throws.<br/>+ And those who watch at that midnight hour<br/>+ From Hall or Terrace, or lofty Tower,<br/>+ Cry, as the wild light passes along, -<br/>+ &#39;The Dong! - the Dong!<br/>+ The wandering Dong through the forest goes!<br/>+ The Dong! the Dong!<br/>+ The Dong with a luminous Nose!&#39;<br/>+<br/> =head2 v5.25.2 - Dan le Sac Vs Scroobius Pip &quot;Waiting For The Beat To Kick In&quot;<br/> <br/> L&lt;Announced on 2016-06-20 by Matthew Horsfall|http://www.nntp.perl.org/group/perl.perl5.porters/2016/06/msg237274.html&gt;<br/>diff --git a/Porting/perldelta_template.pod b/Porting/perldelta_template.pod<br/>index 3cbf8cf..4109921 100644<br/>--- a/Porting/perldelta_template.pod<br/>+++ b/Porting/perldelta_template.pod<br/>@@ -378,7 +378,7 @@ here.<br/> <br/> XXX Generate this with:<br/> <br/>- perl Porting/acknowledgements.pl v5.25.3..HEAD<br/>+ perl Porting/acknowledgements.pl v5.25.4..HEAD<br/> <br/> =head1 Reporting Bugs<br/> <br/>diff --git a/Porting/release_schedule.pod b/Porting/release_schedule.pod<br/>index fb1c608..f294bf4 100644<br/>--- a/Porting/release_schedule.pod<br/>+++ b/Porting/release_schedule.pod<br/>@@ -51,7 +51,7 @@ you should reset the version numbers to the next blead series.<br/> 2016-04-08 5.25.0 &acirc;&#156;&#147; Ricardo Signes<br/> 2016-05-20 5.25.1 &acirc;&#156;&#147; Sawyer X<br/> 2016-06-20 5.25.2 &acirc;&#156;&#147; Matthew Horsfall<br/>- 2016-07-20 5.25.3 Steve Hay<br/>+ 2016-07-20 5.25.3 &acirc;&#156;&#147; Steve Hay<br/> 2016-08-20 5.25.4 BinGOs<br/> 2016-09-20 5.25.5 Stevan Little<br/> 2016-10-20 5.25.6 Chad Granum<br/>diff --git a/Porting/todo.pod b/Porting/todo.pod<br/>index b0ca21f..67ed387 100644<br/>--- a/Porting/todo.pod<br/>+++ b/Porting/todo.pod<br/>@@ -485,7 +485,7 @@ Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall.<br/> On these systems, it might be the default compilation mode, and there<br/> is currently no guarantee that passing no use64bitall option to the<br/> Configure process will build a 32bit perl. Implementing -Duse32bit*<br/>-options would be nice for perl 5.25.3.<br/>+options would be nice for perl 5.25.4.<br/> <br/> =head2 Profile Perl - am I hot or not?<br/> <br/>@@ -1205,7 +1205,7 @@ L&lt;http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00339.html&gt;<br/> =head1 Big projects<br/> <br/> Tasks that will get your name mentioned in the description of the &quot;Highlights<br/>-of 5.25.3&quot;<br/>+of 5.25.4&quot;<br/> <br/> =head2 make ithreads more robust<br/> <br/>diff --git a/README.haiku b/README.haiku<br/>index a6a0e19..dddc7a0 100644<br/>--- a/README.haiku<br/>+++ b/README.haiku<br/>@@ -22,9 +22,9 @@ The build procedure is completely standard:<br/> Make perl executable and create a symlink for libperl:<br/> <br/> chmod a+x /boot/common/bin/perl<br/>- cd /boot/common/lib; ln -s perl5/5.25.3/BePC-haiku/CORE/libperl.so .<br/>+ cd /boot/common/lib; ln -s perl5/5.25.4/BePC-haiku/CORE/libperl.so .<br/> <br/>-Replace C&lt;5.25.3&gt; with your respective version of Perl.<br/>+Replace C&lt;5.25.4&gt; with your respective version of Perl.<br/> <br/> =head1 KNOWN PROBLEMS<br/> <br/>diff --git a/README.macosx b/README.macosx<br/>index 4dba4f0..ac7cad6 100644<br/>--- a/README.macosx<br/>+++ b/README.macosx<br/>@@ -10,9 +10,9 @@ perlmacosx - Perl under Mac OS X<br/> <br/> This document briefly describes Perl under Mac OS X.<br/> <br/>- curl -O http://www.cpan.org/src/perl-5.25.3.tar.gz<br/>- tar -xzf perl-5.25.3.tar.gz<br/>- cd perl-5.25.3<br/>+ curl -O http://www.cpan.org/src/perl-5.25.4.tar.gz<br/>+ tar -xzf perl-5.25.4.tar.gz<br/>+ cd perl-5.25.4<br/> ./Configure -des -Dprefix=/usr/local/<br/> make<br/> make test<br/>@@ -20,7 +20,7 @@ This document briefly describes Perl under Mac OS X.<br/> <br/> =head1 DESCRIPTION<br/> <br/>-The latest Perl release (5.25.3 as of this writing) builds without changes<br/>+The latest Perl release (5.25.4 as of this writing) builds without changes<br/> under all versions of Mac OS X from 10.3 &quot;Panther&quot; onwards. <br/> <br/> In order to build your own version of Perl you will need &#39;make&#39;,<br/>diff --git a/README.os2 b/README.os2<br/>index b33ca6e..9ae8f06 100644<br/>--- a/README.os2<br/>+++ b/README.os2<br/>@@ -619,7 +619,7 @@ C&lt;set PERLLIB_PREFIX&gt; in F&lt;Config.sys&gt;, see L&lt;/&quot;C&lt;PERLLIB_PREFIX&gt;&quot;&gt;.<br/> <br/> =item Additional Perl modules<br/> <br/>- unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.25.3/<br/>+ unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.25.4/<br/> <br/> Same remark as above applies. Additionally, if this directory is not<br/> one of directories on @INC (and @INC is influenced by C&lt;PERLLIB_PREFIX&gt;), you<br/>diff --git a/README.vms b/README.vms<br/>index 232a5af..7d64cd4 100644<br/>--- a/README.vms<br/>+++ b/README.vms<br/>@@ -142,11 +142,11 @@ You may need to set up a foreign symbol for the unpacking utility of<br/> choice. Once you have done so, use a command like the following to<br/> unpack the archive:<br/> <br/>- vmstar -xvf perl-5^.25^.3.tar<br/>+ vmstar -xvf perl-5^.25^.4.tar<br/> <br/> Then set default to the top-level source directory like so:<br/> <br/>- set default [.perl-5^.25^.3]<br/>+ set default [.perl-5^.25^.4]<br/> <br/> and proceed with configuration as described in the next section.<br/> <br/>diff --git a/dist/Module-CoreList/Changes b/dist/Module-CoreList/Changes<br/>index 1d4dc7c..b50cf89 100644<br/>--- a/dist/Module-CoreList/Changes<br/>+++ b/dist/Module-CoreList/Changes<br/>@@ -1,3 +1,6 @@<br/>+5.20160820<br/>+ - Updated for v5.25.4<br/>+<br/> 5.20160720<br/> - Updated for v5.25.3<br/> <br/>diff --git a/dist/Module-CoreList/lib/Module/CoreList.pm b/dist/Module-CoreList/lib/Module/CoreList.pm<br/>index 93904f2..3516330 100644<br/>--- a/dist/Module-CoreList/lib/Module/CoreList.pm<br/>+++ b/dist/Module-CoreList/lib/Module/CoreList.pm<br/>@@ -3,7 +3,7 @@ use strict;<br/> use vars qw/$VERSION %released %version %families %upstream<br/> %bug_tracker %deprecated %delta/;<br/> use version;<br/>-$VERSION = &#39;5.20160720&#39;;<br/>+$VERSION = &#39;5.20160820&#39;;<br/> <br/> sub _undelta {<br/> my ($delta) = @_;<br/>@@ -312,6 +312,7 @@ sub changes_between {<br/> 5.025001 =&gt; &#39;2016-05-20&#39;,<br/> 5.025002 =&gt; &#39;2016-06-20&#39;,<br/> 5.025003 =&gt; &#39;2016-07-20&#39;,<br/>+ 5.025004 =&gt; &#39;????-??-??&#39;,<br/> );<br/> <br/> for my $version ( sort { $a &lt;=&gt; $b } keys %released ) {<br/>@@ -12828,6 +12829,18 @@ for my $version ( sort { $a &lt;=&gt; $b } keys %released ) {<br/> removed =&gt; {<br/> }<br/> },<br/>+ 5.025004 =&gt; {<br/>+ delta_from =&gt; 5.025003,<br/>+ changed =&gt; {<br/>+ &#39;B::Op_private&#39; =&gt; &#39;5.025004&#39;,<br/>+ &#39;Config&#39; =&gt; &#39;5.025004&#39;,<br/>+ &#39;Module::CoreList&#39; =&gt; &#39;5.20160820&#39;,<br/>+ &#39;Module::CoreList::TieHashDelta&#39;=&gt; &#39;5.20160820&#39;,<br/>+ &#39;Module::CoreList::Utils&#39;=&gt; &#39;5.20160820&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/> );<br/> <br/> sub is_core<br/>@@ -13503,6 +13516,13 @@ sub is_core<br/> removed =&gt; {<br/> }<br/> },<br/>+ 5.025004 =&gt; {<br/>+ delta_from =&gt; 5.025003,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/> );<br/> <br/> %deprecated = _undelta(\%deprecated);<br/>diff --git a/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm b/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm<br/>index 2bfae68..d9b2bc6 100644<br/>--- a/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm<br/>+++ b/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm<br/>@@ -3,7 +3,7 @@ package Module::CoreList::TieHashDelta;<br/> use strict;<br/> use vars qw($VERSION);<br/> <br/>-$VERSION = &#39;5.20160720&#39;;<br/>+$VERSION = &#39;5.20160820&#39;;<br/> <br/> sub TIEHASH {<br/> my ($class, $changed, $removed, $parent) = @_;<br/>diff --git a/dist/Module-CoreList/lib/Module/CoreList/Utils.pm b/dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/>index 6044292..36dfc6e 100644<br/>--- a/dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/>+++ b/dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/>@@ -5,7 +5,7 @@ use warnings;<br/> use vars qw[$VERSION %utilities];<br/> use Module::CoreList;<br/> <br/>-$VERSION = &#39;5.20160720&#39;;<br/>+$VERSION = &#39;5.20160820&#39;;<br/> <br/> sub utilities {<br/> my $perl = shift;<br/>@@ -1177,6 +1177,13 @@ my %delta = (<br/> removed =&gt; {<br/> }<br/> },<br/>+ 5.025004 =&gt; {<br/>+ delta_from =&gt; 5.025003,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/> );<br/> <br/> %utilities = Module::CoreList::_undelta(\%delta);<br/>diff --git a/hints/catamount.sh b/hints/catamount.sh<br/>index 230eb6d..2a177c6 100644<br/>--- a/hints/catamount.sh<br/>+++ b/hints/catamount.sh<br/>@@ -31,11 +31,11 @@<br/> # mkdir -p /opt/perl-catamount<br/> # mkdir -p /opt/perl-catamount/include<br/> # mkdir -p /opt/perl-catamount/lib<br/>-# mkdir -p /opt/perl-catamount/lib/perl5/5.25.3<br/>+# mkdir -p /opt/perl-catamount/lib/perl5/5.25.4<br/> # mkdir -p /opt/perl-catamount/bin<br/> # cp *.h /opt/perl-catamount/include<br/> # cp libperl.a /opt/perl-catamount/lib<br/>-# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.25.3<br/>+# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.25.4<br/> # cp miniperl perl run.sh cc.sh /opt/perl-catamount/lib<br/> #<br/> # With the headers and the libperl.a you can embed Perl to your Catamount<br/>diff --git a/lib/B/Op_private.pm b/lib/B/Op_private.pm<br/>index bb2d573..7931cb2 100644<br/>--- a/lib/B/Op_private.pm<br/>+++ b/lib/B/Op_private.pm<br/>@@ -118,7 +118,7 @@ package B::Op_private;<br/> our %bits;<br/> <br/> <br/>-our $VERSION = &quot;5.025003&quot;;<br/>+our $VERSION = &quot;5.025004&quot;;<br/> <br/> $bits{$_}{3} = &#39;OPpENTERSUB_AMPER&#39; for qw(entersub rv2cv);<br/> $bits{$_}{6} = &#39;OPpENTERSUB_DB&#39; for qw(entersub rv2cv);<br/>diff --git a/patchlevel.h b/patchlevel.h<br/>index 77fad27..04c2fc8 100644<br/>--- a/patchlevel.h<br/>+++ b/patchlevel.h<br/>@@ -15,7 +15,7 @@<br/> <br/> #define PERL_REVISION 5 /* age */<br/> #define PERL_VERSION 25 /* epoch */<br/>-#define PERL_SUBVERSION 3 /* generation */<br/>+#define PERL_SUBVERSION 4 /* generation */<br/> <br/> /* The following numbers describe the earliest compatible version of<br/> Perl (&quot;compatibility&quot; here being defined as sufficient binary/API<br/>@@ -36,7 +36,7 @@<br/> */<br/> #define PERL_API_REVISION 5<br/> #define PERL_API_VERSION 25<br/>-#define PERL_API_SUBVERSION 3<br/>+#define PERL_API_SUBVERSION 4<br/> /*<br/> XXX Note: The selection of non-default Configure options, such<br/> as -Duselonglong may invalidate these settings. Currently, Configure<br/>diff --git a/plan9/config.plan9 b/plan9/config.plan9<br/>index b2305e7..7769537 100644<br/>--- a/plan9/config.plan9<br/>+++ b/plan9/config.plan9<br/>@@ -3329,8 +3329,8 @@<br/> * This symbol contains the ~name expanded version of PRIVLIB, to be used<br/> * in programs that are not prepared to deal with ~ expansion at run-time.<br/> */<br/>-#define PRIVLIB &quot;/sys/lib/perl/5.25.3&quot; /**/<br/>-#define PRIVLIB_EXP &quot;/sys/lib/perl/5.25.3&quot; /**/<br/>+#define PRIVLIB &quot;/sys/lib/perl/5.25.4&quot; /**/<br/>+#define PRIVLIB_EXP &quot;/sys/lib/perl/5.25.4&quot; /**/<br/> <br/> /* PTRSIZE:<br/> * This symbol contains the size of a pointer, so that the C preprocessor<br/>@@ -3457,9 +3457,9 @@<br/> * removed. The elements in inc_version_list (inc_version_list.U) can<br/> * be tacked onto this variable to generate a list of directories to search.<br/> */<br/>-#define SITELIB &quot;/sys/lib/perl/5.25.3/site_perl&quot; /**/<br/>-#define SITELIB_EXP &quot;/sys/lib/perl/5.25.3/site_perl&quot; /**/<br/>-#define SITELIB_STEM &quot;/sys/lib/perl/5.25.3/site_perl&quot; /**/<br/>+#define SITELIB &quot;/sys/lib/perl/5.25.4/site_perl&quot; /**/<br/>+#define SITELIB_EXP &quot;/sys/lib/perl/5.25.4/site_perl&quot; /**/<br/>+#define SITELIB_STEM &quot;/sys/lib/perl/5.25.4/site_perl&quot; /**/<br/> <br/> /* Size_t_size:<br/> * This symbol holds the size of a Size_t in bytes.<br/>diff --git a/plan9/config_sh.sample b/plan9/config_sh.sample<br/>index 7dd1927..97452ac 100644<br/>--- a/plan9/config_sh.sample<br/>+++ b/plan9/config_sh.sample<br/>@@ -32,12 +32,12 @@ alignbytes=&#39;4&#39;<br/> ansi2knr=&#39;&#39;<br/> aphostname=&#39;/bin/uname -n&#39;<br/> api_revision=&#39;5&#39;<br/>-api_subversion=&#39;3&#39;<br/>+api_subversion=&#39;4&#39;<br/> api_version=&#39;25&#39;<br/>-api_versionstring=&#39;5.25.3&#39;<br/>+api_versionstring=&#39;5.25.4&#39;<br/> ar=&#39;ar&#39;<br/>-archlib=&#39;/sys/lib/perl5/5.25.3/386&#39;<br/>-archlibexp=&#39;/sys/lib/perl5/5.25.3/386&#39;<br/>+archlib=&#39;/sys/lib/perl5/5.25.4/386&#39;<br/>+archlibexp=&#39;/sys/lib/perl5/5.25.4/386&#39;<br/> archname64=&#39;&#39;<br/> archname=&#39;386&#39;<br/> archobjs=&#39;&#39;<br/>@@ -804,17 +804,17 @@ inc_version_list=&#39; &#39;<br/> inc_version_list_init=&#39;0&#39;<br/> incpath=&#39;&#39;<br/> inews=&#39;&#39;<br/>-installarchlib=&#39;/sys/lib/perl/5.25.3/386&#39;<br/>+installarchlib=&#39;/sys/lib/perl/5.25.4/386&#39;<br/> installbin=&#39;/usr/bin&#39;<br/> installman1dir=&#39;/sys/man/1pub&#39;<br/> installman3dir=&#39;/sys/man/2pub&#39;<br/> installprefix=&#39;/usr&#39;<br/> installprefixexp=&#39;/usr&#39;<br/>-installprivlib=&#39;/sys/lib/perl/5.25.3&#39;<br/>+installprivlib=&#39;/sys/lib/perl/5.25.4&#39;<br/> installscript=&#39;/usr/bin&#39;<br/>-installsitearch=&#39;/sys/lib/perl/5.25.3/site_perl/386&#39;<br/>+installsitearch=&#39;/sys/lib/perl/5.25.4/site_perl/386&#39;<br/> installsitebin=&#39;/usr/bin&#39;<br/>-installsitelib=&#39;/sys/lib/perl/5.25.3/site_perl&#39;<br/>+installsitelib=&#39;/sys/lib/perl/5.25.4/site_perl&#39;<br/> installstyle=&#39;lib/perl5&#39;<br/> installusrbinperl=&#39;undef&#39;<br/> installvendorarch=&#39;&#39;<br/>@@ -939,8 +939,8 @@ pmake=&#39;&#39;<br/> pr=&#39;&#39;<br/> prefix=&#39;/usr&#39;<br/> prefixexp=&#39;/usr&#39;<br/>-privlib=&#39;/sys/lib/perl/5.25.3&#39;<br/>-privlibexp=&#39;/sys/lib/perl/5.25.3&#39;<br/>+privlib=&#39;/sys/lib/perl/5.25.4&#39;<br/>+privlibexp=&#39;/sys/lib/perl/5.25.4&#39;<br/> procselfexe=&#39;&#39;<br/> prototype=&#39;define&#39;<br/> ptrsize=&#39;4&#39;<br/>@@ -1005,13 +1005,13 @@ sig_num=&#39;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<br/> sig_num_init=&#39;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, ... [7 chars truncated]<br/> sig_size=&#39;50&#39;<br/> signal_t=&#39;void&#39;<br/>-sitearch=&#39;/sys/lib/perl/5.25.3/site_perl/386&#39;<br/>+sitearch=&#39;/sys/lib/perl/5.25.4/site_perl/386&#39;<br/> sitearchexp=&#39;/sys/lib/perl/site_perl/386&#39;<br/> sitebin=&#39;/usr/bin&#39;<br/> sitebinexp=&#39;/usr/bin&#39;<br/>-sitelib=&#39;/sys/lib/perl/5.25.3/site_perl&#39;<br/>-sitelib_stem=&#39;/sys/lib/perl/5.25.3/site_perl&#39;<br/>-sitelibexp=&#39;/sys/lib/perl/5.25.3/site_perl&#39;<br/>+sitelib=&#39;/sys/lib/perl/5.25.4/site_perl&#39;<br/>+sitelib_stem=&#39;/sys/lib/perl/5.25.4/site_perl&#39;<br/>+sitelibexp=&#39;/sys/lib/perl/5.25.4/site_perl&#39;<br/> siteprefix=&#39;/usr&#39;<br/> siteprefixexp=&#39;/usr&#39;<br/> sizesize=&#39;4&#39;<br/>@@ -1044,7 +1044,7 @@ stdio_stream_array=&#39;&#39;<br/> strerror_r_proto=&#39;0&#39;<br/> strings=&#39;/sys/include/ape/string.h&#39;<br/> submit=&#39;&#39;<br/>-subversion=&#39;3&#39;<br/>+subversion=&#39;4&#39;<br/> sysman=&#39;/sys/man/1pub&#39;<br/> tail=&#39;&#39;<br/> tar=&#39;&#39;<br/>@@ -1126,8 +1126,8 @@ vendorlib_stem=&#39;&#39;<br/> vendorlibexp=&#39;&#39;<br/> vendorprefix=&#39;&#39;<br/> vendorprefixexp=&#39;&#39;<br/>-version=&#39;5.25.3&#39;<br/>-version_patchlevel_string=&#39;version 25 subversion 3&#39;<br/>+version=&#39;5.25.4&#39;<br/>+version_patchlevel_string=&#39;version 25 subversion 4&#39;<br/> versiononly=&#39;undef&#39;<br/> vi=&#39;&#39;<br/> xlibpth=&#39;&#39;<br/>@@ -1141,9 +1141,9 @@ config_args=&#39;&#39;<br/> config_argc=0<br/> PERL_REVISION=5<br/> PERL_VERSION=25<br/>-PERL_SUBVERSION=3<br/>+PERL_SUBVERSION=4<br/> PERL_API_REVISION=5<br/> PERL_API_VERSION=25<br/>-PERL_API_SUBVERSION=3<br/>+PERL_API_SUBVERSION=4<br/> PERL_PATCHLEVEL=<br/> PERL_CONFIG_SH=true<br/>diff --git a/pod/.gitignore b/pod/.gitignore<br/>index 286d32d..50266bb 100644<br/>--- a/pod/.gitignore<br/>+++ b/pod/.gitignore<br/>@@ -53,7 +53,7 @@<br/> /roffitall<br/> <br/> # generated<br/>-/perl5253delta.pod<br/>+/perl5254delta.pod<br/> /perlapi.pod<br/> /perlintern.pod<br/> *.html<br/>diff --git a/pod/perl.pod b/pod/perl.pod<br/>index 0cbaa8d..f8bf742 100644<br/>--- a/pod/perl.pod<br/>+++ b/pod/perl.pod<br/>@@ -180,6 +180,7 @@ aux c2ph h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp<br/> <br/> perlhist Perl history records<br/> perldelta Perl changes since previous version<br/>+ perl5253delta Perl changes in version 5.25.3<br/> perl5252delta Perl changes in version 5.25.2<br/> perl5251delta Perl changes in version 5.25.1<br/> perl5250delta Perl changes in version 5.25.0<br/>diff --git a/pod/perldelta.pod b/pod/perl5253delta.pod<br/>similarity index 99%<br/>copy from pod/perldelta.pod<br/>copy to pod/perl5253delta.pod<br/>index 2607446..bc1b375 100644<br/>--- a/pod/perldelta.pod<br/>+++ b/pod/perl5253delta.pod<br/>@@ -2,7 +2,7 @@<br/> <br/> =head1 NAME<br/> <br/>-perldelta - what is new for perl v5.25.3<br/>+perl5253delta - what is new for perl v5.25.3<br/> <br/> =head1 DESCRIPTION<br/> <br/>diff --git a/pod/perldelta.pod b/pod/perldelta.pod<br/>index 2607446..1fd242a 100644<br/>--- a/pod/perldelta.pod<br/>+++ b/pod/perldelta.pod<br/>@@ -2,414 +2,359 @@<br/> <br/> =head1 NAME<br/> <br/>-perldelta - what is new for perl v5.25.3<br/>+[ this is a template for a new perldelta file. Any text flagged as XXX needs<br/>+to be processed before release. ]<br/>+<br/>+perldelta - what is new for perl v5.25.4<br/> <br/> =head1 DESCRIPTION<br/> <br/>-This document describes differences between the 5.25.2 release and the 5.25.3<br/>+This document describes differences between the 5.25.3 release and the 5.25.4<br/> release.<br/> <br/>-If you are upgrading from an earlier release such as 5.25.1, first read<br/>-L&lt;perl5252delta&gt;, which describes differences between 5.25.1 and 5.25.2.<br/>-<br/>-=head1 Core Enhancements<br/>+If you are upgrading from an earlier release such as 5.25.2, first read<br/>+L&lt;perl5253delta&gt;, which describes differences between 5.25.2 and 5.25.3.<br/> <br/>-=head2 Unicode 9.0 is now supported<br/>+=head1 Notice<br/> <br/>-A list of changes is at L&lt;http://www.unicode.org/versions/Unicode9.0.0/&gt;.<br/>-Modules that are shipped with core Perl but not maintained by p5p do not<br/>-necessarily support Unicode 9.0. L&lt;Unicode::Normalize&gt; does work on 9.0.<br/>+XXX Any important notices here<br/> <br/>-=head2 Use of C&lt;\p{I&lt;script&gt;}&gt; uses the improved Script_Extensions property<br/>+=head1 Core Enhancements<br/> <br/>-Unicode 6.0 introduced an improved form of the Script (C&lt;sc&gt;) property, and<br/>-called it Script_Extensions (C&lt;scx&gt;). As of now, Perl uses this improved<br/>-version when a property is specified as just C&lt;\p{I&lt;script&gt;}&gt;. The meaning of<br/>-compound forms, like C&lt;\p{sc=I&lt;script&gt;}&gt; are unchanged. This should make<br/>-programs be more accurate when determining if a character is used in a given<br/>-script, but there is a slight chance of breakage for programs that very<br/>-specifically needed the old behavior. See L&lt;perlunicode/Scripts&gt;.<br/>+XXX New core language features go here. Summarize user-visible core language<br/>+enhancements. Particularly prominent performance optimisations could go<br/>+here, but most should go in the L&lt;/Performance Enhancements&gt; section.<br/> <br/>-=head2 Declaring a reference to a variable<br/>+[ List each enhancement as a =head2 entry ]<br/> <br/>-As an experimental feature, Perl now allows the referencing operator to come<br/>-after L&lt;C&lt;my()&gt;|perlfunc/my&gt;, L&lt;C&lt;state()&gt;|perlfunc/state&gt;,<br/>-L&lt;C&lt;our()&gt;|perlfunc/our&gt;, or L&lt;C&lt;local()&gt;|perlfunc/local&gt;. This syntax must<br/>-be enabled with C&lt;use feature &#39;declared_refs&#39;&gt;. It is experimental, and will<br/>-warn by default unless C&lt;no warnings &#39;experimental::refaliasing&#39;&gt; is in effect.<br/>-It is intended mainly for use in assignments to references. For example:<br/>+=head1 Security<br/> <br/>- use experimental &#39;refaliasing&#39;, &#39;declared_refs&#39;;<br/>- my \$a = \$b;<br/>+XXX Any security-related notices go here. In particular, any security<br/>+vulnerabilities closed should be noted here rather than in the<br/>+L&lt;/Selected Bug Fixes&gt; section.<br/> <br/>-See L&lt;perlref/Assigning to References&gt; for slightly more detail.<br/>+[ List each security issue as a =head2 entry ]<br/> <br/> =head1 Incompatible Changes<br/> <br/>-=head2 C&lt;${^ENCODING}&gt; has been removed<br/>-<br/>-Consequently, the L&lt;encoding&gt; pragma&#39;s default mode is no longer supported. If<br/>-you still need to write your source code in encodings other than UTF-8, use a<br/>-source filter such as L&lt;Filter::Encoding&gt; on CPAN or L&lt;encoding&gt;&#39;s C&lt;Filter&gt;<br/>-option.<br/>-<br/>-=head2 C&lt;scalar(%hash)&gt; return signature changed<br/>-<br/>-The value returned for C&lt;scalar(%hash)&gt; will no longer show information about<br/>-the buckets allocated in the hash. It will simply return the count of used<br/>-keys. It is thus equivalent to C&lt;0+keys(%hash)&gt;.<br/>-<br/>-A form of backwards compatibility is provided via C&lt;Hash::Util::bucket_ratio()&gt;<br/>-which provides the same behavior as C&lt;scalar(%hash)&gt; provided prior to Perl<br/>-5.25.<br/>+XXX For a release on a stable branch, this section aspires to be:<br/> <br/>-=head1 Modules and Pragmata<br/>-<br/>-=head2 Updated Modules and Pragmata<br/>-<br/>-=over 4<br/>-<br/>-=item *<br/>+ There are no changes intentionally incompatible with 5.XXX.XXX<br/>+ If any exist, they are bugs, and we request that you submit a<br/>+ report. See L&lt;/Reporting Bugs&gt; below.<br/> <br/>-L&lt;bignum&gt; has been upgraded from version 0.42 to 0.43.<br/>+[ List each incompatible change as a =head2 entry ]<br/> <br/>-=item *<br/>+=head1 Deprecations<br/> <br/>-L&lt;Data::Dumper&gt; has been upgraded from version 2.160 to 2.161.<br/>+XXX Any deprecated features, syntax, modules etc. should be listed here.<br/> <br/>-=item *<br/>+=head2 Module removals<br/> <br/>-L&lt;Devel::PPPort&gt; has been upgraded from version 3.32 to 3.35.<br/>+XXX Remove this section if inapplicable.<br/> <br/>-=item *<br/>+The following modules will be removed from the core distribution in a<br/>+future release, and will at that time need to be installed from CPAN.<br/>+Distributions on CPAN which require these modules will need to list them as<br/>+prerequisites.<br/> <br/>-L&lt;Encode&gt; has been upgraded from version 2.80 to 2.84.<br/>+The core versions of these modules will now issue C&lt;&quot;deprecated&quot;&gt;-category<br/>+warnings to alert you to this fact. To silence these deprecation warnings,<br/>+install the modules in question from CPAN.<br/> <br/>-=item *<br/>+Note that these are (with rare exceptions) fine modules that you are encouraged<br/>+to continue to use. Their disinclusion from core primarily hinges on their<br/>+necessity to bootstrapping a fully functional, CPAN-capable Perl installation,<br/>+not usually on concerns over their design.<br/> <br/>-L&lt;encoding&gt; has been upgraded from version 2.17 to 2.17_01.<br/>+=over<br/> <br/>-This module&#39;s default mode is no longer supported as of Perl 5.25.3. It now<br/>-dies when imported, unless the C&lt;Filter&gt; option is being used.<br/>+=item XXX<br/> <br/>-=item *<br/>+XXX Note that deprecated modules should be listed here even if they are listed<br/>+as an updated module in the L&lt;/Modules and Pragmata&gt; section.<br/> <br/>-L&lt;encoding::warnings&gt; has been upgraded from version 0.12 to 0.13.<br/>+=back<br/> <br/>-This module is no longer supported as of Perl 5.25.3. It emits a warning to<br/>-that effect and then does nothing.<br/>+[ List each other deprecation as a =head2 entry ]<br/> <br/>-=item *<br/>+=head1 Performance Enhancements<br/> <br/>-L&lt;ExtUtils::ParseXS&gt; has been upgraded from version 3.32 to 3.33.<br/>+XXX Changes which enhance performance without changing behaviour go here.<br/>+There may well be none in a stable release.<br/> <br/>-=item *<br/>+[ List each enhancement as a =item entry ]<br/> <br/>-L&lt;ExtUtils::Typemaps&gt; has been upgraded from version 3.32 to 3.33.<br/>+=over 4<br/> <br/> =item *<br/> <br/>-L&lt;feature&gt; has been upgraded from version 1.44 to 1.45.<br/>+XXX<br/> <br/>-=item *<br/>+=back<br/> <br/>-L&lt;Hash::Util&gt; has been upgraded from version 0.19 to 0.20.<br/>+=head1 Modules and Pragmata<br/> <br/>-=item *<br/>+XXX All changes to installed files in F&lt;cpan/&gt;, F&lt;dist/&gt;, F&lt;ext/&gt; and F&lt;lib/&gt;<br/>+go here. If Module::CoreList is updated, generate an initial draft of the<br/>+following sections using F&lt;Porting/corelist-perldelta.pl&gt;. A paragraph summary<br/>+for important changes should then be added by hand. In an ideal world,<br/>+dual-life modules would have a F&lt;Changes&gt; file that could be cribbed.<br/> <br/>-L&lt;Math::BigInt&gt; has been upgraded from version 1.999715 to 1.999726.<br/>+[ Within each section, list entries as a =item entry ]<br/> <br/>-=item *<br/>+=head2 New Modules and Pragmata<br/> <br/>-L&lt;Math::BigInt::FastCalc&gt; has been upgraded from version 0.40 to 0.42.<br/>+=over 4<br/> <br/> =item *<br/> <br/>-L&lt;Math::BigRat&gt; has been upgraded from version 0.260802 to 0.260804.<br/>-<br/>-=item *<br/>+XXX<br/> <br/>-L&lt;Module::CoreList&gt; has been upgraded from version 5.20160620 to 5.20160720.<br/>+=back<br/> <br/>-=item *<br/>+=head2 Updated Modules and Pragmata<br/> <br/>-L&lt;Parse::CPAN::Meta&gt; has been upgraded from version 1.4417 to 1.4422.<br/>+=over 4<br/> <br/> =item *<br/> <br/>-L&lt;Perl::OSType&gt; has been upgraded from version 1.009 to 1.010.<br/>+L&lt;XXX&gt; has been upgraded from version A.xx to B.yy.<br/> <br/>-=item *<br/>-<br/>-L&lt;Test::Simple&gt; has been upgraded from version 1.302026 to 1.302045.<br/>+=back<br/> <br/>-=item *<br/>+=head2 Removed Modules and Pragmata<br/> <br/>-L&lt;Time::HiRes&gt; has been upgraded from version 1.9734 to 1.9739.<br/>+=over 4<br/> <br/> =item *<br/> <br/>-L&lt;Unicode::UCD&gt; has been upgraded from version 0.65 to 0.66.<br/>+XXX<br/> <br/>-=item *<br/>+=back<br/> <br/>-L&lt;version&gt; has been upgraded from version 0.9916 to 0.9917.<br/>+=head1 Documentation<br/> <br/>-=item *<br/>+XXX Changes to files in F&lt;pod/&gt; go here. Consider grouping entries by<br/>+file and be sure to link to the appropriate page, e.g. L&lt;perlfunc&gt;.<br/> <br/>-L&lt;warnings&gt; has been upgraded from version 1.36 to 1.37.<br/>+=head2 New Documentation<br/> <br/>-=item *<br/>+XXX Changes which create B&lt;new&gt; files in F&lt;pod/&gt; go here.<br/> <br/>-L&lt;XSLoader&gt; has been upgraded from version 0.21 to 0.22, fixing a security hole<br/>-in which binary files could be loaded from a path outside of<br/>-L&lt;C&lt;@INC&gt;|perlvar/@INC&gt;.<br/>+=head3 L&lt;XXX&gt;<br/> <br/>-=back<br/>-<br/>-=head1 Documentation<br/>+XXX Description of the purpose of the new file here<br/> <br/> =head2 Changes to Existing Documentation<br/> <br/>-=head3 L&lt;perldata&gt; and L&lt;perltie&gt;<br/>+XXX Changes which significantly change existing files in F&lt;pod/&gt; go here.<br/>+However, any changes to F&lt;pod/perldiag.pod&gt; should go in the L&lt;/Diagnostics&gt;<br/>+section.<br/>+<br/>+=head3 L&lt;XXX&gt;<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-Updated documentation of C&lt;scalar(%hash)&gt;. See L&lt;/scalar(%hash) return<br/>-signature changed&gt; above.<br/>+XXX Description of the change here<br/> <br/> =back<br/> <br/>-=head3 L&lt;perlexperiment&gt; and L&lt;perlref&gt;<br/>+=head1 Diagnostics<br/> <br/>-=over 4<br/>+The following additions or changes have been made to diagnostic output,<br/>+including warnings and fatal error messages. For the complete list of<br/>+diagnostic messages, see L&lt;perldiag&gt;.<br/> <br/>-=item *<br/>+XXX New or changed warnings emitted by the core&#39;s C&lt;C&gt; code go here. Also<br/>+include any changes in L&lt;perldiag&gt; that reconcile it to the C&lt;C&gt; code.<br/> <br/>-Documented new feature: See L&lt;/Declaring a reference to a variable&gt; above.<br/>+=head2 New Diagnostics<br/> <br/>-=back<br/>+XXX Newly added diagnostic messages go under here, separated into New Errors<br/>+and New Warnings<br/> <br/>-=head3 L&lt;perlfunc&gt;<br/>+=head3 New Errors<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-Clarified documentation of L&lt;C&lt;seek()&gt;|perlfunc/seek&gt;,<br/>-L&lt;C&lt;tell()&gt;|perlfunc/tell&gt; and L&lt;C&lt;sysseek()&gt;|perlfunc/sysseek&gt;.<br/>-L&lt;[perl #128607]|https://rt.perl.org/Public/Bug/Display.html?id=128607&gt;<br/>-<br/>-=item *<br/>-<br/>-Removed obsolete documentation of L&lt;C&lt;study()&gt;|perlfunc/study&gt;.<br/>+XXX L&lt;message|perldiag/&quot;message&quot;&gt;<br/> <br/> =back<br/> <br/>-=head3 L&lt;perlunicode&gt;<br/>+=head3 New Warnings<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-Documented change to C&lt;\p{I&lt;script&gt;}&gt; to now use the improved Script_Extensions<br/>-property. See L&lt;/Use of \p{script} uses the improved Script_Extensions<br/>-property&gt; above.<br/>-<br/>-=item *<br/>-<br/>-Updated the text to correspond with changes in Unicode UTS#18, concerning<br/>-regular expressions, and Perl compatibility with what it says.<br/>+XXX L&lt;message|perldiag/&quot;message&quot;&gt;<br/> <br/> =back<br/> <br/>-=head3 L&lt;perlvar&gt;<br/>+=head2 Changes to Existing Diagnostics<br/>+<br/>+XXX Changes (i.e. rewording) of diagnostic messages go here<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-Removed obsolete documentation of C&lt;${^ENCODING}&gt;. See L&lt;/${^ENCODING} has<br/>-been removed&gt; above.<br/>+XXX Describe change here<br/> <br/> =back<br/> <br/>-=head1 Diagnostics<br/>+=head1 Utility Changes<br/> <br/>-The following additions or changes have been made to diagnostic output,<br/>-including warnings and fatal error messages. For the complete list of<br/>-diagnostic messages, see L&lt;perldiag&gt;.<br/>+XXX Changes to installed programs such as F&lt;perlbug&gt; and F&lt;xsubpp&gt; go here.<br/>+Most of these are built within the directory F&lt;utils&gt;.<br/> <br/>-=head2 New Diagnostics<br/>+[ List utility changes as a =head2 entry for each utility and =item<br/>+entries for each change<br/>+Use L&lt;XXX&gt; with program names to get proper documentation linking. ]<br/> <br/>-=head3 New Errors<br/>+=head2 L&lt;XXX&gt;<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-L&lt;The experimental declared_refs feature is not enabled|perldiag/&quot;The experimental declared_refs feature is not enabled&quot;&gt;<br/>+XXX<br/> <br/>-(F) To declare references to variables, as in C&lt;my \%x&gt;, you must first enable<br/>-the feature:<br/>+=back<br/> <br/>- no warnings &quot;experimental::declared_refs&quot;;<br/>- use feature &quot;declared_refs&quot;;<br/>+=head1 Configuration and Compilation<br/> <br/>-=back<br/>+XXX Changes to F&lt;Configure&gt;, F&lt;installperl&gt;, F&lt;installman&gt;, and analogous tools<br/>+go here. Any other changes to the Perl build process should be listed here.<br/>+However, any platform-specific changes should be listed in the<br/>+L&lt;/Platform Support&gt; section, instead.<br/> <br/>-=head3 New Warnings<br/>+[ List changes as a =item entry ].<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-L&lt;Declaring references is experimental|perldiag/&quot;Declaring references is experimental&quot;&gt;<br/>-<br/>-(S experimental::declared_refs) This warning is emitted if you use a reference<br/>-constructor on the right-hand side of C&lt;my()&gt;, C&lt;state()&gt;, C&lt;our()&gt;, or<br/>-C&lt;local()&gt;. Simply suppress the warning if you want to use the feature, but<br/>-know that in doing so you are taking the risk of using an experimental feature<br/>-which may change or be removed in a future Perl version:<br/>-<br/>- no warnings &quot;experimental::declared_refs&quot;;<br/>- use feature &quot;declared_refs&quot;;<br/>- $fooref = my \$foo;<br/>+XXX<br/> <br/>-=item *<br/>-<br/>-L&lt;C&lt;${^ENCODING}&gt; is no longer supported|perldiag/&quot;${^ENCODING} is no longer supported&quot;&gt;<br/>+=back<br/> <br/>-(D deprecated) The special variable C&lt;${^ENCODING}&gt;, formerly used to implement<br/>-the C&lt;encoding&gt; pragma, is no longer supported as of Perl 5.26.0.<br/>+=head1 Testing<br/> <br/>-=back<br/>+XXX Any significant changes to the testing of a freshly built perl should be<br/>+listed here. Changes which create B&lt;new&gt; files in F&lt;t/&gt; go here as do any<br/>+large changes to the testing harness (e.g. when parallel testing was added).<br/>+Changes to existing files in F&lt;t/&gt; aren&#39;t worth summarizing, although the bugs<br/>+that they represent may be covered elsewhere.<br/> <br/>-=head1 Configuration and Compilation<br/>+[ List each test improvement as a =item entry ]<br/> <br/> =over 4<br/> <br/> =item *<br/> <br/>-F&lt;Configure&gt; now aborts if both &quot;-Duselongdouble&quot; and &quot;-Dusequadmath&quot; are<br/>-requested.<br/>-L&lt;[perl #126203]|https://rt.perl.org/Public/Bug/Display.html?id=126203&gt;<br/>+XXX<br/> <br/>-=item *<br/>+=back<br/> <br/>-Fixed a bug in which F&lt;Configure&gt; could append &quot;-quadmath&quot; to the archname even<br/>-if it was already present.<br/>-L&lt;[perl #128538]|https://rt.perl.org/Public/Bug/Display.html?id=128538&gt;<br/>+=head1 Platform Support<br/> <br/>-=item *<br/>+XXX Any changes to platform support should be listed in the sections below.<br/> <br/>-Clang builds with &quot;-DPERL_GLOBAL_STRUCT&quot; or &quot;-DPERL_GLOBAL_STRUCT_PRIVATE&quot; have<br/>-been fixed (by disabling Thread Safety Analysis for these configurations).<br/>+[ Within the sections, list each platform as a =item entry with specific<br/>+changes as paragraphs below it. ]<br/> <br/>-=back<br/>+=head2 New Platforms<br/> <br/>-=head1 Testing<br/>+XXX List any platforms that this version of perl compiles on, that previous<br/>+versions did not. These will either be enabled by new files in the F&lt;hints/&gt;<br/>+directories, or new subdirectories and F&lt;README&gt; files at the top level of the<br/>+source tree.<br/> <br/> =over 4<br/> <br/>-=item *<br/>-<br/>-A new test script, F&lt;t/op/decl-refs.t&gt;, has been added to test the new feature,<br/>-&quot;Declaring a reference to a variable&quot;.<br/>-<br/>-=item *<br/>+=item XXX-some-platform<br/> <br/>-A new test script, F&lt;t/re/anyof.t&gt;, has been added to test that the ANYOF nodes<br/>-generated by bracketed character classes are as expected.<br/>+XXX<br/> <br/> =back<br/> <br/>-=head1 Platform Support<br/>+=head2 Discontinued Platforms<br/> <br/>-=head2 Platform-Specific Notes<br/>+XXX List any platforms that this version of perl no longer compiles on.<br/> <br/> =over 4<br/> <br/>-=item VAX<br/>+=item XXX-some-platform<br/> <br/>-VAX floating point formats are now supported.<br/>+XXX<br/> <br/> =back<br/> <br/>-=head1 Selected Bug Fixes<br/>+=head2 Platform-Specific Notes<br/> <br/>-=over 4<br/>+XXX List any changes for specific platforms. This could include configuration<br/>+and compilation changes or changes in portability/compatibility. However,<br/>+changes within modules for platforms should generally be listed in the<br/>+L&lt;/Modules and Pragmata&gt; section.<br/> <br/>-=item *<br/>+=over 4<br/> <br/>-An assertion failure with C&lt;%: = 0&gt; has been fixed.<br/>-L&lt;[perl #128238]|https://rt.perl.org/Public/Bug/Display.html?id=128238&gt;<br/>+=item XXX-some-platform<br/> <br/>-=item *<br/>+XXX<br/> <br/>-In Perl 5.18, the parsing of C&lt;&quot;$foo::$bar&quot;&gt; was accidentally changed, such<br/>-that it would be treated as C&lt;$foo.&quot;::&quot;.$bar&gt;. The previous behavior, which<br/>-was to parse it as C&lt;$foo:: . $bar&gt;, has been restored.<br/>-L&lt;[perl #128478]|https://rt.perl.org/Public/Bug/Display.html?id=128478&gt;<br/>+=back<br/> <br/>-=item *<br/>+=head1 Internal Changes<br/> <br/>-Since Perl 5.20, line numbers have been off by one when perl is invoked with<br/>-the B&lt;-x&gt; switch. This has been fixed.<br/>-L&lt;[perl #128508]|https://rt.perl.org/Public/Bug/Display.html?id=128508&gt;<br/>+XXX Changes which affect the interface available to C&lt;XS&gt; code go here. Other<br/>+significant internal changes for future core maintainers should be noted as<br/>+well.<br/> <br/>-=item *<br/>+[ List each change as a =item entry ]<br/> <br/>-Vivifying a subroutine stub in a deleted stash (e.g., C&lt;delete $My::{&quot;Foo::&quot;};<br/>-\&amp;My::Foo::foo&gt;) no longer crashes. It had begun crashing in Perl 5.18.<br/>-L&lt;[perl #128532]|https://rt.perl.org/Public/Bug/Display.html?id=128532&gt;<br/>+=over 4<br/> <br/> =item *<br/> <br/>-Some obscure cases of subroutines and file handles being freed at the same time<br/>-could result in crashes, but have been fixed. The crash was introduced in Perl<br/>-5.22.<br/>-L&lt;[perl #128597]|https://rt.perl.org/Public/Bug/Display.html?id=128597&gt;<br/>+XXX<br/> <br/>-=item *<br/>+=back<br/> <br/>-Code that looks for a variable name associated with an uninitialized value<br/>-could cause an assertion in cases where magic is involved, such as<br/>-C&lt;$ISA[0][0]&gt;. This has now been fixed.<br/>-L&lt;[perl #128253]|https://rt.perl.org/Public/Bug/Display.html?id=128253&gt;<br/>+=head1 Selected Bug Fixes<br/> <br/>-=item *<br/>+XXX Important bug fixes in the core language are summarized here. Bug fixes in<br/>+files in F&lt;ext/&gt; and F&lt;lib/&gt; are best summarized in L&lt;/Modules and Pragmata&gt;.<br/>+<br/>+[ List each fix as a =item entry ]<br/> <br/>-A crash caused by code generating the warning &quot;Subroutine STASH::NAME<br/>-redefined&quot; in cases such as C&lt;sub P::f{} undef *P::; *P::f =sub{};&gt; has been<br/>-fixed. In these cases, where the STASH is missing, the warning will now appear<br/>-as &quot;Subroutine NAME redefined&quot;.<br/>-L&lt;[perl #128257]|https://rt.perl.org/Public/Bug/Display.html?id=128257&gt;<br/>+=over 4<br/> <br/> =item *<br/> <br/>-Fixed an assertion triggered by some code that handles deprecated behavior in<br/>-formats, e.g. in cases like this:<br/>+XXX<br/>+<br/>+=back<br/> <br/>- format STDOUT =<br/>- @<br/>- 0&quot;$x&quot;<br/>+=head1 Known Problems<br/> <br/>-L&lt;[perl #128255]|https://rt.perl.org/Public/Bug/Display.html?id=128255&gt;<br/>+XXX Descriptions of platform agnostic bugs we know we can&#39;t fix go here. Any<br/>+tests that had to be C&lt;TODO&gt;ed for the release would be noted here. Unfixed<br/>+platform specific bugs also go here.<br/> <br/>-=item *<br/>+[ List each fix as a =item entry ]<br/> <br/>-A possible divide by zero in string transformation code on Windows has been<br/>-avoided, fixing a crash when collating an empty string.<br/>-L&lt;[perl #128618]|https://rt.perl.org/Public/Bug/Display.html?id=128618&gt;<br/>+=over 4<br/> <br/> =item *<br/> <br/>-Some regular expression parsing glitches could lead to assertion failures with<br/>-regular expressions such as C&lt;/(?&lt;=/&gt; and C&lt;/(?&lt;!/&gt;. This has now been fixed.<br/>-L&lt;[perl #128170]|https://rt.perl.org/Public/Bug/Display.html?id=128170&gt;<br/>+XXX<br/> <br/> =back<br/> <br/>@@ -419,53 +364,26 @@ L&lt;[perl #128170]|https://rt.perl.org/Public/Bug/Display.html?id=128170&gt;<br/> <br/> =item *<br/> <br/>-Parsing bad POSIX charclasses no longer leaks memory. This was fixed in Perl<br/>-5.25.2<br/>-L&lt;[perl #128313]|https://rt.perl.org/Public/Bug/Display.html?id=128313&gt;<br/>-<br/>-=item *<br/>-<br/>-Fixed issues with recursive regexes. The behavior was fixed in Perl 5.24.0.<br/>-L&lt;[perl #126182]|https://rt.perl.org/Public/Bug/Display.html?id=126182&gt;<br/>+XXX Add anything here that we forgot to add, or were mistaken about, in<br/>+the perldelta of a previous release.<br/> <br/> =back<br/> <br/>-=head1 Acknowledgements<br/>-<br/>-Perl 5.25.3 represents approximately 4 weeks of development since Perl 5.25.2<br/>-and contains approximately 67,000 lines of changes across 510 files from 25<br/>-authors.<br/>+=head1 Obituary<br/> <br/>-Excluding auto-generated files, documentation and release tools, there were<br/>-approximately 40,000 lines of changes to 290 .pm, .t, .c and .h files.<br/>+XXX If any significant core contributor has died, we&#39;ve added a short obituary<br/>+here.<br/> <br/>-Perl continues to flourish into its third decade thanks to a vibrant community<br/>-of users and developers. The following people are known to have contributed<br/>-the improvements that became Perl 5.25.3:<br/>-<br/>-Aaron Crane, &Atilde;&#134;var Arnfj&Atilde;&para;r&Atilde;&deg; Bjarmason, Alex Vandiver, Aristotle Pagaltzis,<br/>-Chad Granum, Chris &#39;BinGOs&#39; Williams, Chris Lamb, Craig A. Berry, Dan Collins,<br/>-David Mitchell, Father Chrysostomos, H.Merijn Brand, Jarkko Hietaniemi, Karl<br/>-Williamson, Lukas Mai, Matthew Horsfall, Salvador Fandi&Atilde;&plusmn;o, Sawyer X,<br/>-S&Atilde;&copy;bastien Aperghis-Tramoni, Steffen M&Atilde;&frac14;ller, Steve Hay, Todd Rinaldo, Tony<br/>-Cook, Unicode Consortium, Yves Orton.<br/>-<br/>-The list above is almost certainly incomplete as it is automatically generated<br/>-from version control history. In particular, it does not include the names of<br/>-the (very much appreciated) contributors who reported issues to the Perl bug<br/>-tracker.<br/>+=head1 Acknowledgements<br/> <br/>-Many of the changes included in this version originated in the CPAN modules<br/>-included in Perl&#39;s core. We&#39;re grateful to the entire CPAN community for<br/>-helping Perl to flourish.<br/>+XXX Generate this with:<br/> <br/>-For a more complete list of all of Perl&#39;s historical contributors, please see<br/>-the F&lt;AUTHORS&gt; file in the Perl source distribution.<br/>+ perl Porting/acknowledgements.pl v5.25.3..HEAD<br/> <br/> =head1 Reporting Bugs<br/> <br/>-If you find what you think is a bug, you might check the perl bug database at<br/>-L&lt;https://rt.perl.org/&gt; . There may also be information at<br/>+If you find what you think is a bug, you might check the perl bug database<br/>+at L&lt;https://rt.perl.org/&gt; . There may also be information at<br/> L&lt;http://www.perl.org/&gt; , the Perl Home Page.<br/> <br/> If you believe you have an unreported bug, please run the L&lt;perlbug&gt; program<br/>@@ -475,8 +393,8 @@ will be sent off to perlbug@perl.org to be analysed by the Perl porting team.<br/> <br/> If the bug you are reporting has security implications which make it<br/> inappropriate to send to a publicly archived mailing list, then see<br/>-L&lt;perlsec/SECURITY VULNERABILITY CONTACT INFORMATION&gt; for details of how to<br/>-report the issue.<br/>+L&lt;perlsec/SECURITY VULNERABILITY CONTACT INFORMATION&gt;<br/>+for details of how to report the issue.<br/> <br/> =head1 SEE ALSO<br/> <br/>diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template<br/>index 786cbcc..de4379d 100644<br/>--- a/vms/descrip_mms.template<br/>+++ b/vms/descrip_mms.template<br/>@@ -307,7 +307,7 @@ utils : $(utils1) $(utils2) $(utils3) $(utils4) $(utils5)<br/> extra.pods : miniperl<br/> @ @extra_pods.com<br/> <br/>-PERLDELTA_CURRENT = [.pod]perl5253delta.pod<br/>+PERLDELTA_CURRENT = [.pod]perl5254delta.pod<br/> <br/> $(PERLDELTA_CURRENT) : [.pod]perldelta.pod<br/> Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)<br/>diff --git a/win32/GNUmakefile b/win32/GNUmakefile<br/>index 112ea4c..45df09c 100644<br/>--- a/win32/GNUmakefile<br/>+++ b/win32/GNUmakefile<br/>@@ -67,7 +67,7 @@ INST_TOP := $(INST_DRV)\perl<br/> # versioned installation can be obtained by setting INST_TOP above to a<br/> # path that includes an arbitrary version string.<br/> #<br/>-#INST_VER := \5.25.3<br/>+#INST_VER := \5.25.4<br/> <br/> #<br/> # Comment this out if you DON&#39;T want your perl installation to have<br/>@@ -1544,7 +1544,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile<br/> copy ..\README.tw ..\pod\perltw.pod<br/> copy ..\README.vos ..\pod\perlvos.pod<br/> copy ..\README.win32 ..\pod\perlwin32.pod<br/>- copy ..\pod\perldelta.pod ..\pod\perl5253delta.pod<br/>+ copy ..\pod\perldelta.pod ..\pod\perl5254delta.pod<br/> $(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)<br/> $(MINIPERL) -I..\lib ..\autodoc.pl ..<br/> $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..<br/>@@ -1641,7 +1641,7 @@ distclean: realclean<br/> -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API<br/> -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS<br/> -cd $(PODDIR) &amp;&amp; del /f *.html *.bat roffitall \<br/>- perl5253delta.pod perlaix.pod perlamiga.pod perlandroid.pod \<br/>+ perl5254delta.pod perlaix.pod perlamiga.pod perlandroid.pod \<br/> perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \<br/> perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \<br/> perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \<br/>diff --git a/win32/Makefile b/win32/Makefile<br/>index 0092dda..e45cb11 100644<br/>--- a/win32/Makefile<br/>+++ b/win32/Makefile<br/>@@ -38,7 +38,7 @@ INST_TOP = $(INST_DRV)\perl<br/> # versioned installation can be obtained by setting INST_TOP above to a<br/> # path that includes an arbitrary version string.<br/> #<br/>-#INST_VER = \5.25.3<br/>+#INST_VER = \5.25.4<br/> <br/> #<br/> # Comment this out if you DON&#39;T want your perl installation to have<br/>@@ -1215,7 +1215,7 @@ utils: $(PERLEXE) ..\utils\Makefile<br/> copy ..\README.tw ..\pod\perltw.pod<br/> copy ..\README.vos ..\pod\perlvos.pod<br/> copy ..\README.win32 ..\pod\perlwin32.pod<br/>- copy ..\pod\perldelta.pod ..\pod\perl5253delta.pod<br/>+ copy ..\pod\perldelta.pod ..\pod\perl5254delta.pod<br/> cd ..\win32<br/> $(PERLEXE) $(PL2BAT) $(UTILS)<br/> $(MINIPERL) -I..\lib ..\autodoc.pl ..<br/>@@ -1314,7 +1314,7 @@ distclean: realclean<br/> -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API<br/> -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS<br/> -cd $(PODDIR) &amp;&amp; del /f *.html *.bat roffitall \<br/>- perl5253delta.pod perlaix.pod perlamiga.pod perlandroid.pod \<br/>+ perl5254delta.pod perlaix.pod perlamiga.pod perlandroid.pod \<br/> perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \<br/> perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \<br/> perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \<br/>diff --git a/win32/makefile.mk b/win32/makefile.mk<br/>index 58abd45..629045e 100644<br/>--- a/win32/makefile.mk<br/>+++ b/win32/makefile.mk<br/>@@ -44,7 +44,7 @@ INST_TOP *= $(INST_DRV)\perl<br/> # versioned installation can be obtained by setting INST_TOP above to a<br/> # path that includes an arbitrary version string.<br/> #<br/>-#INST_VER *= \5.25.3<br/>+#INST_VER *= \5.25.4<br/> <br/> #<br/> # Comment this out if you DON&#39;T want your perl installation to have<br/>@@ -1511,7 +1511,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile<br/> copy ..\README.tw ..\pod\perltw.pod<br/> copy ..\README.vos ..\pod\perlvos.pod<br/> copy ..\README.win32 ..\pod\perlwin32.pod<br/>- copy ..\pod\perldelta.pod ..\pod\perl5253delta.pod<br/>+ copy ..\pod\perldelta.pod ..\pod\perl5254delta.pod<br/> $(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)<br/> $(MINIPERL) -I..\lib ..\autodoc.pl ..<br/> $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..<br/>@@ -1609,7 +1609,7 @@ distclean: realclean<br/> -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API<br/> -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS<br/> -cd $(PODDIR) &amp;&amp; del /f *.html *.bat roffitall \<br/>- perl5253delta.pod perlaix.pod perlamiga.pod perlandroid.pod \<br/>+ perl5254delta.pod perlaix.pod perlamiga.pod perlandroid.pod \<br/> perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \<br/> perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \<br/> perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \<br/>diff --git a/win32/pod.mak b/win32/pod.mak<br/>index 4eef053..730da8f 100644<br/>--- a/win32/pod.mak<br/>+++ b/win32/pod.mak<br/>@@ -48,6 +48,7 @@ POD = perl.pod \<br/> perl5251delta.pod \<br/> perl5252delta.pod \<br/> perl5253delta.pod \<br/>+ perl5254delta.pod \<br/> perl561delta.pod \<br/> perl56delta.pod \<br/> perl581delta.pod \<br/>@@ -190,6 +191,7 @@ MAN = perl.man \<br/> perl5251delta.man \<br/> perl5252delta.man \<br/> perl5253delta.man \<br/>+ perl5254delta.man \<br/> perl561delta.man \<br/> perl56delta.man \<br/> perl581delta.man \<br/>@@ -332,6 +334,7 @@ HTML = perl.html \<br/> perl5251delta.html \<br/> perl5252delta.html \<br/> perl5253delta.html \<br/>+ perl5254delta.html \<br/> perl561delta.html \<br/> perl56delta.html \<br/> perl581delta.html \<br/>@@ -474,6 +477,7 @@ TEX = perl.tex \<br/> perl5251delta.tex \<br/> perl5252delta.tex \<br/> perl5253delta.tex \<br/>+ perl5254delta.tex \<br/> perl561delta.tex \<br/> perl56delta.tex \<br/> perl581delta.tex \<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47675.html Fri, 22 Jul 2016 01:30:58 +0000 [perl.git] annotated tag v5.25.3, created. v5.25.3 by Steve Hay via perl5-changes In perl.git, the annotated tag v5.25.3 has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/65fc7836b536eeece03e6b021cac681319c391dd?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at 65fc7836b536eeece03e6b021cac681319c391dd (tag)<br/> tagging c137098022dcef5e7ea32608e5299276efea6457 (commit)<br/> replaces v5.25.2<br/> tagged by Steve Hay<br/> on Wed Jul 20 15:27:52 2016 +0100<br/><br/>- Log -----------------------------------------------------------------<br/>Perl 5.25.3<br/><br/>Aaron Crane (1):<br/> pod/perldata.pod: fix tiny typo<br/><br/>Alex Vandiver (1):<br/> RT now imports new tags automatically<br/><br/>Aristotle Pagaltzis (5):<br/> Module::CoreList: prepare for better legibility of upcoming patch<br/> Module::CoreList: cut TieHashDelta out of everybody&acirc;&#128;&#153;s life<br/> perlfunc: unrearrange sysseek doc to prepare next patch<br/> perlfunc: fix seek/tell/sysseek byte offset note akwardness<br/> perlfunc: remove obsolete study docs<br/><br/>Chad Granum (1):<br/> Update Test-Simple to 1.302037<br/><br/>Chris &#39;BinGOs&#39; Williams (2):<br/> Fix Maintainers.pl after 94e22bd6<br/> Update Time-HiRes to CPAN version 1.9735<br/><br/>Chris Lamb (1):<br/> Make the build reproducible.<br/><br/>Craig A. Berry (3):<br/> svpeek.t: $? is localized now.<br/> Skip EUMM subdirscomplex test on VMS.<br/> Use catfile, not catdir in metadata.t.<br/><br/>Dan Collins (3):<br/> t/re/regexp.t: Better formatting for test failures<br/> t/re/regexp.t: Remove extra semicolons from output.<br/> Configure: clarify &quot;version-specific&quot;<br/><br/>David Mitchell (29):<br/> PerlIO-encoding/t/fallback.t: test for warning<br/> Perl_my_vsnprintf: avoid compiler warning<br/> uninit warning from $h{\const} coredumped<br/> Revert &quot;Update Time-HiRes to CPAN version 1.9735&quot;<br/> only treat stash entries with .*:: as sub-stashes<br/> pp_aelemfast: skip av_fetch() for simple cases<br/> pp_aelemfast: always extend stack<br/> S_lvref() OP_[AH]SLICE =&gt; OP_LVREFSLICE flag issue<br/> Add test for RT #128252<br/> doeval_compile(): remove dead code<br/> tidy doeval_compile()<br/> harmonise die_unwind, doeval_compile, leaveeval<br/> expand and rename S_undo_inc_then_croak()<br/> cx_popeval(): don&#39;t mortalise blk_eval.old_namesv<br/> die_unwind(): mortalise, not mortalcopy the err SV<br/> FREETMPS when leaving eval, even when void/dying<br/> [MERGE] make eval scope exit free temps<br/> op_lvalue_flags(): silence compiler warning<br/> Revert &quot;FREETMPS when leaving eval, even when void/dying&quot;<br/> undeprecate hv_bucket_ratio()<br/> handle magic in multideref &quot;unit val&quot; var names<br/> SEGV in &quot;Subroutine redefined&quot; warning<br/> RT #128255: Assert fail in S_sublex_done<br/> fix removal of PL_(lex_)encoding under threads<br/> op.c: explain op_next generation better<br/> fix build on clang plus -DPERL_GLOBAL_STRUCT<br/> bump feature.pm $VERSION<br/> perlop: clarify that entries aren&#39;t in prec order<br/> rename &quot;WORD&quot; lexical token to &quot;BAREWORD&quot;<br/><br/>Father Chrysostomos (49):<br/> Preserve 64-bit array offsets in uninit warnings<br/> Fix stupid test in 9uninit<br/> stash.t: Remove tyrone::slothrop<br/> [perl #128238] Crash with non-stash in stash<br/> perlunicode typo<br/> [perl #128478] Restore former &quot;$foo::$bar&quot; parsing<br/> [perl #128508] Fix line numbers with perl -x<br/> Don&acirc;&#128;&#153;t let XSLoader load relative paths<br/> Increase $XSLoader::VERSION to 0.22<br/> [perl #128532] Crash vivifying stub in deleted pkg<br/> Fix XSLoader to recognize drive letters<br/> [perl #128597] Crash from gp_free/ckWARN_d<br/> Make encoding::warnings a no-op in 5.26<br/> Increase $encoding::warnings::VERSION to 0.13<br/> Disable ${^ENCODING}<br/> Remove IN_ENCODING macro, and all code dependent on it<br/> Remove PL_(lex_)encoding and all dependent code<br/> Remove mg.c:_get_encoding<br/> Disable encoding.pm&acirc;&#128;&#153;s default mode; update docs<br/> Remove t/uni/chr.t<br/> Update t/porting/customized.dat<br/> Increase $encoding::VERSION to 2.17_01<br/> Remove t/uni/tr_?jis.t<br/> concat2.t: Remove encoding test<br/> [Merge] Remove ${^ENCODING} functionality<br/> [perl #128621] #define PL_encoding<br/> Get regen to work before 5.10<br/> Allow my \$a<br/> Add experimental::declared_refs warn categ<br/> Add declared_refs feature feature<br/> Make my\ experimental<br/> Update docs for declared_refs<br/> Clearer declared_refs warning msg<br/> perldiag entries for declared_refs<br/> Tests for declared_refs err/warn messages<br/> decl_refs.t: Finish adding tests for declared_refs<br/> [Merge] declared_refs feature allowing my\$x<br/> perldelta for #128238<br/> perldelta for #128478 / d9d2b74c<br/> perldelta for #128508 / b3dd0aba3<br/> perldelta for 08e3451 and a651dcdf6<br/> perldelta for 63aab7e / #128532<br/> perldelta for a2637ca0a / #128597<br/> perldelta for a9cb10c37 (${^ENCODING} removal)<br/> Add Filter::Encoding to the known links<br/> Note in perlvar that ${^ENCODING} is removed<br/> perlref: Wrap pod<br/> perldelta for 6fe925b92 / my\<br/> Fix failing uninit test on 64-bit-int builds<br/><br/>H.Merijn Brand (2):<br/> [perl #128538] [PATCH] Fix copy/paste error in Configure<br/> Minor change after backpotinr<br/><br/>Jarkko Hietaniemi (11):<br/> VAX: Configure changes for VAX floats<br/> VAX: code changes for VAX floats<br/> VAX: test changes for VAX floats<br/> If only miniperl, no use utf8 for you.<br/> If only miniperl, no use re for you.<br/> The 47918419 mistakenly made miniperl skippage unconditional<br/> in 15899733 the condition was supposed to stay optional<br/> VAX: Configure: the VAX fp not really little-endian<br/> VAX: perl.h: document the VAX fp better/more<br/> VAX: further docs about the VAX fp formats<br/> VAX: one more VAX fp doc tweakage<br/><br/>Karl Williamson (33):<br/> t/re/uniprops.t: Add more description for \b{} tests<br/> regexec.c: Add a const to a function parameter<br/> Tell mktables what Unicode version mk_invlist.pl handles<br/> Prepare for Unicode 9.0<br/> perldelta for Unicode 9.0<br/> perluniprops: Fix pod<br/> perlunicode: Fix mistatement<br/> Update perlunicode<br/> perlapi: Add entry for hv_bucket_ratio<br/> Change \p{foo} to mean \p{scx: foo}<br/> perl.h: Fix typo in comment<br/> regexec.c: Silence compiler warning<br/> cpan/Encode/encoding.pm: Fix typo in pod<br/> PATCH: [perl #128628] divide by 0 in locale.c<br/> regcomp.h: Use #define mnemonic, not hard-coded number<br/> SSize_t instead of IV<br/> t/test.pl: Add fresh_perl() function<br/> Add t/re/anyof.t<br/> Fix -Dr output regression<br/> anyof.t: Add tests for previous commit<br/> regcomp.c: Improve -Dr output<br/> regcomp.[ch]: Comments, White-space, only<br/> t/re/pat.t: Add some tests<br/> regcomp.c: Improve -Dr output<br/> regcomp.c: Refactor code dealing with m/[...]/d<br/> t/re/anyof.t: add tests for ranges<br/> regcomp.c: Reimplement add_range_to_invlist()<br/> regcomp.c: Change some append_range_to_invlist() calls<br/> Merge regcomp changes branch into blead<br/> PATCH: [perl #128170] Assert fail in regcomp.c<br/> regcomp.c: Silence compiler warning<br/> locale.c: Add some debugging statements<br/> lib/locale.t: Fix tests, add a test<br/><br/>Lukas Mai (2):<br/> perlnewmod: more updates<br/> perlfunc: clarify seek/sysseek documentation re byte offsets (RT #128607)<br/><br/>Matthew Horsfall (9):<br/> Update epigraphs.pod after release<br/> Tick off release in release_schedule.pod<br/> Update release announcement template for 5.26 in 2017.<br/> Add new perldelta<br/> Bump the perl version in various places for 5.25.3<br/> Bump Module::CoreList version for 5.25.3<br/> Update Devel-PPPort to CPAN version 3.35<br/> Correct comment in t/porting/manifest.<br/> Sort @def before generating $warnings::DEFAULT.<br/><br/>Salvador Fandino (1):<br/> Fix Encode constant name usage: WARN_ON_ERROR --&gt; WARN_ON_ERR<br/><br/>Sawyer X (3):<br/> Abigail volunteered to handle January&#39;s release of 5.25.9<br/> Chad will be taking October, Sawyer December<br/> Steve Hay will release next two maints on the 25th<br/><br/>Steffen Mueller (1):<br/> Update Data::Dumper to 2.161<br/><br/>Steve Hay (46):<br/> Module-Metadata was customized by 9ec93952bf<br/> Four Pod-Checker test files have EOL differences compared to CPAN<br/> Fix perlpodstyle.pod file name in Porting/Maintainers.pl<br/> Test-Simple: Remove files left over from old CPAN releases<br/> Porting/Maintainers.pl - version&#39;s vperl/vpp.pm is now excluded<br/> Update t/porting/customized.dat following Porting/Maintainers.pl updates<br/> Upgrade Encode from version 2.80 to 2.84<br/> We&#39;re in sync with Getopt::Long 2.49.1<br/> We&#39;re in sync with Locale::Maketext 1.27<br/> Upgrade from Math::BigInt version 1.999715 to 1.999724<br/> Upgrade Math::BigInt::FastCalc from version 0.40 to 0.42<br/> Upgrade Math::BigRat from version 0.260802 to 0.260804<br/> Upgrade Perl::OSType from version 1.009 to 1.010<br/> We&#39;re closer to being in sync with XSLoader 0.20 than with 0.16<br/> We&#39;re in sync with CPAN version 2.14<br/> Upgrade Test::Simple from version 1.302026 to 1.302035<br/> Upgrade version from version 0.9916 to 0.9917<br/> Upgrade Parse::CPAN::Meta from version 1.4417 to 1.4421<br/> Upgrade Time::HiRes from version 1.9734 to 1.9739<br/> Upgrade Parse-CPAN-Meta from version 1.4421 to 1.4422<br/> Upgrade Data-Dumper from version 2.154 to 2.160<br/> Silence podcheck.t failure from Data-Dumper&#39;s updated Changes file<br/> We&#39;re in sync with XSLoader-0.22 (since ae635bbffa)<br/> Upgrade bignum from version 0.42 to 0.43<br/> Upgrade Test-Simple from version 1.302037 to 1.302040<br/> Add epigraph for 5.22.2<br/> 5.22.3-RC1 and 5.24.1-RC1 today<br/> Add epigraphs for 5.22.3-RC1 and 5.24.1-RC1<br/> Upgrade Math-BigInt from version 1.999724 to 1.999726<br/> Upgrade libnet from version 3.08 to 3.09<br/> Upgrade Test-Simple from version 1.302040 to 1.302045<br/> Encode has some customized test scripts<br/> Module-Metadata has another customized test script<br/> perldelta - Remove most boilerplate<br/> perldelta - Fill in &quot;fixed in&quot; versions for Errata items<br/> perldelta - Wrapping/formatting<br/> perldelta - Fill in New Diagnostics<br/> perldelta - Fill in Documentation<br/> perldelta - Fill in Testing<br/> perldelta - Fill in rt.perl.org links<br/> perldelta - Fill in Modules and Pragmata<br/> Fix typo in perldelta<br/> perldelta - Fill in Selected Bug Fixes etc<br/> Update Module-CoreList for 5.25.3<br/> Finalize perldelta<br/> 5.25.3 today<br/><br/>S&Atilde;&copy;bastien Aperghis-Tramoni (1):<br/> Synchronize blead with CPAN XSLoader 0.22<br/><br/>Todd Rinaldo (1):<br/> Sync CPAN Locale::Maketext 1.27 with blead<br/><br/>Tony Cook (4):<br/> (perl #128359) prevent a const-ness warning on Cygwin<br/> make Configure abort if both -Duselongdouble and -Dusequadmath are requested<br/> darwin was failing this test under PERLIO=stdio<br/> (perl #128524) correct indentation for utf-8 key hash elements<br/><br/>Unicode Consortium (1):<br/> Use Unicode 9.0<br/><br/>Yves Orton (4):<br/> Add perldelta for POSIX memory leak fix<br/> Add a perldelta entry for recursive subpattern screwup in 5.24<br/> Change scalar(%hash) to be the same as 0+keys(%hash)<br/> change manisort to produce a more intuitive order<br/><br/>&Atilde;&#134;var Arnfj&Atilde;&para;r&Atilde;&deg; Bjarmason (1):<br/> gv.c: Add a comment about what powers Foo-&gt;import|unimport<br/><br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47674.html Fri, 22 Jul 2016 01:30:53 +0000 [perl.git] branch maint-5.22, updated. v5.22.3-RC1-4-g69786aa by Steve Hay via perl5-changes In perl.git, the branch maint-5.22 has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/69786aa7e563ebda50aadaaead54c0f4e9bd6393?hp=89b0fe36d9428d64eb6c6cf73223d8e122e1ec01&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 69786aa7e563ebda50aadaaead54c0f4e9bd6393<br/>Author: Ricardo Signes &lt;rjbs@cpan.org&gt;<br/>Date: Thu Jul 21 21:07:17 2016 +0100<br/><br/> perldelta for previous commit<br/> <br/> (manually cherry picked from commit 73d6481e251515b5d92adeb35d5a09b102f9304f)<br/><br/>M pod/perldelta.pod<br/><br/>commit d7a698438bf95848be8180e40350a98f973bd928<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Mon Jun 8 09:15:17 2015 +0100<br/><br/> make PadlistNAMES() lvalue again.<br/> <br/> The PadlistNAMES() macro was introduced with v5.17.3-69-g86d2498.<br/> This macro happened to be lvalue-capable, although it wasn&#39;t documented<br/> as such.<br/> <br/> v5.21.6-163-g9b7476d as a side effect, broke the lvalueness, which broke<br/> Coro.<br/> <br/> This commit restores the lvalueness.<br/> <br/> (cherry picked from commit 73949fca082fe50bf47755c5ffa328259057ae36)<br/><br/>M pad.h<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> pad.h | 2 +-<br/> pod/perldelta.pod | 10 ++++++++++<br/> 2 files changed, 11 insertions(+), 1 deletion(-)<br/><br/>diff --git a/pad.h b/pad.h<br/>index 1f86248..31b8715 100644<br/>--- a/pad.h<br/>+++ b/pad.h<br/>@@ -295,7 +295,7 @@ Restore the old pad saved into the local variable opad by PAD_SAVE_LOCAL()<br/> <br/> #define PadlistARRAY(pl) (pl)-&gt;xpadl_alloc<br/> #define PadlistMAX(pl) (pl)-&gt;xpadl_max<br/>-#define PadlistNAMES(pl) ((PADNAMELIST *)*PadlistARRAY(pl))<br/>+#define PadlistNAMES(pl) *((PADNAMELIST **)PadlistARRAY(pl))<br/> #define PadlistNAMESARRAY(pl) PadnamelistARRAY(PadlistNAMES(pl))<br/> #define PadlistNAMESMAX(pl) PadnamelistMAX(PadlistNAMES(pl))<br/> #define PadlistREFCNT(pl) 1 /* reserved for future use */<br/>diff --git a/pod/perldelta.pod b/pod/perldelta.pod<br/>index 58d604b..601fe02 100644<br/>--- a/pod/perldelta.pod<br/>+++ b/pod/perldelta.pod<br/>@@ -86,6 +86,16 @@ B&lt;-Di&gt; switch is working correctly.<br/> <br/> =back<br/> <br/>+=head1 Selected Bug Fixes<br/>+<br/>+=over 4<br/>+<br/>+=item *<br/>+<br/>+The C&lt;PadlistNAMES&gt; macro is an lvalue again.<br/>+<br/>+=back<br/>+<br/> =head1 Acknowledgements<br/> <br/> Perl 5.22.3 represents approximately 3 months of development since Perl 5.22.2<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47673.html Fri, 22 Jul 2016 01:30:51 +0000 [perl.git] branch maint-5.22, updated. v5.22.3-RC1-13-g33b02cf by Steve Hay via perl5-changes In perl.git, the branch maint-5.22 has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/33b02cf6bcd882d7d36c7a9372bc3e3b376541ba?hp=82b41950cac22300bf881a79b1912f53ab35e280&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 33b02cf6bcd882d7d36c7a9372bc3e3b376541ba<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Thu Jul 21 22:51:35 2016 +0100<br/><br/> Update Module-CoreList for 5.25.3<br/> <br/> (manually cherry picked from commit 42a3cde12f0f45ddd039878a6424efba18e480c8)<br/><br/>M dist/Module-CoreList/lib/Module/CoreList.pm<br/><br/>commit 916d3ca9dc65d87a17c2d2812d14dd6165302093<br/>Author: Matthew Horsfall &lt;wolfsage@gmail.com&gt;<br/>Date: Thu Jul 21 22:47:17 2016 +0100<br/><br/> Bump Module::CoreList version for 5.25.3<br/> <br/> (manually cherry picked from commit c338e234d57f13141c5e04b6361ed8cc9e14b42a)<br/><br/>M dist/Module-CoreList/Changes<br/>M dist/Module-CoreList/lib/Module/CoreList.pm<br/>M dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/><br/>commit 787286cecfb571204ee3542a446588f273b280a2<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 17:38:35 2016 +0100<br/><br/> Add epigraph for 5.25.3<br/> <br/> (cherry picked from commit 4d3fd69973bfa6d2632d40f12b52aaeb6c3f4d03)<br/><br/>M Porting/epigraphs.pod<br/><br/>commit 6a0ead5c28647948de5f01aac60a62928a0e6832<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 15:27:02 2016 +0100<br/><br/> 5.25.3 today<br/> <br/> (cherry picked from commit c137098022dcef5e7ea32608e5299276efea6457)<br/><br/>M pod/perlhist.pod<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> Porting/epigraphs.pod | 32 ++++++<br/> dist/Module-CoreList/Changes | 3 +<br/> dist/Module-CoreList/lib/Module/CoreList.pm | 118 ++++++++++++++++++++++<br/> dist/Module-CoreList/lib/Module/CoreList/Utils.pm | 7 ++<br/> pod/perlhist.pod | 1 +<br/> 5 files changed, 161 insertions(+)<br/><br/>diff --git a/Porting/epigraphs.pod b/Porting/epigraphs.pod<br/>index beac792..052fec4 100644<br/>--- a/Porting/epigraphs.pod<br/>+++ b/Porting/epigraphs.pod<br/>@@ -17,6 +17,38 @@ Consult your favorite dictionary for details.<br/> <br/> =head1 EPIGRAPHS<br/> <br/>+=head2 v5.25.3 - Edward Lear, ed. Vivien Noakes, &quot;The Complete Nonsense and Other Verse&quot;: The Dong with a Luminous Nose<br/>+<br/>+L&lt;Announced on 2016-07-20 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2016/07/msg238158.html&gt;<br/>+<br/>+ When awful darkness and silence reign<br/>+ Over the great Gromboolian plain,<br/>+ Through the long, long wintry nights; -<br/>+ When the angry breakers roar<br/>+ As they beat on the rocky shore; -<br/>+ When Storm-clouds brood on the towering heights<br/>+ Of the Hills of the Chankly Bore: -<br/>+<br/>+ Then, through the vast and gloomy dark,<br/>+ There moves what seems a fiery spark,<br/>+ A lonely spark with silvery rays<br/>+ Piercing the coal-black night, -<br/>+ A Meteor strange and bright: -<br/>+ Hither and thither the vision strays,<br/>+ A single lurid light.<br/>+<br/>+ Slowly it wanders, - pauses, - creeps, -<br/>+ Anon it sparkles, - flashes and leaps;<br/>+ And ever as onward it gleaming goes<br/>+ A light on the Bong-tree stems it throws.<br/>+ And those who watch at that midnight hour<br/>+ From Hall or Terrace, or lofty Tower,<br/>+ Cry, as the wild light passes along, -<br/>+ &#39;The Dong! - the Dong!<br/>+ The wandering Dong through the forest goes!<br/>+ The Dong! the Dong!<br/>+ The Dong with a luminous Nose!&#39;<br/>+<br/> =head2 v5.25.2 - Dan le Sac Vs Scroobius Pip &quot;Waiting For The Beat To Kick In&quot;<br/> <br/> L&lt;Announced on 2016-06-20 by Matthew Horsfall|http://www.nntp.perl.org/group/perl.perl5.porters/2016/06/msg237274.html&gt;<br/>diff --git a/dist/Module-CoreList/Changes b/dist/Module-CoreList/Changes<br/>index 5edb6f0..55d9293 100644<br/>--- a/dist/Module-CoreList/Changes<br/>+++ b/dist/Module-CoreList/Changes<br/>@@ -1,6 +1,9 @@<br/> 5.20160730_22<br/> - Updated for v5.22.3<br/> <br/>+5.20160720<br/>+ - Updated for v5.25.3<br/>+<br/> 5.20160620<br/> - Updated for v5.25.2<br/> <br/>diff --git a/dist/Module-CoreList/lib/Module/CoreList.pm b/dist/Module-CoreList/lib/Module/CoreList.pm<br/>index fe32181..12df881 100644<br/>--- a/dist/Module-CoreList/lib/Module/CoreList.pm<br/>+++ b/dist/Module-CoreList/lib/Module/CoreList.pm<br/>@@ -296,6 +296,7 @@ sub changes_between {<br/> 5.025000 =&gt; &#39;2016-05-09&#39;,<br/> 5.025001 =&gt; &#39;2016-05-20&#39;,<br/> 5.025002 =&gt; &#39;2016-06-20&#39;,<br/>+ 5.025003 =&gt; &#39;2016-07-20&#39;,<br/> 5.022003 =&gt; &#39;????-??-??&#39;,<br/> );<br/> <br/>@@ -12703,6 +12704,116 @@ for my $version ( sort { $a &lt;=&gt; $b } keys %released ) {<br/> removed =&gt; {<br/> }<br/> },<br/>+ 5.025003 =&gt; {<br/>+ delta_from =&gt; 5.025002,<br/>+ changed =&gt; {<br/>+ &#39;B::Op_private&#39; =&gt; &#39;5.025003&#39;,<br/>+ &#39;Config&#39; =&gt; &#39;5.025003&#39;,<br/>+ &#39;Data::Dumper&#39; =&gt; &#39;2.161&#39;,<br/>+ &#39;Devel::PPPort&#39; =&gt; &#39;3.35&#39;,<br/>+ &#39;Encode&#39; =&gt; &#39;2.84&#39;,<br/>+ &#39;Encode::MIME::Header&#39; =&gt; &#39;2.23&#39;,<br/>+ &#39;Encode::MIME::Header::ISO_2022_JP&#39;=&gt; &#39;1.07&#39;,<br/>+ &#39;ExtUtils::ParseXS&#39; =&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::ParseXS::Constants&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::ParseXS::CountLines&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::ParseXS::Eval&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::ParseXS::Utilities&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps&#39; =&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps::Cmd&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps::InputMap&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps::OutputMap&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps::Type&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;Hash::Util&#39; =&gt; &#39;0.20&#39;,<br/>+ &#39;Math::BigFloat&#39; =&gt; &#39;1.999726&#39;,<br/>+ &#39;Math::BigFloat::Trace&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;Math::BigInt&#39; =&gt; &#39;1.999726&#39;,<br/>+ &#39;Math::BigInt::Calc&#39; =&gt; &#39;1.999726&#39;,<br/>+ &#39;Math::BigInt::CalcEmu&#39; =&gt; &#39;1.999726&#39;,<br/>+ &#39;Math::BigInt::FastCalc&#39;=&gt; &#39;0.42&#39;,<br/>+ &#39;Math::BigInt::Trace&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;Math::BigRat&#39; =&gt; &#39;0.260804&#39;,<br/>+ &#39;Module::CoreList&#39; =&gt; &#39;5.20160720&#39;,<br/>+ &#39;Module::CoreList::TieHashDelta&#39;=&gt; &#39;5.20160720&#39;,<br/>+ &#39;Module::CoreList::Utils&#39;=&gt; &#39;5.20160720&#39;,<br/>+ &#39;Net::Cmd&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::Config&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::Domain&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::A&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::E&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::I&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::L&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::dataconn&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::NNTP&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::Netrc&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::POP3&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::SMTP&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::Time&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Parse::CPAN::Meta&#39; =&gt; &#39;1.4422&#39;,<br/>+ &#39;Perl::OSType&#39; =&gt; &#39;1.010&#39;,<br/>+ &#39;Test2&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API::Breakage&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API::Context&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API::Instance&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API::Stack&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Bail&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Diag&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Exception&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Generic&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Info&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Note&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Ok&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Plan&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Skip&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Subtest&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Waiting&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Formatter&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Formatter::TAP&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Hub&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Hub::Interceptor&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Hub::Interceptor::Terminator&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Hub::Subtest&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::IPC&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::IPC::Driver&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::IPC::Driver::Files&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Util&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Util::ExternalMeta&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Util::HashBase&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Util::Trace&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::Formatter&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::Module&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::Tester&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::Tester::Color&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::TodoDiag&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::More&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Simple&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Tester&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Tester::Capture&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Tester::CaptureRunner&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Tester::Delegate&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::use::ok&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Time::HiRes&#39; =&gt; &#39;1.9739&#39;,<br/>+ &#39;Unicode&#39; =&gt; &#39;9.0.0&#39;,<br/>+ &#39;Unicode::UCD&#39; =&gt; &#39;0.66&#39;,<br/>+ &#39;XSLoader&#39; =&gt; &#39;0.22&#39;,<br/>+ &#39;bigint&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;bignum&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;bigrat&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;encoding&#39; =&gt; &#39;2.17_01&#39;,<br/>+ &#39;encoding::warnings&#39; =&gt; &#39;0.13&#39;,<br/>+ &#39;feature&#39; =&gt; &#39;1.45&#39;,<br/>+ &#39;ok&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;version&#39; =&gt; &#39;0.9917&#39;,<br/>+ &#39;version::regex&#39; =&gt; &#39;0.9917&#39;,<br/>+ &#39;warnings&#39; =&gt; &#39;1.37&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/> 5.022003 =&gt; {<br/> delta_from =&gt; 5.022002,<br/> changed =&gt; {<br/>@@ -13392,6 +13503,13 @@ for my $version (sort { $a &lt;=&gt; $b } keys %delta) {<br/> removed =&gt; {<br/> }<br/> },<br/>+ 5.025003 =&gt; {<br/>+ delta_from =&gt; 5.025002,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/> 5.022003 =&gt; {<br/> delta_from =&gt; 5.022002,<br/> changed =&gt; {<br/>diff --git a/dist/Module-CoreList/lib/Module/CoreList/Utils.pm b/dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/>index 5571282..a4c8bde 100644<br/>--- a/dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/>+++ b/dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/>@@ -1171,6 +1171,13 @@ my %delta = (<br/> removed =&gt; {<br/> }<br/> },<br/>+ 5.025003 =&gt; {<br/>+ delta_from =&gt; 5.025002,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/> 5.022003 =&gt; {<br/> delta_from =&gt; 5.022002,<br/> changed =&gt; {<br/>diff --git a/pod/perlhist.pod b/pod/perlhist.pod<br/>index 013acb5..e0a5289 100644<br/>--- a/pod/perlhist.pod<br/>+++ b/pod/perlhist.pod<br/>@@ -591,6 +591,7 @@ the strings?).<br/> Ricardo 5.25.0 2016-May-09 The 5.25 development track<br/> Sawyer X 5.25.1 2016-May-20<br/> Matthew 5.25.2 2016-Jun-20<br/>+ Steve 5.25.3 2016-Jul-20<br/> <br/> =head2 SELECTED RELEASE SIZES<br/> <br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47672.html Fri, 22 Jul 2016 01:30:50 +0000 [perl.git] branch smoke-me/khw-locale, created.v5.25.2-198-gc1a2a95 by Karl Williamson In perl.git, the branch smoke-me/khw-locale has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/c1a2a954e042e27c3c04271a4266989f53f7b2fa?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at c1a2a954e042e27c3c04271a4266989f53f7b2fa (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit c1a2a954e042e27c3c04271a4266989f53f7b2fa<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Jul 20 10:34:20 2016 -0600<br/><br/> Use strerror_l() if available<br/> <br/> This commit is the first step in using POSIX 2008 thread-safe locale<br/> functions on platforms where they are available.<br/> <br/> This creates a global locale object on threaded perls for the C locale,<br/> and this is now passed to strerror_l() on piatforms where it is<br/> available. Doing so saves us from having to use a mutex.<br/><br/>M embedvar.h<br/>M locale.c<br/>M makedef.pl<br/>M perl.c<br/>M perl.h<br/>M perlapi.h<br/>M perlvars.h<br/><br/>commit 3e764ffad2cd9c5d6f2a02312a007534be39f870<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Jul 20 10:33:40 2016 -0600<br/><br/> locale.c: WHite-space, move declaration, comments only<br/><br/>M locale.c<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47671.html Fri, 22 Jul 2016 01:30:48 +0000 [perl.git] branch blead, updated. v5.25.2-215-gc137098 by Steve Hay via perl5-changes In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/c137098022dcef5e7ea32608e5299276efea6457?hp=fa25ff3a5478e084688655a08731d7df58e2fc6a&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit c137098022dcef5e7ea32608e5299276efea6457<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 15:27:02 2016 +0100<br/><br/> 5.25.3 today<br/><br/>M pod/perlhist.pod<br/><br/>commit 24528e8ebcc78fe7c196143dcf048157e6ffc6ba<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 15:25:00 2016 +0100<br/><br/> Finalize perldelta<br/><br/>M pod/perldelta.pod<br/><br/>commit 42a3cde12f0f45ddd039878a6424efba18e480c8<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 15:20:41 2016 +0100<br/><br/> Update Module-CoreList for 5.25.3<br/><br/>M dist/Module-CoreList/lib/Module/CoreList.pm<br/><br/>commit 6674eaad9d86fa0393c493f5ee6fdd200efa8243<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Wed Jul 20 15:15:06 2016 +0100<br/><br/> perldelta - Fill in Selected Bug Fixes etc<br/><br/>M pod/perldelta.pod<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> dist/Module-CoreList/lib/Module/CoreList.pm | 102 +++++++++++++++++++++++++++-<br/> pod/perldelta.pod | 87 ++++++++++++++++++++++--<br/> pod/perlhist.pod | 1 +<br/> 3 files changed, 184 insertions(+), 6 deletions(-)<br/><br/>diff --git a/dist/Module-CoreList/lib/Module/CoreList.pm b/dist/Module-CoreList/lib/Module/CoreList.pm<br/>index a07f9c3..93904f2 100644<br/>--- a/dist/Module-CoreList/lib/Module/CoreList.pm<br/>+++ b/dist/Module-CoreList/lib/Module/CoreList.pm<br/>@@ -311,7 +311,7 @@ sub changes_between {<br/> 5.025000 =&gt; &#39;2016-05-09&#39;,<br/> 5.025001 =&gt; &#39;2016-05-20&#39;,<br/> 5.025002 =&gt; &#39;2016-06-20&#39;,<br/>- 5.025003 =&gt; &#39;????-??-??&#39;,<br/>+ 5.025003 =&gt; &#39;2016-07-20&#39;,<br/> );<br/> <br/> for my $version ( sort { $a &lt;=&gt; $b } keys %released ) {<br/>@@ -12723,9 +12723,107 @@ for my $version ( sort { $a &lt;=&gt; $b } keys %released ) {<br/> changed =&gt; {<br/> &#39;B::Op_private&#39; =&gt; &#39;5.025003&#39;,<br/> &#39;Config&#39; =&gt; &#39;5.025003&#39;,<br/>+ &#39;Data::Dumper&#39; =&gt; &#39;2.161&#39;,<br/>+ &#39;Devel::PPPort&#39; =&gt; &#39;3.35&#39;,<br/>+ &#39;Encode&#39; =&gt; &#39;2.84&#39;,<br/>+ &#39;Encode::MIME::Header&#39; =&gt; &#39;2.23&#39;,<br/>+ &#39;Encode::MIME::Header::ISO_2022_JP&#39;=&gt; &#39;1.07&#39;,<br/>+ &#39;ExtUtils::ParseXS&#39; =&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::ParseXS::Constants&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::ParseXS::CountLines&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::ParseXS::Eval&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::ParseXS::Utilities&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps&#39; =&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps::Cmd&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps::InputMap&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps::OutputMap&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;ExtUtils::Typemaps::Type&#39;=&gt; &#39;3.33&#39;,<br/>+ &#39;Hash::Util&#39; =&gt; &#39;0.20&#39;,<br/>+ &#39;Math::BigFloat&#39; =&gt; &#39;1.999726&#39;,<br/>+ &#39;Math::BigFloat::Trace&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;Math::BigInt&#39; =&gt; &#39;1.999726&#39;,<br/>+ &#39;Math::BigInt::Calc&#39; =&gt; &#39;1.999726&#39;,<br/>+ &#39;Math::BigInt::CalcEmu&#39; =&gt; &#39;1.999726&#39;,<br/>+ &#39;Math::BigInt::FastCalc&#39;=&gt; &#39;0.42&#39;,<br/>+ &#39;Math::BigInt::Trace&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;Math::BigRat&#39; =&gt; &#39;0.260804&#39;,<br/> &#39;Module::CoreList&#39; =&gt; &#39;5.20160720&#39;,<br/> &#39;Module::CoreList::TieHashDelta&#39;=&gt; &#39;5.20160720&#39;,<br/> &#39;Module::CoreList::Utils&#39;=&gt; &#39;5.20160720&#39;,<br/>+ &#39;Net::Cmd&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::Config&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::Domain&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::A&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::E&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::I&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::L&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::FTP::dataconn&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::NNTP&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::Netrc&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::POP3&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::SMTP&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Net::Time&#39; =&gt; &#39;3.09&#39;,<br/>+ &#39;Parse::CPAN::Meta&#39; =&gt; &#39;1.4422&#39;,<br/>+ &#39;Perl::OSType&#39; =&gt; &#39;1.010&#39;,<br/>+ &#39;Test2&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API::Breakage&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API::Context&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API::Instance&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::API::Stack&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Bail&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Diag&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Exception&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Generic&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Info&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Note&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Ok&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Plan&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Skip&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Subtest&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Event::Waiting&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Formatter&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Formatter::TAP&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Hub&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Hub::Interceptor&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Hub::Interceptor::Terminator&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Hub::Subtest&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::IPC&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::IPC::Driver&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::IPC::Driver::Files&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Util&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Util::ExternalMeta&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Util::HashBase&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test2::Util::Trace&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::Formatter&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::Module&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::Tester&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::Tester::Color&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Builder::TodoDiag&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::More&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Simple&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Tester&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Tester::Capture&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Tester::CaptureRunner&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::Tester::Delegate&#39;=&gt; &#39;1.302045&#39;,<br/>+ &#39;Test::use::ok&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;Time::HiRes&#39; =&gt; &#39;1.9739&#39;,<br/>+ &#39;Unicode&#39; =&gt; &#39;9.0.0&#39;,<br/>+ &#39;Unicode::UCD&#39; =&gt; &#39;0.66&#39;,<br/>+ &#39;XSLoader&#39; =&gt; &#39;0.22&#39;,<br/>+ &#39;bigint&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;bignum&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;bigrat&#39; =&gt; &#39;0.43&#39;,<br/>+ &#39;encoding&#39; =&gt; &#39;2.17_01&#39;,<br/>+ &#39;encoding::warnings&#39; =&gt; &#39;0.13&#39;,<br/>+ &#39;feature&#39; =&gt; &#39;1.45&#39;,<br/>+ &#39;ok&#39; =&gt; &#39;1.302045&#39;,<br/>+ &#39;version&#39; =&gt; &#39;0.9917&#39;,<br/>+ &#39;version::regex&#39; =&gt; &#39;0.9917&#39;,<br/>+ &#39;warnings&#39; =&gt; &#39;1.37&#39;,<br/> },<br/> removed =&gt; {<br/> }<br/>@@ -13772,6 +13870,7 @@ sub is_core<br/> &#39;Test2::Event::Diag&#39; =&gt; &#39;cpan&#39;,<br/> &#39;Test2::Event::Exception&#39;=&gt; &#39;cpan&#39;,<br/> &#39;Test2::Event::Generic&#39; =&gt; &#39;cpan&#39;,<br/>+ &#39;Test2::Event::Info&#39; =&gt; &#39;cpan&#39;,<br/> &#39;Test2::Event::Note&#39; =&gt; &#39;cpan&#39;,<br/> &#39;Test2::Event::Ok&#39; =&gt; &#39;cpan&#39;,<br/> &#39;Test2::Event::Plan&#39; =&gt; &#39;cpan&#39;,<br/>@@ -14208,6 +14307,7 @@ sub is_core<br/> &#39;Test2::Event::Diag&#39; =&gt; &#39;http://github.com/Test-More/test-more/issues&#39;,<br/> &#39;Test2::Event::Exception&#39;=&gt; &#39;http://github.com/Test-More/test-more/issues&#39;,<br/> &#39;Test2::Event::Generic&#39; =&gt; &#39;http://github.com/Test-More/test-more/issues&#39;,<br/>+ &#39;Test2::Event::Info&#39; =&gt; &#39;http://github.com/Test-More/test-more/issues&#39;,<br/> &#39;Test2::Event::Note&#39; =&gt; &#39;http://github.com/Test-More/test-more/issues&#39;,<br/> &#39;Test2::Event::Ok&#39; =&gt; &#39;http://github.com/Test-More/test-more/issues&#39;,<br/> &#39;Test2::Event::Plan&#39; =&gt; &#39;http://github.com/Test-More/test-more/issues&#39;,<br/>diff --git a/pod/perldelta.pod b/pod/perldelta.pod<br/>index 31759c6..2607446 100644<br/>--- a/pod/perldelta.pod<br/>+++ b/pod/perldelta.pod<br/>@@ -293,7 +293,20 @@ the C&lt;encoding&gt; pragma, is no longer supported as of Perl 5.26.0.<br/> <br/> =item *<br/> <br/>-XXX<br/>+F&lt;Configure&gt; now aborts if both &quot;-Duselongdouble&quot; and &quot;-Dusequadmath&quot; are<br/>+requested.<br/>+L&lt;[perl #126203]|https://rt.perl.org/Public/Bug/Display.html?id=126203&gt;<br/>+<br/>+=item *<br/>+<br/>+Fixed a bug in which F&lt;Configure&gt; could append &quot;-quadmath&quot; to the archname even<br/>+if it was already present.<br/>+L&lt;[perl #128538]|https://rt.perl.org/Public/Bug/Display.html?id=128538&gt;<br/>+<br/>+=item *<br/>+<br/>+Clang builds with &quot;-DPERL_GLOBAL_STRUCT&quot; or &quot;-DPERL_GLOBAL_STRUCT_PRIVATE&quot; have<br/>+been fixed (by disabling Thread Safety Analysis for these configurations).<br/> <br/> =back<br/> <br/>@@ -319,9 +332,9 @@ generated by bracketed character classes are as expected.<br/> <br/> =over 4<br/> <br/>-=item XXX-some-platform<br/>+=item VAX<br/> <br/>-XXX<br/>+VAX floating point formats are now supported.<br/> <br/> =back<br/> <br/>@@ -360,6 +373,44 @@ could result in crashes, but have been fixed. The crash was introduced in Perl<br/> 5.22.<br/> L&lt;[perl #128597]|https://rt.perl.org/Public/Bug/Display.html?id=128597&gt;<br/> <br/>+=item *<br/>+<br/>+Code that looks for a variable name associated with an uninitialized value<br/>+could cause an assertion in cases where magic is involved, such as<br/>+C&lt;$ISA[0][0]&gt;. This has now been fixed.<br/>+L&lt;[perl #128253]|https://rt.perl.org/Public/Bug/Display.html?id=128253&gt;<br/>+<br/>+=item *<br/>+<br/>+A crash caused by code generating the warning &quot;Subroutine STASH::NAME<br/>+redefined&quot; in cases such as C&lt;sub P::f{} undef *P::; *P::f =sub{};&gt; has been<br/>+fixed. In these cases, where the STASH is missing, the warning will now appear<br/>+as &quot;Subroutine NAME redefined&quot;.<br/>+L&lt;[perl #128257]|https://rt.perl.org/Public/Bug/Display.html?id=128257&gt;<br/>+<br/>+=item *<br/>+<br/>+Fixed an assertion triggered by some code that handles deprecated behavior in<br/>+formats, e.g. in cases like this:<br/>+<br/>+ format STDOUT =<br/>+ @<br/>+ 0&quot;$x&quot;<br/>+<br/>+L&lt;[perl #128255]|https://rt.perl.org/Public/Bug/Display.html?id=128255&gt;<br/>+<br/>+=item *<br/>+<br/>+A possible divide by zero in string transformation code on Windows has been<br/>+avoided, fixing a crash when collating an empty string.<br/>+L&lt;[perl #128618]|https://rt.perl.org/Public/Bug/Display.html?id=128618&gt;<br/>+<br/>+=item *<br/>+<br/>+Some regular expression parsing glitches could lead to assertion failures with<br/>+regular expressions such as C&lt;/(?&lt;=/&gt; and C&lt;/(?&lt;!/&gt;. This has now been fixed.<br/>+L&lt;[perl #128170]|https://rt.perl.org/Public/Bug/Display.html?id=128170&gt;<br/>+<br/> =back<br/> <br/> =head1 Errata From Previous Releases<br/>@@ -381,9 +432,35 @@ L&lt;[perl #126182]|https://rt.perl.org/Public/Bug/Display.html?id=126182&gt;<br/> <br/> =head1 Acknowledgements<br/> <br/>-XXX Generate this with:<br/>+Perl 5.25.3 represents approximately 4 weeks of development since Perl 5.25.2<br/>+and contains approximately 67,000 lines of changes across 510 files from 25<br/>+authors.<br/>+<br/>+Excluding auto-generated files, documentation and release tools, there were<br/>+approximately 40,000 lines of changes to 290 .pm, .t, .c and .h files.<br/>+<br/>+Perl continues to flourish into its third decade thanks to a vibrant community<br/>+of users and developers. The following people are known to have contributed<br/>+the improvements that became Perl 5.25.3:<br/>+<br/>+Aaron Crane, &Atilde;&#134;var Arnfj&Atilde;&para;r&Atilde;&deg; Bjarmason, Alex Vandiver, Aristotle Pagaltzis,<br/>+Chad Granum, Chris &#39;BinGOs&#39; Williams, Chris Lamb, Craig A. Berry, Dan Collins,<br/>+David Mitchell, Father Chrysostomos, H.Merijn Brand, Jarkko Hietaniemi, Karl<br/>+Williamson, Lukas Mai, Matthew Horsfall, Salvador Fandi&Atilde;&plusmn;o, Sawyer X,<br/>+S&Atilde;&copy;bastien Aperghis-Tramoni, Steffen M&Atilde;&frac14;ller, Steve Hay, Todd Rinaldo, Tony<br/>+Cook, Unicode Consortium, Yves Orton.<br/>+<br/>+The list above is almost certainly incomplete as it is automatically generated<br/>+from version control history. In particular, it does not include the names of<br/>+the (very much appreciated) contributors who reported issues to the Perl bug<br/>+tracker.<br/>+<br/>+Many of the changes included in this version originated in the CPAN modules<br/>+included in Perl&#39;s core. We&#39;re grateful to the entire CPAN community for<br/>+helping Perl to flourish.<br/> <br/>- perl Porting/acknowledgements.pl v5.25.2..HEAD<br/>+For a more complete list of all of Perl&#39;s historical contributors, please see<br/>+the F&lt;AUTHORS&gt; file in the Perl source distribution.<br/> <br/> =head1 Reporting Bugs<br/> <br/>diff --git a/pod/perlhist.pod b/pod/perlhist.pod<br/>index 013acb5..e0a5289 100644<br/>--- a/pod/perlhist.pod<br/>+++ b/pod/perlhist.pod<br/>@@ -591,6 +591,7 @@ the strings?).<br/> Ricardo 5.25.0 2016-May-09 The 5.25 development track<br/> Sawyer X 5.25.1 2016-May-20<br/> Matthew 5.25.2 2016-Jun-20<br/>+ Steve 5.25.3 2016-Jul-20<br/> <br/> =head2 SELECTED RELEASE SIZES<br/> <br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47670.html Fri, 22 Jul 2016 01:30:48 +0000 [perl.git] branch blead, updated. v5.25.2-198-g185c2e9 by Dave Mitchell In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/185c2e96081e0fd9b6c448a8db6ac4ca85ff1dd4?hp=3a3625f0ae05ec93b90af756e460a7803fafd8a2&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 185c2e96081e0fd9b6c448a8db6ac4ca85ff1dd4<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Mon Jul 18 11:57:19 2016 +0100<br/><br/> rename &quot;WORD&quot; lexical token to &quot;BAREWORD&quot;<br/> <br/> The enum value &quot;WORD&quot; can apparently clash with a enum value in windows<br/> headers. It used to be worked around in windows by #defining YYTOKENTYPE,<br/> which caused the<br/> <br/> enum yytokentype {<br/> ...<br/> WORD = ...;<br/> }<br/> <br/> in perly.h to be skipped, while still using the<br/> <br/> #define WORD ...<br/> <br/> which appears later in the same file.<br/> <br/> In bison 3.x, the auto-generated perl.h no longer includes the #defines,<br/> so this workaround no longer works.<br/> <br/> Instead, change the name of the token from &quot;WORD&quot; to &quot;BAREWORD&quot;.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> perl.h | 6 -<br/> perly.act | 1461 +++++++++++++++++++++++++++++++++++--------------------------<br/> perly.h | 299 +++++--------<br/> perly.tab | 1444 ++++++++++++++++++++++++++++--------------------------------<br/> perly.y | 16 +-<br/> toke.c | 53 +--<br/> 6 files changed, 1652 insertions(+), 1627 deletions(-)<br/><br/>diff --git a/perl.h b/perl.h<br/>index f110c2b..0cd2e2a 100644<br/>--- a/perl.h<br/>+++ b/perl.h<br/>@@ -3875,12 +3875,6 @@ typedef struct crypt_data { /* straight from /usr/include/crypt.h */<br/> # define USE_HASH_SEED<br/> #endif<br/> <br/>-/* Win32 defines a type &#39;WORD&#39; in windef.h, and AmigaOS in exec/types.h.<br/>- * This conflicts with the enumerator &#39;WORD&#39; defined in perly.h.<br/>- * The yytokentype enum is only a debugging aid, so it&#39;s not really needed. */<br/>-#if defined(WIN32) || defined(__amigaos4__)<br/>-# define YYTOKENTYPE<br/>-#endif<br/> #include &quot;perly.h&quot;<br/> <br/> <br/>diff --git a/perly.act b/perly.act<br/>index b4dc8f0..63515d8 100644<br/>--- a/perly.act<br/>+++ b/perly.act<br/>@@ -5,219 +5,246 @@<br/> */<br/> <br/> case 2:<br/>-#line 115 &quot;perly.y&quot;<br/>+#line 115 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> parser-&gt;expect = XSTATE;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 3:<br/>-#line 119 &quot;perly.y&quot;<br/>+#line 119 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- newPROG(block_end((ps[(3) - (4)].val.ival),(ps[(4) - (4)].val.opval)));<br/>+ newPROG(block_end((ps[-1].val.ival),(ps[0].val.opval)));<br/> PL_compiling.cop_seq = 0;<br/> (yyval.ival) = 0;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 4:<br/>-#line 125 &quot;perly.y&quot;<br/>+#line 125 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> parser-&gt;expect = XTERM;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 5:<br/>-#line 129 &quot;perly.y&quot;<br/>+#line 129 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- PL_eval_root = (ps[(3) - (3)].val.opval);<br/>+ PL_eval_root = (ps[0].val.opval);<br/> (yyval.ival) = 0;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 6:<br/>-#line 134 &quot;perly.y&quot;<br/>+#line 134 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> parser-&gt;expect = XBLOCK;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 7:<br/>-#line 138 &quot;perly.y&quot;<br/>+#line 138 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> PL_pad_reset_pending = TRUE;<br/>- PL_eval_root = (ps[(3) - (3)].val.opval);<br/>+ PL_eval_root = (ps[0].val.opval);<br/> (yyval.ival) = 0;<br/> yyunlex();<br/> parser-&gt;yychar = YYEOF;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 8:<br/>-#line 146 &quot;perly.y&quot;<br/>+#line 146 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> parser-&gt;expect = XSTATE;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 9:<br/>-#line 150 &quot;perly.y&quot;<br/>+#line 150 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> PL_pad_reset_pending = TRUE;<br/>- PL_eval_root = (ps[(3) - (3)].val.opval);<br/>+ PL_eval_root = (ps[0].val.opval);<br/> (yyval.ival) = 0;<br/> yyunlex();<br/> parser-&gt;yychar = YYEOF;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 10:<br/>-#line 158 &quot;perly.y&quot;<br/>+#line 158 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> parser-&gt;expect = XSTATE;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 11:<br/>-#line 162 &quot;perly.y&quot;<br/>+#line 162 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> PL_pad_reset_pending = TRUE;<br/>- PL_eval_root = (ps[(3) - (3)].val.opval);<br/>+ PL_eval_root = (ps[0].val.opval);<br/> (yyval.ival) = 0;<br/> yyunlex();<br/> parser-&gt;yychar = YYEOF;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 12:<br/>-#line 170 &quot;perly.y&quot;<br/>+#line 170 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> parser-&gt;expect = XSTATE;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 13:<br/>-#line 174 &quot;perly.y&quot;<br/>+#line 174 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- PL_eval_root = (ps[(3) - (3)].val.opval);<br/>+ PL_eval_root = (ps[0].val.opval);<br/> (yyval.ival) = 0;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 14:<br/>-#line 182 &quot;perly.y&quot;<br/>- { if (parser-&gt;copline &gt; (line_t)(ps[(1) - (4)].val.ival))<br/>- parser-&gt;copline = (line_t)(ps[(1) - (4)].val.ival);<br/>- (yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));<br/>- ;}<br/>+#line 182 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { if (parser-&gt;copline &gt; (line_t)(ps[-3].val.ival))<br/>+ parser-&gt;copline = (line_t)(ps[-3].val.ival);<br/>+ (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));<br/>+ }<br/>+<br/> break;<br/> <br/> case 15:<br/>-#line 190 &quot;perly.y&quot;<br/>- { if (parser-&gt;copline &gt; (line_t)(ps[(1) - (7)].val.ival))<br/>- parser-&gt;copline = (line_t)(ps[(1) - (7)].val.ival);<br/>- (yyval.opval) = block_end((ps[(2) - (7)].val.ival), (ps[(5) - (7)].val.opval));<br/>- ;}<br/>+#line 190 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { if (parser-&gt;copline &gt; (line_t)(ps[-6].val.ival))<br/>+ parser-&gt;copline = (line_t)(ps[-6].val.ival);<br/>+ (yyval.opval) = block_end((ps[-5].val.ival), (ps[-2].val.opval));<br/>+ }<br/>+<br/> break;<br/> <br/> case 16:<br/>-#line 197 &quot;perly.y&quot;<br/>+#line 197 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.ival) = block_start(TRUE);<br/>- parser-&gt;parsed_sub = 0; ;}<br/>+ parser-&gt;parsed_sub = 0; }<br/>+<br/> break;<br/> <br/> case 17:<br/>-#line 202 &quot;perly.y&quot;<br/>- { if (parser-&gt;copline &gt; (line_t)(ps[(1) - (4)].val.ival))<br/>- parser-&gt;copline = (line_t)(ps[(1) - (4)].val.ival);<br/>- (yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));<br/>- ;}<br/>+#line 202 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { if (parser-&gt;copline &gt; (line_t)(ps[-3].val.ival))<br/>+ parser-&gt;copline = (line_t)(ps[-3].val.ival);<br/>+ (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));<br/>+ }<br/>+<br/> break;<br/> <br/> case 18:<br/>-#line 209 &quot;perly.y&quot;<br/>+#line 209 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.ival) = block_start(FALSE);<br/>- parser-&gt;parsed_sub = 0; ;}<br/>+ parser-&gt;parsed_sub = 0; }<br/>+<br/> break;<br/> <br/> case 19:<br/>-#line 215 &quot;perly.y&quot;<br/>- { (yyval.opval) = (OP*)NULL; ;}<br/>+#line 215 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (OP*)NULL; }<br/>+<br/> break;<br/> <br/> case 20:<br/>-#line 217 &quot;perly.y&quot;<br/>- { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));<br/>+#line 217 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));<br/> PL_pad_reset_pending = TRUE;<br/>- if ((ps[(1) - (2)].val.opval) &amp;&amp; (ps[(2) - (2)].val.opval))<br/>+ if ((ps[-1].val.opval) &amp;&amp; (ps[0].val.opval))<br/> PL_hints |= HINT_BLOCK_SCOPE;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 21:<br/>-#line 226 &quot;perly.y&quot;<br/>- { (yyval.opval) = (OP*)NULL; ;}<br/>+#line 226 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (OP*)NULL; }<br/>+<br/> break;<br/> <br/> case 22:<br/>-#line 228 &quot;perly.y&quot;<br/>- { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));<br/>+#line 228 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));<br/> PL_pad_reset_pending = TRUE;<br/>- if ((ps[(1) - (2)].val.opval) &amp;&amp; (ps[(2) - (2)].val.opval))<br/>+ if ((ps[-1].val.opval) &amp;&amp; (ps[0].val.opval))<br/> PL_hints |= HINT_BLOCK_SCOPE;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 23:<br/>-#line 237 &quot;perly.y&quot;<br/>+#line 237 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = (ps[(1) - (1)].val.opval) ? newSTATEOP(0, NULL, (ps[(1) - (1)].val.opval)) : NULL;<br/>- ;}<br/>+ (yyval.opval) = (ps[0].val.opval) ? newSTATEOP(0, NULL, (ps[0].val.opval)) : NULL;<br/>+ }<br/>+<br/> break;<br/> <br/> case 24:<br/>-#line 241 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}<br/>+#line 241 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 25:<br/>-#line 245 &quot;perly.y&quot;<br/>+#line 245 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[(1) - (2)].val.pval)[strlen((ps[(1) - (2)].val.pval))+1], (ps[(1) - (2)].val.pval), (ps[(2) - (2)].val.opval));<br/>- ;}<br/>+ (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[-1].val.pval)[strlen((ps[-1].val.pval))+1], (ps[-1].val.pval), (ps[0].val.opval));<br/>+ }<br/>+<br/> break;<br/> <br/> case 26:<br/>-#line 249 &quot;perly.y&quot;<br/>+#line 249 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[(1) - (2)].val.pval)[strlen((ps[(1) - (2)].val.pval))+1], (ps[(1) - (2)].val.pval), (ps[(2) - (2)].val.opval));<br/>- ;}<br/>+ (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[-1].val.pval)[strlen((ps[-1].val.pval))+1], (ps[-1].val.pval), (ps[0].val.opval));<br/>+ }<br/>+<br/> break;<br/> <br/> case 27:<br/>-#line 256 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}<br/>+#line 256 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 28:<br/>-#line 258 &quot;perly.y&quot;<br/>+#line 258 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> CV *fmtcv = PL_compcv;<br/>- newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));<br/>+ newFORM((ps[-2].val.ival), (ps[-1].val.opval), (ps[0].val.opval));<br/> (yyval.opval) = (OP*)NULL;<br/> if (CvOUTSIDE(fmtcv) &amp;&amp; !CvEVAL(CvOUTSIDE(fmtcv))) {<br/> pad_add_weakref(fmtcv);<br/> }<br/> parser-&gt;parsed_sub = 1;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 29:<br/>-#line 268 &quot;perly.y&quot;<br/>+#line 268 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- if ((ps[(2) - (3)].val.opval)-&gt;op_type == OP_CONST) {<br/>+ if ((ps[-1].val.opval)-&gt;op_type == OP_CONST) {<br/> const char *const name =<br/>- SvPV_nolen_const(((SVOP*)(ps[(2) - (3)].val.opval))-&gt;op_sv);<br/>+ SvPV_nolen_const(((SVOP*)(ps[-1].val.opval))-&gt;op_sv);<br/> if (strEQ(name, &quot;BEGIN&quot;) || strEQ(name, &quot;END&quot;)<br/> || strEQ(name, &quot;INIT&quot;) || strEQ(name, &quot;CHECK&quot;)<br/> || strEQ(name, &quot;UNITCHECK&quot;))<br/>@@ -230,33 +257,35 @@ case 2:<br/> || CvCLONE(CvOUTSIDE(PL_compcv))<br/> || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(<br/> CvOUTSIDE(PL_compcv)<br/>- ))[(ps[(2) - (3)].val.opval)-&gt;op_targ]))<br/>+ ))[(ps[-1].val.opval)-&gt;op_targ]))<br/> CvCLONE_on(PL_compcv);<br/> parser-&gt;in_my = 0;<br/> parser-&gt;in_my_stash = NULL;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 30:<br/>-#line 290 &quot;perly.y&quot;<br/>+#line 290 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> SvREFCNT_inc_simple_void(PL_compcv);<br/>- (ps[(2) - (7)].val.opval)-&gt;op_type == OP_CONST<br/>- ? newATTRSUB((ps[(3) - (7)].val.ival), (ps[(2) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval))<br/>- : newMYSUB((ps[(3) - (7)].val.ival), (ps[(2) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval))<br/>+ (ps[-5].val.opval)-&gt;op_type == OP_CONST<br/>+ ? newATTRSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))<br/>+ : newMYSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))<br/> ;<br/> (yyval.opval) = (OP*)NULL;<br/> intro_my();<br/> parser-&gt;parsed_sub = 1;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 31:<br/>-#line 301 &quot;perly.y&quot;<br/>+#line 301 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- if ((ps[(2) - (3)].val.opval)-&gt;op_type == OP_CONST) {<br/>+ if ((ps[-1].val.opval)-&gt;op_type == OP_CONST) {<br/> const char *const name =<br/>- SvPV_nolen_const(((SVOP*)(ps[(2) - (3)].val.opval))-&gt;op_sv);<br/>+ SvPV_nolen_const(((SVOP*)(ps[-1].val.opval))-&gt;op_sv);<br/> if (strEQ(name, &quot;BEGIN&quot;) || strEQ(name, &quot;END&quot;)<br/> || strEQ(name, &quot;INIT&quot;) || strEQ(name, &quot;CHECK&quot;)<br/> || strEQ(name, &quot;UNITCHECK&quot;))<br/>@@ -269,130 +298,144 @@ case 2:<br/> || CvCLONE(CvOUTSIDE(PL_compcv))<br/> || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(<br/> CvOUTSIDE(PL_compcv)<br/>- ))[(ps[(2) - (3)].val.opval)-&gt;op_targ]))<br/>+ ))[(ps[-1].val.opval)-&gt;op_targ]))<br/> CvCLONE_on(PL_compcv);<br/> parser-&gt;in_my = 0;<br/> parser-&gt;in_my_stash = NULL;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 32:<br/>-#line 323 &quot;perly.y&quot;<br/>+#line 323 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> OP *body;<br/>- if (parser-&gt;copline &gt; (line_t)(ps[(8) - (10)].val.ival))<br/>- parser-&gt;copline = (line_t)(ps[(8) - (10)].val.ival);<br/>- body = block_end((ps[(5) - (10)].val.ival),<br/>- op_append_list(OP_LINESEQ, (ps[(6) - (10)].val.opval), (ps[(9) - (10)].val.opval)));<br/>+ if (parser-&gt;copline &gt; (line_t)(ps[-2].val.ival))<br/>+ parser-&gt;copline = (line_t)(ps[-2].val.ival);<br/>+ body = block_end((ps[-5].val.ival),<br/>+ op_append_list(OP_LINESEQ, (ps[-4].val.opval), (ps[-1].val.opval)));<br/> <br/> SvREFCNT_inc_simple_void(PL_compcv);<br/>- (ps[(2) - (10)].val.opval)-&gt;op_type == OP_CONST<br/>- ? newATTRSUB((ps[(3) - (10)].val.ival), (ps[(2) - (10)].val.opval), NULL, (ps[(7) - (10)].val.opval), body)<br/>- : newMYSUB((ps[(3) - (10)].val.ival), (ps[(2) - (10)].val.opval), NULL, (ps[(7) - (10)].val.opval), body)<br/>+ (ps[-8].val.opval)-&gt;op_type == OP_CONST<br/>+ ? newATTRSUB((ps[-7].val.ival), (ps[-8].val.opval), NULL, (ps[-3].val.opval), body)<br/>+ : newMYSUB((ps[-7].val.ival), (ps[-8].val.opval), NULL, (ps[-3].val.opval), body)<br/> ;<br/> (yyval.opval) = (OP*)NULL;<br/> intro_my();<br/> parser-&gt;parsed_sub = 1;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 33:<br/>-#line 340 &quot;perly.y&quot;<br/>+#line 340 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- package((ps[(3) - (4)].val.opval));<br/>- if ((ps[(2) - (4)].val.opval))<br/>- package_version((ps[(2) - (4)].val.opval));<br/>+ package((ps[-1].val.opval));<br/>+ if ((ps[-2].val.opval))<br/>+ package_version((ps[-2].val.opval));<br/> (yyval.opval) = (OP*)NULL;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 34:<br/>-#line 347 &quot;perly.y&quot;<br/>- { CvSPECIAL_on(PL_compcv); /* It&#39;s a BEGIN {} */ ;}<br/>+#line 347 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { CvSPECIAL_on(PL_compcv); /* It&#39;s a BEGIN {} */ }<br/>+<br/> break;<br/> <br/> case 35:<br/>-#line 349 &quot;perly.y&quot;<br/>+#line 349 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> SvREFCNT_inc_simple_void(PL_compcv);<br/>- utilize((ps[(1) - (7)].val.ival), (ps[(2) - (7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval));<br/>+ utilize((ps[-6].val.ival), (ps[-5].val.ival), (ps[-3].val.opval), (ps[-2].val.opval), (ps[-1].val.opval));<br/> parser-&gt;parsed_sub = 1;<br/> (yyval.opval) = (OP*)NULL;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 36:<br/>-#line 356 &quot;perly.y&quot;<br/>+#line 356 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = block_end((ps[(3) - (7)].val.ival),<br/>- newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));<br/>- parser-&gt;copline = (line_t)(ps[(1) - (7)].val.ival);<br/>- ;}<br/>+ (yyval.opval) = block_end((ps[-4].val.ival),<br/>+ newCONDOP(0, (ps[-3].val.opval), op_scope((ps[-1].val.opval)), (ps[0].val.opval)));<br/>+ parser-&gt;copline = (line_t)(ps[-6].val.ival);<br/>+ }<br/>+<br/> break;<br/> <br/> case 37:<br/>-#line 362 &quot;perly.y&quot;<br/>+#line 362 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = block_end((ps[(3) - (7)].val.ival),<br/>- newCONDOP(0, (ps[(4) - (7)].val.opval), (ps[(7) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval))));<br/>- parser-&gt;copline = (line_t)(ps[(1) - (7)].val.ival);<br/>- ;}<br/>+ (yyval.opval) = block_end((ps[-4].val.ival),<br/>+ newCONDOP(0, (ps[-3].val.opval), (ps[0].val.opval), op_scope((ps[-1].val.opval))));<br/>+ parser-&gt;copline = (line_t)(ps[-6].val.ival);<br/>+ }<br/>+<br/> break;<br/> <br/> case 38:<br/>-#line 368 &quot;perly.y&quot;<br/>+#line 368 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newGIVENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)), 0));<br/>- parser-&gt;copline = (line_t)(ps[(1) - (6)].val.ival);<br/>- ;}<br/>+ (yyval.opval) = block_end((ps[-3].val.ival), newGIVENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)), 0));<br/>+ parser-&gt;copline = (line_t)(ps[-5].val.ival);<br/>+ }<br/>+<br/> break;<br/> <br/> case 39:<br/>-#line 373 &quot;perly.y&quot;<br/>- { (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); ;}<br/>+#line 373 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); }<br/>+<br/> break;<br/> <br/> case 40:<br/>-#line 375 &quot;perly.y&quot;<br/>- { (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); ;}<br/>+#line 375 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 41:<br/>-#line 377 &quot;perly.y&quot;<br/>+#line 377 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = block_end((ps[(3) - (8)].val.ival),<br/>+ (yyval.opval) = block_end((ps[-5].val.ival),<br/> newWHILEOP(0, 1, (LOOP*)(OP*)NULL,<br/>- (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));<br/>- parser-&gt;copline = (line_t)(ps[(1) - (8)].val.ival);<br/>- ;}<br/>+ (ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));<br/>+ parser-&gt;copline = (line_t)(ps[-7].val.ival);<br/>+ }<br/>+<br/> break;<br/> <br/> case 42:<br/>-#line 384 &quot;perly.y&quot;<br/>+#line 384 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = block_end((ps[(3) - (8)].val.ival),<br/>+ (yyval.opval) = block_end((ps[-5].val.ival),<br/> newWHILEOP(0, 1, (LOOP*)(OP*)NULL,<br/>- (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));<br/>- parser-&gt;copline = (line_t)(ps[(1) - (8)].val.ival);<br/>- ;}<br/>+ (ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));<br/>+ parser-&gt;copline = (line_t)(ps[-7].val.ival);<br/>+ }<br/>+<br/> break;<br/> <br/> case 43:<br/>-#line 391 &quot;perly.y&quot;<br/>- { parser-&gt;expect = XTERM; ;}<br/>+#line 391 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { parser-&gt;expect = XTERM; }<br/>+<br/> break;<br/> <br/> case 44:<br/>-#line 393 &quot;perly.y&quot;<br/>- { parser-&gt;expect = XTERM; ;}<br/>+#line 393 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { parser-&gt;expect = XTERM; }<br/>+<br/> break;<br/> <br/> case 45:<br/>-#line 396 &quot;perly.y&quot;<br/>+#line 396 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- OP *initop = (ps[(4) - (13)].val.opval);<br/>+ OP *initop = (ps[-9].val.opval);<br/> OP *forop = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,<br/>- scalar((ps[(7) - (13)].val.opval)), (ps[(13) - (13)].val.opval), (ps[(11) - (13)].val.opval), (ps[(10) - (13)].val.ival));<br/>+ scalar((ps[-6].val.opval)), (ps[0].val.opval), (ps[-2].val.opval), (ps[-3].val.ival));<br/> if (initop) {<br/> forop = op_prepend_elem(OP_LINESEQ, initop,<br/> op_append_elem(OP_LINESEQ,<br/>@@ -400,310 +443,355 @@ case 2:<br/> forop));<br/> }<br/> PL_hints |= HINT_BLOCK_SCOPE;<br/>- (yyval.opval) = block_end((ps[(3) - (13)].val.ival), forop);<br/>- parser-&gt;copline = (line_t)(ps[(1) - (13)].val.ival);<br/>- ;}<br/>+ (yyval.opval) = block_end((ps[-10].val.ival), forop);<br/>+ parser-&gt;copline = (line_t)(ps[-12].val.ival);<br/>+ }<br/>+<br/> break;<br/> <br/> case 46:<br/>-#line 411 &quot;perly.y&quot;<br/>+#line 411 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = block_end((ps[(3) - (9)].val.ival), newFOROP(0, (ps[(4) - (9)].val.opval), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval)));<br/>- parser-&gt;copline = (line_t)(ps[(1) - (9)].val.ival);<br/>- ;}<br/>+ (yyval.opval) = block_end((ps[-6].val.ival), newFOROP(0, (ps[-5].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));<br/>+ parser-&gt;copline = (line_t)(ps[-8].val.ival);<br/>+ }<br/>+<br/> break;<br/> <br/> case 47:<br/>-#line 416 &quot;perly.y&quot;<br/>+#line 416 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = block_end((ps[(4) - (8)].val.ival), newFOROP(0,<br/>- op_lvalue((ps[(2) - (8)].val.opval), OP_ENTERLOOP), (ps[(5) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval)));<br/>- parser-&gt;copline = (line_t)(ps[(1) - (8)].val.ival);<br/>- ;}<br/>+ (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0,<br/>+ op_lvalue((ps[-6].val.opval), OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));<br/>+ parser-&gt;copline = (line_t)(ps[-7].val.ival);<br/>+ }<br/>+<br/> break;<br/> <br/> case 48:<br/>-#line 422 &quot;perly.y&quot;<br/>- { parser-&gt;in_my = 0; (yyval.opval) = my((ps[(4) - (4)].val.opval)); ;}<br/>+#line 422 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { parser-&gt;in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 49:<br/>-#line 424 &quot;perly.y&quot;<br/>+#line 424 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> (yyval.opval) = block_end(<br/>- (ps[(3) - (10)].val.ival),<br/>+ (ps[-7].val.ival),<br/> newFOROP(0,<br/> op_lvalue(<br/> newUNOP(OP_REFGEN, 0,<br/>- (ps[(5) - (10)].val.opval)),<br/>+ (ps[-5].val.opval)),<br/> OP_ENTERLOOP),<br/>- (ps[(7) - (10)].val.opval), (ps[(9) - (10)].val.opval), (ps[(10) - (10)].val.opval))<br/>+ (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))<br/> );<br/>- parser-&gt;copline = (line_t)(ps[(1) - (10)].val.ival);<br/>- ;}<br/>+ parser-&gt;copline = (line_t)(ps[-9].val.ival);<br/>+ }<br/>+<br/> break;<br/> <br/> case 50:<br/>-#line 437 &quot;perly.y&quot;<br/>+#line 437 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = block_end((ps[(5) - (9)].val.ival), newFOROP(<br/>+ (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(<br/> 0, op_lvalue(newUNOP(OP_REFGEN, 0,<br/>- (ps[(3) - (9)].val.opval)),<br/>- OP_ENTERLOOP), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval)));<br/>- parser-&gt;copline = (line_t)(ps[(1) - (9)].val.ival);<br/>- ;}<br/>+ (ps[-6].val.opval)),<br/>+ OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));<br/>+ parser-&gt;copline = (line_t)(ps[-8].val.ival);<br/>+ }<br/>+<br/> break;<br/> <br/> case 51:<br/>-#line 445 &quot;perly.y&quot;<br/>+#line 445 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = block_end((ps[(3) - (7)].val.ival),<br/>- newFOROP(0, (OP*)NULL, (ps[(4) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval)));<br/>- parser-&gt;copline = (line_t)(ps[(1) - (7)].val.ival);<br/>- ;}<br/>+ (yyval.opval) = block_end((ps[-4].val.ival),<br/>+ newFOROP(0, (OP*)NULL, (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));<br/>+ parser-&gt;copline = (line_t)(ps[-6].val.ival);<br/>+ }<br/>+<br/> break;<br/> <br/> case 52:<br/>-#line 451 &quot;perly.y&quot;<br/>+#line 451 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> /* a block is a loop that happens once */<br/> (yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,<br/>- (OP*)NULL, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval), 0);<br/>- ;}<br/>+ (OP*)NULL, (ps[-1].val.opval), (ps[0].val.opval), 0);<br/>+ }<br/>+<br/> break;<br/> <br/> case 53:<br/>-#line 457 &quot;perly.y&quot;<br/>+#line 457 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- package((ps[(3) - (5)].val.opval));<br/>- if ((ps[(2) - (5)].val.opval)) {<br/>- package_version((ps[(2) - (5)].val.opval));<br/>+ package((ps[-2].val.opval));<br/>+ if ((ps[-3].val.opval)) {<br/>+ package_version((ps[-3].val.opval));<br/> }<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 54:<br/>-#line 464 &quot;perly.y&quot;<br/>+#line 464 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> /* a block is a loop that happens once */<br/> (yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,<br/>- (OP*)NULL, block_end((ps[(5) - (8)].val.ival), (ps[(7) - (8)].val.opval)), (OP*)NULL, 0);<br/>- if (parser-&gt;copline &gt; (line_t)(ps[(4) - (8)].val.ival))<br/>- parser-&gt;copline = (line_t)(ps[(4) - (8)].val.ival);<br/>- ;}<br/>+ (OP*)NULL, block_end((ps[-3].val.ival), (ps[-1].val.opval)), (OP*)NULL, 0);<br/>+ if (parser-&gt;copline &gt; (line_t)(ps[-4].val.ival))<br/>+ parser-&gt;copline = (line_t)(ps[-4].val.ival);<br/>+ }<br/>+<br/> break;<br/> <br/> case 55:<br/>-#line 472 &quot;perly.y&quot;<br/>+#line 472 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = (ps[(1) - (2)].val.opval);<br/>- ;}<br/>+ (yyval.opval) = (ps[-1].val.opval);<br/>+ }<br/>+<br/> break;<br/> <br/> case 56:<br/>-#line 476 &quot;perly.y&quot;<br/>+#line 476 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> (yyval.opval) = (OP*)NULL;<br/> parser-&gt;copline = NOLINE;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 57:<br/>-#line 484 &quot;perly.y&quot;<br/>+#line 484 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { OP *list;<br/>- if ((ps[(2) - (2)].val.opval)) {<br/>- OP *term = (ps[(2) - (2)].val.opval);<br/>- list = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), term);<br/>+ if ((ps[0].val.opval)) {<br/>+ OP *term = (ps[0].val.opval);<br/>+ list = op_append_elem(OP_LIST, (ps[-1].val.opval), term);<br/> }<br/> else {<br/>- list = (ps[(1) - (2)].val.opval);<br/>+ list = (ps[-1].val.opval);<br/> }<br/> if (parser-&gt;copline == NOLINE)<br/> parser-&gt;copline = CopLINE(PL_curcop)-1;<br/> else parser-&gt;copline--;<br/> (yyval.opval) = newSTATEOP(0, NULL,<br/> op_convert_list(OP_FORMLINE, 0, list));<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 58:<br/>-#line 501 &quot;perly.y&quot;<br/>- { (yyval.opval) = NULL; ;}<br/>+#line 501 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = NULL; }<br/>+<br/> break;<br/> <br/> case 59:<br/>-#line 503 &quot;perly.y&quot;<br/>- { (yyval.opval) = op_unscope((ps[(2) - (3)].val.opval)); ;}<br/>+#line 503 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = op_unscope((ps[-1].val.opval)); }<br/>+<br/> break;<br/> <br/> case 60:<br/>-#line 508 &quot;perly.y&quot;<br/>- { (yyval.opval) = (OP*)NULL; ;}<br/>+#line 508 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (OP*)NULL; }<br/>+<br/> break;<br/> <br/> case 61:<br/>-#line 510 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}<br/>+#line 510 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 62:<br/>-#line 512 &quot;perly.y&quot;<br/>- { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); ;}<br/>+#line 512 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); }<br/>+<br/> break;<br/> <br/> case 63:<br/>-#line 514 &quot;perly.y&quot;<br/>- { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); ;}<br/>+#line 514 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); }<br/>+<br/> break;<br/> <br/> case 64:<br/>-#line 516 &quot;perly.y&quot;<br/>- { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[(3) - (3)].val.opval)), (ps[(1) - (3)].val.opval)); ;}<br/>+#line 516 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); }<br/>+<br/> break;<br/> <br/> case 65:<br/>-#line 518 &quot;perly.y&quot;<br/>- { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); ;}<br/>+#line 518 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); }<br/>+<br/> break;<br/> <br/> case 66:<br/>-#line 520 &quot;perly.y&quot;<br/>- { (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval), (OP*)NULL);<br/>- parser-&gt;copline = (line_t)(ps[(2) - (3)].val.ival); ;}<br/>+#line 520 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[0].val.opval), (ps[-2].val.opval), (OP*)NULL);<br/>+ parser-&gt;copline = (line_t)(ps[-1].val.ival); }<br/>+<br/> break;<br/> <br/> case 67:<br/>-#line 523 &quot;perly.y&quot;<br/>- { (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); ;}<br/>+#line 523 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); }<br/>+<br/> break;<br/> <br/> case 68:<br/>-#line 528 &quot;perly.y&quot;<br/>- { (yyval.opval) = (OP*)NULL; ;}<br/>+#line 528 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (OP*)NULL; }<br/>+<br/> break;<br/> <br/> case 69:<br/>-#line 530 &quot;perly.y&quot;<br/>+#line 530 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- ((ps[(2) - (2)].val.opval))-&gt;op_flags |= OPf_PARENS;<br/>- (yyval.opval) = op_scope((ps[(2) - (2)].val.opval));<br/>- ;}<br/>+ ((ps[0].val.opval))-&gt;op_flags |= OPf_PARENS;<br/>+ (yyval.opval) = op_scope((ps[0].val.opval));<br/>+ }<br/>+<br/> break;<br/> <br/> case 70:<br/>-#line 535 &quot;perly.y&quot;<br/>- { parser-&gt;copline = (line_t)(ps[(1) - (6)].val.ival);<br/>+#line 535 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { parser-&gt;copline = (line_t)(ps[-5].val.ival);<br/> (yyval.opval) = newCONDOP(0,<br/>- newSTATEOP(OPf_SPECIAL,NULL,(ps[(3) - (6)].val.opval)),<br/>- op_scope((ps[(5) - (6)].val.opval)), (ps[(6) - (6)].val.opval));<br/>+ newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)),<br/>+ op_scope((ps[-1].val.opval)), (ps[0].val.opval));<br/> PL_hints |= HINT_BLOCK_SCOPE;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 71:<br/>-#line 545 &quot;perly.y&quot;<br/>- { (yyval.opval) = (OP*)NULL; ;}<br/>+#line 545 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (OP*)NULL; }<br/>+<br/> break;<br/> <br/> case 72:<br/>-#line 547 &quot;perly.y&quot;<br/>- { (yyval.opval) = op_scope((ps[(2) - (2)].val.opval)); ;}<br/>+#line 547 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = op_scope((ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 73:<br/>-#line 552 &quot;perly.y&quot;<br/>+#line 552 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.ival) = (PL_min_intro_pending &amp;&amp;<br/> PL_max_intro_pending &gt;= PL_min_intro_pending);<br/>- intro_my(); ;}<br/>+ intro_my(); }<br/>+<br/> break;<br/> <br/> case 74:<br/>-#line 558 &quot;perly.y&quot;<br/>- { (yyval.opval) = (OP*)NULL; ;}<br/>+#line 558 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (OP*)NULL; }<br/>+<br/> break;<br/> <br/> case 76:<br/>-#line 564 &quot;perly.y&quot;<br/>+#line 564 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { YYSTYPE tmplval;<br/> (void)scan_num(&quot;1&quot;, &amp;tmplval);<br/>- (yyval.opval) = tmplval.opval; ;}<br/>+ (yyval.opval) = tmplval.opval; }<br/>+<br/> break;<br/> <br/> case 78:<br/>-#line 572 &quot;perly.y&quot;<br/>- { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); ;}<br/>+#line 572 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = invert(scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 79:<br/>-#line 577 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}<br/>+#line 577 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); intro_my(); }<br/>+<br/> break;<br/> <br/> case 80:<br/>-#line 581 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}<br/>+#line 581 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); intro_my(); }<br/>+<br/> break;<br/> <br/> case 81:<br/>-#line 584 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}<br/>+#line 584 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 82:<br/>-#line 585 &quot;perly.y&quot;<br/>- { (yyval.opval) = (OP*)NULL; ;}<br/>+#line 585 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (OP*)NULL; }<br/>+<br/> break;<br/> <br/> case 83:<br/>-#line 589 &quot;perly.y&quot;<br/>+#line 589 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.ival) = start_subparse(FALSE, 0);<br/>- SAVEFREESV(PL_compcv); ;}<br/>+ SAVEFREESV(PL_compcv); }<br/>+<br/> break;<br/> <br/> case 84:<br/>-#line 595 &quot;perly.y&quot;<br/>+#line 595 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.ival) = start_subparse(FALSE, CVf_ANON);<br/>- SAVEFREESV(PL_compcv); ;}<br/>+ SAVEFREESV(PL_compcv); }<br/>+<br/> break;<br/> <br/> case 85:<br/>-#line 600 &quot;perly.y&quot;<br/>+#line 600 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.ival) = start_subparse(TRUE, 0);<br/>- SAVEFREESV(PL_compcv); ;}<br/>+ SAVEFREESV(PL_compcv); }<br/>+<br/> break;<br/> <br/> case 88:<br/>-#line 611 &quot;perly.y&quot;<br/>- { (yyval.opval) = (OP*)NULL; ;}<br/>+#line 611 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (OP*)NULL; }<br/>+<br/> break;<br/> <br/> case 90:<br/>-#line 617 &quot;perly.y&quot;<br/>- { (yyval.opval) = (OP*)NULL; ;}<br/>+#line 617 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (OP*)NULL; }<br/>+<br/> break;<br/> <br/> case 91:<br/>-#line 619 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}<br/>+#line 619 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 92:<br/>-#line 621 &quot;perly.y&quot;<br/>- { (yyval.opval) = (OP*)NULL; ;}<br/>+#line 621 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (OP*)NULL; }<br/>+<br/> break;<br/> <br/> case 93:<br/>-#line 626 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}<br/>+#line 626 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 94:<br/>-#line 628 &quot;perly.y&quot;<br/>- { (yyval.opval) = (OP*)NULL; ;}<br/>+#line 628 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (OP*)NULL; }<br/>+<br/> break;<br/> <br/> case 95:<br/>-#line 633 &quot;perly.y&quot;<br/>+#line 633 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> /* We shouldn&#39;t get here otherwise */<br/> assert(FEATURE_SIGNATURES_IS_ENABLED);<br/>@@ -712,319 +800,371 @@ case 2:<br/> packWARN(WARN_EXPERIMENTAL__SIGNATURES),<br/> &quot;The signatures feature is experimental&quot;);<br/> (yyval.opval) = parse_subsignature();<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 96:<br/>-#line 643 &quot;perly.y&quot;<br/>+#line 643 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(2) - (3)].val.opval),<br/>+ (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval),<br/> newSTATEOP(0, NULL, sawparens(newNULLLIST())));<br/> parser-&gt;expect = XATTRBLOCK;<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 98:<br/>-#line 652 &quot;perly.y&quot;<br/>- { (yyval.opval) = (OP*)NULL; ;}<br/>+#line 652 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (OP*)NULL; }<br/>+<br/> break;<br/> <br/> case 99:<br/>-#line 657 &quot;perly.y&quot;<br/>- { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}<br/>+#line 657 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 100:<br/>-#line 659 &quot;perly.y&quot;<br/>- { (yyval.opval) = newLOGOP((ps[(2) - (3)].val.ival), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}<br/>+#line 659 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 101:<br/>-#line 661 &quot;perly.y&quot;<br/>- { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}<br/>+#line 661 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 103:<br/>-#line 667 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (2)].val.opval); ;}<br/>+#line 667 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[-1].val.opval); }<br/>+<br/> break;<br/> <br/> case 104:<br/>-#line 669 &quot;perly.y&quot;<br/>+#line 669 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/>- OP* term = (ps[(3) - (3)].val.opval);<br/>- (yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (3)].val.opval), term);<br/>- ;}<br/>+ OP* term = (ps[0].val.opval);<br/>+ (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term);<br/>+ }<br/>+<br/> break;<br/> <br/> case 106:<br/>-#line 678 &quot;perly.y&quot;<br/>- { (yyval.opval) = op_convert_list((ps[(1) - (3)].val.ival), OPf_STACKED,<br/>- op_prepend_elem(OP_LIST, newGVREF((ps[(1) - (3)].val.ival),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );<br/>- ;}<br/>+#line 678 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED,<br/>+ op_prepend_elem(OP_LIST, newGVREF((ps[-2].val.ival),(ps[-1].val.opval)), (ps[0].val.opval)) );<br/>+ }<br/>+<br/> break;<br/> <br/> case 107:<br/>-#line 682 &quot;perly.y&quot;<br/>- { (yyval.opval) = op_convert_list((ps[(1) - (5)].val.ival), OPf_STACKED,<br/>- op_prepend_elem(OP_LIST, newGVREF((ps[(1) - (5)].val.ival),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );<br/>- ;}<br/>+#line 682 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED,<br/>+ op_prepend_elem(OP_LIST, newGVREF((ps[-4].val.ival),(ps[-2].val.opval)), (ps[-1].val.opval)) );<br/>+ }<br/>+<br/> break;<br/> <br/> case 108:<br/>-#line 686 &quot;perly.y&quot;<br/>+#line 686 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,<br/> op_append_elem(OP_LIST,<br/>- op_prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)),<br/>- newMETHOP(OP_METHOD, 0, (ps[(3) - (6)].val.opval))));<br/>- ;}<br/>+ op_prepend_elem(OP_LIST, scalar((ps[-5].val.opval)), (ps[-1].val.opval)),<br/>+ newMETHOP(OP_METHOD, 0, (ps[-3].val.opval))));<br/>+ }<br/>+<br/> break;<br/> <br/> case 109:<br/>-#line 692 &quot;perly.y&quot;<br/>+#line 692 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,<br/>- op_append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),<br/>- newMETHOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));<br/>- ;}<br/>+ op_append_elem(OP_LIST, scalar((ps[-2].val.opval)),<br/>+ newMETHOP(OP_METHOD, 0, (ps[0].val.opval))));<br/>+ }<br/>+<br/> break;<br/> <br/> case 110:<br/>-#line 697 &quot;perly.y&quot;<br/>+#line 697 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,<br/> op_append_elem(OP_LIST,<br/>- op_prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),<br/>- newMETHOP(OP_METHOD, 0, (ps[(1) - (3)].val.opval))));<br/>- ;}<br/>+ op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)),<br/>+ newMETHOP(OP_METHOD, 0, (ps[-2].val.opval))));<br/>+ }<br/>+<br/> break;<br/> <br/> case 111:<br/>-#line 703 &quot;perly.y&quot;<br/>+#line 703 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,<br/> op_append_elem(OP_LIST,<br/>- op_prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),<br/>- newMETHOP(OP_METHOD, 0, (ps[(1) - (5)].val.opval))));<br/>- ;}<br/>+ op_prepend_elem(OP_LIST, (ps[-3].val.opval), (ps[-1].val.opval)),<br/>+ newMETHOP(OP_METHOD, 0, (ps[-4].val.opval))));<br/>+ }<br/>+<br/> break;<br/> <br/> case 112:<br/>-#line 709 &quot;perly.y&quot;<br/>- { (yyval.opval) = op_convert_list((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); ;}<br/>+#line 709 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 113:<br/>-#line 711 &quot;perly.y&quot;<br/>- { (yyval.opval) = op_convert_list((ps[(1) - (4)].val.ival), 0, (ps[(3) - (4)].val.opval)); ;}<br/>+#line 711 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }<br/>+<br/> break;<br/> <br/> case 114:<br/>-#line 713 &quot;perly.y&quot;<br/>+#line 713 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { SvREFCNT_inc_simple_void(PL_compcv);<br/>- (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); ;}<br/>+ (yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, (OP*)NULL, (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 115:<br/>-#line 716 &quot;perly.y&quot;<br/>+#line 716 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,<br/> op_append_elem(OP_LIST,<br/>- op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));<br/>- ;}<br/>+ op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), (ps[-4].val.opval)));<br/>+ }<br/>+<br/> break;<br/> <br/> case 118:<br/>-#line 731 &quot;perly.y&quot;<br/>- { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval))); ;}<br/>+#line 731 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); }<br/>+<br/> break;<br/> <br/> case 119:<br/>-#line 733 &quot;perly.y&quot;<br/>- { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));<br/>- ;}<br/>+#line 733 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval)));<br/>+ }<br/>+<br/> break;<br/> <br/> case 120:<br/>-#line 736 &quot;perly.y&quot;<br/>+#line 736 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newBINOP(OP_AELEM, 0,<br/>- ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),<br/>- scalar((ps[(4) - (5)].val.opval)));<br/>- ;}<br/>+ ref(newAVREF((ps[-4].val.opval)),OP_RV2AV),<br/>+ scalar((ps[-1].val.opval)));<br/>+ }<br/>+<br/> break;<br/> <br/> case 121:<br/>-#line 741 &quot;perly.y&quot;<br/>+#line 741 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newBINOP(OP_AELEM, 0,<br/>- ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),<br/>- scalar((ps[(3) - (4)].val.opval)));<br/>- ;}<br/>+ ref(newAVREF((ps[-3].val.opval)),OP_RV2AV),<br/>+ scalar((ps[-1].val.opval)));<br/>+ }<br/>+<br/> break;<br/> <br/> case 122:<br/>-#line 746 &quot;perly.y&quot;<br/>- { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval)));<br/>- ;}<br/>+#line 746 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval)));<br/>+ }<br/>+<br/> break;<br/> <br/> case 123:<br/>-#line 749 &quot;perly.y&quot;<br/>+#line 749 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newBINOP(OP_HELEM, 0,<br/>- ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),<br/>- jmaybe((ps[(4) - (6)].val.opval))); ;}<br/>+ ref(newHVREF((ps[-5].val.opval)),OP_RV2HV),<br/>+ jmaybe((ps[-2].val.opval))); }<br/>+<br/> break;<br/> <br/> case 124:<br/>-#line 753 &quot;perly.y&quot;<br/>+#line 753 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newBINOP(OP_HELEM, 0,<br/>- ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),<br/>- jmaybe((ps[(3) - (5)].val.opval))); ;}<br/>+ ref(newHVREF((ps[-4].val.opval)),OP_RV2HV),<br/>+ jmaybe((ps[-2].val.opval))); }<br/>+<br/> break;<br/> <br/> case 125:<br/>-#line 757 &quot;perly.y&quot;<br/>+#line 757 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,<br/>- newCVREF(0, scalar((ps[(1) - (4)].val.opval)))); ;}<br/>+ newCVREF(0, scalar((ps[-3].val.opval)))); }<br/>+<br/> break;<br/> <br/> case 126:<br/>-#line 760 &quot;perly.y&quot;<br/>+#line 760 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,<br/>- op_append_elem(OP_LIST, (ps[(4) - (5)].val.opval),<br/>- newCVREF(0, scalar((ps[(1) - (5)].val.opval))))); ;}<br/>+ op_append_elem(OP_LIST, (ps[-1].val.opval),<br/>+ newCVREF(0, scalar((ps[-4].val.opval))))); }<br/>+<br/> break;<br/> <br/> case 127:<br/>-#line 765 &quot;perly.y&quot;<br/>+#line 765 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,<br/>- op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval),<br/>- newCVREF(0, scalar((ps[(1) - (4)].val.opval))))); ;}<br/>+ op_append_elem(OP_LIST, (ps[-1].val.opval),<br/>+ newCVREF(0, scalar((ps[-3].val.opval))))); }<br/>+<br/> break;<br/> <br/> case 128:<br/>-#line 769 &quot;perly.y&quot;<br/>+#line 769 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,<br/>- newCVREF(0, scalar((ps[(1) - (3)].val.opval)))); ;}<br/>+ newCVREF(0, scalar((ps[-2].val.opval)))); }<br/>+<br/> break;<br/> <br/> case 129:<br/>-#line 772 &quot;perly.y&quot;<br/>- { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval)); ;}<br/>+#line 772 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }<br/>+<br/> break;<br/> <br/> case 130:<br/>-#line 774 &quot;perly.y&quot;<br/>- { (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval)); ;}<br/>+#line 774 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }<br/>+<br/> break;<br/> <br/> case 131:<br/>-#line 776 &quot;perly.y&quot;<br/>- { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL); ;}<br/>+#line 776 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (OP*)NULL); }<br/>+<br/> break;<br/> <br/> case 132:<br/>-#line 781 &quot;perly.y&quot;<br/>- { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), (ps[(2) - (3)].val.ival), (ps[(3) - (3)].val.opval)); ;}<br/>+#line 781 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 133:<br/>-#line 783 &quot;perly.y&quot;<br/>- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}<br/>+#line 783 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 134:<br/>-#line 785 &quot;perly.y&quot;<br/>- { if ((ps[(2) - (3)].val.ival) != OP_REPEAT)<br/>- scalar((ps[(1) - (3)].val.opval));<br/>- (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));<br/>- ;}<br/>+#line 785 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { if ((ps[-1].val.ival) != OP_REPEAT)<br/>+ scalar((ps[-2].val.opval));<br/>+ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, (ps[-2].val.opval), scalar((ps[0].val.opval)));<br/>+ }<br/>+<br/> break;<br/> <br/> case 135:<br/>-#line 790 &quot;perly.y&quot;<br/>- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}<br/>+#line 790 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 136:<br/>-#line 792 &quot;perly.y&quot;<br/>- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}<br/>+#line 792 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 137:<br/>-#line 794 &quot;perly.y&quot;<br/>- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}<br/>+#line 794 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 138:<br/>-#line 796 &quot;perly.y&quot;<br/>- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}<br/>+#line 796 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 139:<br/>-#line 798 &quot;perly.y&quot;<br/>- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}<br/>+#line 798 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 140:<br/>-#line 800 &quot;perly.y&quot;<br/>- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}<br/>+#line 800 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 141:<br/>-#line 802 &quot;perly.y&quot;<br/>- { (yyval.opval) = newRANGE((ps[(2) - (3)].val.ival), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}<br/>+#line 802 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 142:<br/>-#line 804 &quot;perly.y&quot;<br/>- { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}<br/>+#line 804 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 143:<br/>-#line 806 &quot;perly.y&quot;<br/>- { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}<br/>+#line 806 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 144:<br/>-#line 808 &quot;perly.y&quot;<br/>- { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}<br/>+#line 808 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 145:<br/>-#line 810 &quot;perly.y&quot;<br/>- { (yyval.opval) = bind_match((ps[(2) - (3)].val.ival), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}<br/>+#line 810 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 146:<br/>-#line 815 &quot;perly.y&quot;<br/>- { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval))); ;}<br/>+#line 815 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 147:<br/>-#line 817 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}<br/>+#line 817 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 148:<br/>-#line 820 &quot;perly.y&quot;<br/>- { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); ;}<br/>+#line 820 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 149:<br/>-#line 822 &quot;perly.y&quot;<br/>- { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, scalar((ps[(2) - (2)].val.opval))); ;}<br/>+#line 822 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 150:<br/>-#line 824 &quot;perly.y&quot;<br/>+#line 824 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newUNOP(OP_POSTINC, 0,<br/>- op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC)); ;}<br/>+ op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); }<br/>+<br/> break;<br/> <br/> case 151:<br/>-#line 827 &quot;perly.y&quot;<br/>+#line 827 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newUNOP(OP_POSTDEC, 0,<br/>- op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));;}<br/>+ op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));}<br/>+<br/> break;<br/> <br/> case 152:<br/>-#line 830 &quot;perly.y&quot;<br/>+#line 830 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = op_convert_list(OP_JOIN, 0,<br/> op_append_elem(<br/> OP_LIST,<br/>@@ -1032,523 +1172,610 @@ case 2:<br/> newSVOP(OP_CONST,0,<br/> newSVpvs(&quot;\&quot;&quot;))<br/> )),<br/>- (ps[(1) - (2)].val.opval)<br/>+ (ps[-1].val.opval)<br/> ));<br/>- ;}<br/>+ }<br/>+<br/> break;<br/> <br/> case 153:<br/>-#line 841 &quot;perly.y&quot;<br/>+#line 841 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newUNOP(OP_PREINC, 0,<br/>- op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC)); ;}<br/>+ op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); }<br/>+<br/> break;<br/> <br/> case 154:<br/>-#line 844 &quot;perly.y&quot;<br/>+#line 844 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newUNOP(OP_PREDEC, 0,<br/>- op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC)); ;}<br/>+ op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); }<br/>+<br/> break;<br/> <br/> case 155:<br/>-#line 851 &quot;perly.y&quot;<br/>- { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval)); ;}<br/>+#line 851 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newANONLIST((ps[-1].val.opval)); }<br/>+<br/> break;<br/> <br/> case 156:<br/>-#line 853 &quot;perly.y&quot;<br/>- { (yyval.opval) = newANONLIST((OP*)NULL);;}<br/>+#line 853 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newANONLIST((OP*)NULL);}<br/>+<br/> break;<br/> <br/> case 157:<br/>-#line 855 &quot;perly.y&quot;<br/>- { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval)); ;}<br/>+#line 855 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newANONHASH((ps[-2].val.opval)); }<br/>+<br/> break;<br/> <br/> case 158:<br/>-#line 857 &quot;perly.y&quot;<br/>- { (yyval.opval) = newANONHASH((OP*)NULL); ;}<br/>+#line 857 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newANONHASH((OP*)NULL); }<br/>+<br/> break;<br/> <br/> case 159:<br/>-#line 859 &quot;perly.y&quot;<br/>+#line 859 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { SvREFCNT_inc_simple_void(PL_compcv);<br/>- (yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)); ;}<br/>+ (yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 160:<br/>-#line 862 &quot;perly.y&quot;<br/>+#line 862 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> OP *body;<br/>- if (parser-&gt;copline &gt; (line_t)(ps[(6) - (8)].val.ival))<br/>- parser-&gt;copline = (line_t)(ps[(6) - (8)].val.ival);<br/>- body = block_end((ps[(3) - (8)].val.ival),<br/>- op_append_list(OP_LINESEQ, (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval)));<br/>+ if (parser-&gt;copline &gt; (line_t)(ps[-2].val.ival))<br/>+ parser-&gt;copline = (line_t)(ps[-2].val.ival);<br/>+ body = block_end((ps[-5].val.ival),<br/>+ op_append_list(OP_LINESEQ, (ps[-4].val.opval), (ps[-1].val.opval)));<br/> SvREFCNT_inc_simple_void(PL_compcv);<br/>- (yyval.opval) = newANONATTRSUB((ps[(2) - (8)].val.ival), NULL, (ps[(5) - (8)].val.opval), body);<br/>- ;}<br/>+ (yyval.opval) = newANONATTRSUB((ps[-6].val.ival), NULL, (ps[-3].val.opval), body);<br/>+ }<br/>+<br/> break;<br/> <br/> case 161:<br/>-#line 876 &quot;perly.y&quot;<br/>- { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), (ps[(1) - (2)].val.ival));;}<br/>+#line 876 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));}<br/>+<br/> break;<br/> <br/> case 162:<br/>-#line 878 &quot;perly.y&quot;<br/>- { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval)));;}<br/>+#line 878 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));}<br/>+<br/> break;<br/> <br/> case 167:<br/>-#line 886 &quot;perly.y&quot;<br/>- { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval)); ;}<br/>+#line 886 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 168:<br/>-#line 888 &quot;perly.y&quot;<br/>- { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[(2) - (2)].val.opval)); ;}<br/>+#line 888 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 169:<br/>-#line 890 &quot;perly.y&quot;<br/>- { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[(3) - (3)].val.opval),1)); ;}<br/>+#line 890 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); }<br/>+<br/> break;<br/> <br/> case 170:<br/>-#line 892 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}<br/>+#line 892 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 171:<br/>-#line 894 &quot;perly.y&quot;<br/>- { (yyval.opval) = localize((ps[(2) - (2)].val.opval),0); ;}<br/>+#line 894 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = localize((ps[0].val.opval),0); }<br/>+<br/> break;<br/> <br/> case 172:<br/>-#line 896 &quot;perly.y&quot;<br/>- { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); ;}<br/>+#line 896 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = sawparens((ps[-1].val.opval)); }<br/>+<br/> break;<br/> <br/> case 173:<br/>-#line 898 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}<br/>+#line 898 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 174:<br/>-#line 900 &quot;perly.y&quot;<br/>- { (yyval.opval) = sawparens(newNULLLIST()); ;}<br/>+#line 900 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = sawparens(newNULLLIST()); }<br/>+<br/> break;<br/> <br/> case 175:<br/>-#line 902 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}<br/>+#line 902 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 176:<br/>-#line 904 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}<br/>+#line 904 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 177:<br/>-#line 906 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}<br/>+#line 906 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 178:<br/>-#line 908 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}<br/>+#line 908 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 179:<br/>-#line 910 &quot;perly.y&quot;<br/>- { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;}<br/>+#line 910 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}<br/>+<br/> break;<br/> <br/> case 180:<br/>-#line 912 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}<br/>+#line 912 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 181:<br/>-#line 914 &quot;perly.y&quot;<br/>+#line 914 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = op_prepend_elem(OP_ASLICE,<br/> newOP(OP_PUSHMARK, 0),<br/> newLISTOP(OP_ASLICE, 0,<br/>- list((ps[(3) - (4)].val.opval)),<br/>- ref((ps[(1) - (4)].val.opval), OP_ASLICE)));<br/>- if ((yyval.opval) &amp;&amp; (ps[(1) - (4)].val.opval))<br/>+ list((ps[-1].val.opval)),<br/>+ ref((ps[-3].val.opval), OP_ASLICE)));<br/>+ if ((yyval.opval) &amp;&amp; (ps[-3].val.opval))<br/> (yyval.opval)-&gt;op_private |=<br/>- (ps[(1) - (4)].val.opval)-&gt;op_private &amp; OPpSLICEWARNING;<br/>- ;}<br/>+ (ps[-3].val.opval)-&gt;op_private &amp; OPpSLICEWARNING;<br/>+ }<br/>+<br/> break;<br/> <br/> case 182:<br/>-#line 924 &quot;perly.y&quot;<br/>+#line 924 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = op_prepend_elem(OP_KVASLICE,<br/> newOP(OP_PUSHMARK, 0),<br/> newLISTOP(OP_KVASLICE, 0,<br/>- list((ps[(3) - (4)].val.opval)),<br/>- ref(oopsAV((ps[(1) - (4)].val.opval)), OP_KVASLICE)));<br/>- if ((yyval.opval) &amp;&amp; (ps[(1) - (4)].val.opval))<br/>+ list((ps[-1].val.opval)),<br/>+ ref(oopsAV((ps[-3].val.opval)), OP_KVASLICE)));<br/>+ if ((yyval.opval) &amp;&amp; (ps[-3].val.opval))<br/> (yyval.opval)-&gt;op_private |=<br/>- (ps[(1) - (4)].val.opval)-&gt;op_private &amp; OPpSLICEWARNING;<br/>- ;}<br/>+ (ps[-3].val.opval)-&gt;op_private &amp; OPpSLICEWARNING;<br/>+ }<br/>+<br/> break;<br/> <br/> case 183:<br/>-#line 934 &quot;perly.y&quot;<br/>+#line 934 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = op_prepend_elem(OP_HSLICE,<br/> newOP(OP_PUSHMARK, 0),<br/> newLISTOP(OP_HSLICE, 0,<br/>- list((ps[(3) - (5)].val.opval)),<br/>- ref(oopsHV((ps[(1) - (5)].val.opval)), OP_HSLICE)));<br/>- if ((yyval.opval) &amp;&amp; (ps[(1) - (5)].val.opval))<br/>+ list((ps[-2].val.opval)),<br/>+ ref(oopsHV((ps[-4].val.opval)), OP_HSLICE)));<br/>+ if ((yyval.opval) &amp;&amp; (ps[-4].val.opval))<br/> (yyval.opval)-&gt;op_private |=<br/>- (ps[(1) - (5)].val.opval)-&gt;op_private &amp; OPpSLICEWARNING;<br/>- ;}<br/>+ (ps[-4].val.opval)-&gt;op_private &amp; OPpSLICEWARNING;<br/>+ }<br/>+<br/> break;<br/> <br/> case 184:<br/>-#line 944 &quot;perly.y&quot;<br/>+#line 944 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,<br/> newOP(OP_PUSHMARK, 0),<br/> newLISTOP(OP_KVHSLICE, 0,<br/>- list((ps[(3) - (5)].val.opval)),<br/>- ref((ps[(1) - (5)].val.opval), OP_KVHSLICE)));<br/>- if ((yyval.opval) &amp;&amp; (ps[(1) - (5)].val.opval))<br/>+ list((ps[-2].val.opval)),<br/>+ ref((ps[-4].val.opval), OP_KVHSLICE)));<br/>+ if ((yyval.opval) &amp;&amp; (ps[-4].val.opval))<br/> (yyval.opval)-&gt;op_private |=<br/>- (ps[(1) - (5)].val.opval)-&gt;op_private &amp; OPpSLICEWARNING;<br/>- ;}<br/>+ (ps[-4].val.opval)-&gt;op_private &amp; OPpSLICEWARNING;<br/>+ }<br/>+<br/> break;<br/> <br/> case 185:<br/>-#line 954 &quot;perly.y&quot;<br/>- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}<br/>+#line 954 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = (ps[0].val.opval); }<br/>+<br/> break;<br/> <br/> case 186:<br/>-#line 956 &quot;perly.y&quot;<br/>- { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); ;}<br/>+#line 956 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 187:<br/>-#line 958 &quot;perly.y&quot;<br/>- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));<br/>- ;}<br/>+#line 958 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval)));<br/>+ }<br/>+<br/> break;<br/> <br/> case 188:<br/>-#line 961 &quot;perly.y&quot;<br/>+#line 961 &quot;perly.y&quot; /* yacc.c:1646 */<br/> {<br/> (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,<br/>- op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval))));<br/>- ;}<br/>+ op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval))));<br/>+ }<br/>+<br/> break;<br/> <br/> case 189:<br/>-#line 966 &quot;perly.y&quot;<br/>+#line 966 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,<br/>- op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval))));<br/>- ;}<br/>+ op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval))));<br/>+ }<br/>+<br/> break;<br/> <br/> case 190:<br/>-#line 970 &quot;perly.y&quot;<br/>- { (yyval.opval) = newSVREF((ps[(1) - (4)].val.opval)); ;}<br/>+#line 970 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newSVREF((ps[-3].val.opval)); }<br/>+<br/> break;<br/> <br/> case 191:<br/>-#line 972 &quot;perly.y&quot;<br/>- { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); ;}<br/>+#line 972 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newAVREF((ps[-3].val.opval)); }<br/>+<br/> break;<br/> <br/> case 192:<br/>-#line 974 &quot;perly.y&quot;<br/>- { (yyval.opval) = newHVREF((ps[(1) - (4)].val.opval)); ;}<br/>+#line 974 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newHVREF((ps[-3].val.opval)); }<br/>+<br/> break;<br/> <br/> case 193:<br/>-#line 976 &quot;perly.y&quot;<br/>+#line 976 &quot;perly.y&quot; /* yacc.c:1646 */<br/> { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,<br/>- scalar(newCVREF((ps[(3) - (4)].val.ival),(ps[(1) - (4)].val.opval)))); ;}<br/>+ scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }<br/>+<br/> break;<br/> <br/> case 194:<br/>-#line 979 &quot;perly.y&quot;<br/>- { (yyval.opval) = newGVREF(0,(ps[(1) - (4)].val.opval)); ;}<br/>+#line 979 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }<br/>+<br/> break;<br/> <br/> case 195:<br/>-#line 981 &quot;perly.y&quot;<br/>- { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), OPf_SPECIAL);<br/>- PL_hints |= HINT_BLOCK_SCOPE; ;}<br/>+#line 981 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);<br/>+ PL_hints |= HINT_BLOCK_SCOPE; }<br/>+<br/> break;<br/> <br/> case 196:<br/>-#line 984 &quot;perly.y&quot;<br/>- { (yyval.opval) = newLOOPEX((ps[(1) - (2)].val.ival),(ps[(2) - (2)].val.opval)); ;}<br/>+#line 984 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }<br/>+<br/> break;<br/> <br/> case 197:<br/>-#line 986 &quot;perly.y&quot;<br/>- { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); ;}<br/>+#line 986 &quot;perly.y&quot; /* yacc.c:1646 */<br/>+ { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }<br/>+<br/> break;<br/> <br/> case 198:<br/>-#line 988 &quot;perly.y&quot;<br/>**** PATCH TRUNCATED AT 2000 LINES -- 2833 NOT SHOWN ****<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47669.html Wed, 20 Jul 2016 08:43:36 +0000 [perl.git] branch smoke-me/davem/bison4, deleted.v5.25.2-180-g3232a64 by Dave Mitchell In perl.git, the branch smoke-me/davem/bison4 has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=3232a64d92249c553b6194962ae61c8fbedc992a&gt;<br/><br/> was 3232a64d92249c553b6194962ae61c8fbedc992a<br/><br/>-----------------------------------------------------------------------<br/>3232a64d92249c553b6194962ae61c8fbedc992a rename &quot;WORD&quot; lexical token to &quot;BAREWORD&quot;<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47668.html Wed, 20 Jul 2016 08:43:35 +0000 [perl.git] branch smoke-me/khw-regcomp, created.v5.25.2-172-ge5cecfc by Karl Williamson In perl.git, the branch smoke-me/khw-regcomp has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/e5cecfcf9349adc14f88ce2a1f03dbada054824e?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at e5cecfcf9349adc14f88ce2a1f03dbada054824e (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit e5cecfcf9349adc14f88ce2a1f03dbada054824e<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Jul 20 01:43:47 2016 -0600<br/><br/> smoke<br/><br/>M embed.fnc<br/>M embed.h<br/>M proto.h<br/>M regcomp.c<br/><br/>commit 0d4f85c43fb44154a07c525f06e2bd44cc7e36ad<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Jul 6 12:02:27 2016 -0600<br/><br/> Revert &quot;XXX Comprehensive charset.t tests&quot;<br/> <br/> This reverts commit 4dcab3011263328856fe1ea24e32bc24fb445e6a.<br/><br/>M t/re/charset.t<br/><br/>commit 71299b902bba3d5964e564d511f974019d773f02<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Mon Feb 29 18:45:39 2016 -0700<br/><br/> XXX Comprehensive charset.t tests<br/><br/>M t/re/charset.t<br/><br/>commit 12712df538afc738489d33980dce11159d06c69f<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Feb 10 14:29:15 2016 -0700<br/><br/> XXX partial don&#39;t push regex: Add ASCII/NASCII regnodes<br/> <br/> These are a little more efficient than using the POSIXA(:ascii:)<br/> mechanism.<br/><br/>M pod/perldebguts.pod<br/>M regcomp.sym<br/>M regexec.c<br/>M regnodes.h<br/><br/>commit 0be393b6e9f051aa188b2f24fe1185fb41941f03<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Sat Feb 27 15:16:16 2016 -0700<br/><br/> Revert &quot;constant.pm lower memory use&quot;<br/><br/>M dist/constant/lib/constant.pm<br/><br/>commit ec34bfc2222d73a46395e2cd8428ea8dfa9ab70e<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Wed Feb 3 13:41:11 2016 -0700<br/><br/> constant.pm lower memory use<br/><br/>M dist/constant/lib/constant.pm<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47667.html Wed, 20 Jul 2016 07:45:43 +0000 [perl.git] branch smoke-me/khw-locale, created.v5.25.2-197-g517c5e8 by Karl Williamson In perl.git, the branch smoke-me/khw-locale has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/517c5e81891744d85fb5dff5367dae050fe92b34?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at 517c5e81891744d85fb5dff5367dae050fe92b34 (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit 517c5e81891744d85fb5dff5367dae050fe92b34<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Tue Jul 19 19:03:02 2016 -0600<br/><br/> later<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47666.html Wed, 20 Jul 2016 05:48:12 +0000 [perl.git] branch blead, updated. v5.25.2-197-g3a3625f by Tony Cook In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/3a3625f0ae05ec93b90af756e460a7803fafd8a2?hp=620f73f47d224d7d6fbe47dfaab9dddde6988742&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 3a3625f0ae05ec93b90af756e460a7803fafd8a2<br/>Author: Tony Cook &lt;tony@develop-help.com&gt;<br/>Date: Wed Jul 20 14:10:44 2016 +1000<br/><br/> (perl #128524) correct indentation for utf-8 key hash elements<br/> <br/> For utf-8 flagged keys the indentation was left as the default, the<br/> key length, and was not updated to the adjusted length after<br/> escaping and quoting.<br/> <br/> The test originally used a pre-rendered dump, but potentially other<br/> minor changes to the output would break that, now it simply compares<br/> against the output of the first case.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> dist/Data-Dumper/Dumper.xs | 4 ++--<br/> dist/Data-Dumper/t/bugs.t | 26 +++++++++++++++++++++++++-<br/> 2 files changed, 27 insertions(+), 3 deletions(-)<br/><br/>diff --git a/dist/Data-Dumper/Dumper.xs b/dist/Data-Dumper/Dumper.xs<br/>index 8220241..0dc7699 100644<br/>--- a/dist/Data-Dumper/Dumper.xs<br/>+++ b/dist/Data-Dumper/Dumper.xs<br/>@@ -886,7 +886,6 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,<br/> SV *sname;<br/> HE *entry = NULL;<br/> char *key;<br/>- STRLEN klen;<br/> SV *hval;<br/> AV *keys = NULL;<br/> <br/>@@ -976,6 +975,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,<br/> char *nkey_buffer = NULL;<br/> STRLEN nticks = 0;<br/> SV* keysv;<br/>+ STRLEN klen;<br/> STRLEN keylen;<br/> STRLEN nlen;<br/> bool do_utf8 = FALSE;<br/>@@ -1029,7 +1029,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,<br/> if (style-&gt;quotekeys || key_needs_quote(key,keylen)) {<br/> if (do_utf8 || style-&gt;useqq) {<br/> STRLEN ocur = SvCUR(retval);<br/>- nlen = esc_q_utf8(aTHX_ retval, key, klen, do_utf8, style-&gt;useqq);<br/>+ klen = nlen = esc_q_utf8(aTHX_ retval, key, klen, do_utf8, style-&gt;useqq);<br/> nkey = SvPVX(retval) + ocur;<br/> }<br/> else {<br/>diff --git a/dist/Data-Dumper/t/bugs.t b/dist/Data-Dumper/t/bugs.t<br/>index a440b0a..0a1ee8f 100644<br/>--- a/dist/Data-Dumper/t/bugs.t<br/>+++ b/dist/Data-Dumper/t/bugs.t<br/>@@ -12,7 +12,7 @@ BEGIN {<br/> }<br/> <br/> use strict;<br/>-use Test::More tests =&gt; 15;<br/>+use Test::More tests =&gt; 23;<br/> use Data::Dumper;<br/> <br/> {<br/>@@ -144,4 +144,28 @@ SKIP: {<br/> &amp;$tests;<br/> }<br/> <br/>+{ # https://rt.perl.org/Ticket/Display.html?id=128524<br/>+ my $want;<br/>+ my $runtime = &quot;runtime&quot;;<br/>+ my $requires = &quot;requires&quot;;<br/>+ utf8::upgrade(my $uruntime = $runtime);<br/>+ utf8::upgrade(my $urequires = $requires);<br/>+ for my $run ($runtime, $uruntime) {<br/>+ for my $req ($requires, $urequires) {<br/>+ my $data = { $run =&gt; { $req =&gt; { foo =&gt; &quot;bar&quot; } } };<br/>+ local $Data::Dumper::Useperl = 1;<br/>+ # we want them all the same<br/>+ defined $want or $want = Dumper($data);<br/>+ is(Dumper( $data ), $want, &quot;utf-8 indents&quot;);<br/>+ SKIP:<br/>+ {<br/>+ defined &amp;Data::Dumper::Dumpxs<br/>+ or skip &quot;No XS available&quot;, 1;<br/>+ local $Data::Dumper::Useperl = 0;<br/>+ is(Dumper( $data ), $want, &quot;utf8-indents&quot;);<br/>+ }<br/>+ }<br/>+ }<br/>+}<br/>+<br/> # EOF<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47665.html Wed, 20 Jul 2016 04:21:16 +0000 [perl.git] branch sprout/rstack, updated. v5.25.2-146-gc92c886 by Father Chrysostomos In perl.git, the branch sprout/rstack has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/c92c8868314eb43d4d3d5d0cf0dcaba78a0936ce?hp=d117a30680ee05d3baaadfee4c1960ae0585ab73&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit c92c8868314eb43d4d3d5d0cf0dcaba78a0936ce<br/>Author: Father Chrysostomos &lt;sprout@cpan.org&gt;<br/>Date: Mon Jul 18 18:08:28 2016 -0700<br/><br/> perl.h: defines for refcounted stack<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> perl.h | 5 +++++<br/> 1 file changed, 5 insertions(+)<br/><br/>diff --git a/perl.h b/perl.h<br/>index 2702cc1..b9fe4e2 100644<br/>--- a/perl.h<br/>+++ b/perl.h<br/>@@ -7220,6 +7220,11 @@ extern void moncontrol(int);<br/> <br/> #endif /* DOUBLE_HAS_NAN */<br/> <br/>+#define PERL_STACK_REFCOUNTED 1<br/>+#ifdef PERL_CORE<br/>+# define PERL_STACK_LOCALLY_REFCOUNTED 1<br/>+#endif<br/>+<br/> /*<br/> <br/> (KEEP THIS LAST IN perl.h!)<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47664.html Wed, 20 Jul 2016 02:30:49 +0000 [perl.git] branch blead, updated. v5.25.2-196-g620f73f by Karl Williamson In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/620f73f47d224d7d6fbe47dfaab9dddde6988742?hp=3df91f1a10601c50feeed86614da0d5be5b1ac59&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 620f73f47d224d7d6fbe47dfaab9dddde6988742<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Mon Jul 18 18:49:40 2016 -0600<br/><br/> lib/locale.t: Fix tests, add a test<br/> <br/> The tests assumed that the lowest collating non-NUL control was \001.<br/> This isn&#39;t necessarily true, and in a few locales caused the test to<br/> fail.<br/><br/>M lib/locale.t<br/><br/>commit 91c0e2e00f5144f79001f8ee8b627500b54809da<br/>Author: Karl Williamson &lt;khw@cpan.org&gt;<br/>Date: Tue May 24 11:41:32 2016 -0600<br/><br/> locale.c: Add some debugging statements<br/><br/>M locale.c<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> lib/locale.t | 19 +++++++++++++++----<br/> locale.c | 35 ++++++++++++++++++++++++++++++-----<br/> 2 files changed, 45 insertions(+), 9 deletions(-)<br/><br/>diff --git a/lib/locale.t b/lib/locale.t<br/>index 7917ea8..075b0e6 100644<br/>--- a/lib/locale.t<br/>+++ b/lib/locale.t<br/>@@ -1738,11 +1738,22 @@ foreach my $Locale (@Locale) {<br/> <br/> use locale;<br/> <br/>+ my @sorted_controls = sort @{$posixes{&#39;cntrl&#39;}};<br/>+ debug &quot;sorted :cntrl: = &quot;, disp_chars(@sorted_controls), &quot;\n&quot;;<br/>+<br/>+ ++$locales_test_number;<br/>+ $test_names{$locales_test_number}<br/>+ = &#39;Verify that \0 sorts before any other control&#39;;<br/>+ my $ok = $sorted_controls[0] eq &quot;\0&quot;;<br/>+ report_result($Locale, $locales_test_number, $ok);<br/>+ shift @sorted_controls;<br/>+ my $lowest_control = $sorted_controls[0];<br/>+<br/> ++$locales_test_number;<br/> $test_names{$locales_test_number}<br/>- = &#39;Skip in locales where \001 has primary sorting weight; &#39;<br/>+ = &#39;Skip in locales where all controls have primary sorting weight; &#39;<br/> . &#39;otherwise verify that \0 doesn\&#39;t have primary sorting weight&#39;;<br/>- if (&quot;a\001c&quot; lt &quot;ab&quot;) {<br/>+ if (&quot;a${lowest_control}c&quot; lt &quot;ab&quot;) {<br/> report_result($Locale, $locales_test_number, 1);<br/> }<br/> else {<br/>@@ -1753,14 +1764,14 @@ foreach my $Locale (@Locale) {<br/> ++$locales_test_number;<br/> $test_names{$locales_test_number}<br/> = &#39;Verify that strings with embedded NUL collate&#39;;<br/>- my $ok = &quot;a\0a\0a&quot; lt &quot;a\001a\001a&quot;;<br/>+ $ok = &quot;a\0a\0a&quot; lt &quot;a${lowest_control}a${lowest_control}a&quot;;<br/> report_result($Locale, $locales_test_number, $ok);<br/> <br/> ++$locales_test_number;<br/> $test_names{$locales_test_number}<br/> = &#39;Verify that strings with embedded NUL and &#39;<br/> . &#39;extra trailing NUL collate&#39;;<br/>- $ok = &quot;a\0a\0&quot; lt &quot;a\001a\001&quot;;<br/>+ $ok = &quot;a\0a\0&quot; lt &quot;a${lowest_control}a${lowest_control}&quot;;<br/> report_result($Locale, $locales_test_number, $ok);<br/> <br/> ++$locales_test_number;<br/>diff --git a/locale.c b/locale.c<br/>index cc3adac..fb3e676 100644<br/>--- a/locale.c<br/>+++ b/locale.c<br/>@@ -1488,6 +1488,7 @@ Perl__mem_collxfrm(pTHX_ const char *input_string,<br/> includes the collation index<br/> prefixed. */<br/> <br/>+ DEBUG_Lv(PerlIO_printf(Perl_debug_log, &quot;Looking to replace NUL\n&quot;));<br/> /* Look through all legal code points (NUL isn&#39;t) */<br/> for (j = 1; j &lt; 256; j++) {<br/> char * x; /* j&#39;s xfrm plus collation index */<br/>@@ -1555,8 +1556,8 @@ Perl__mem_collxfrm(pTHX_ const char *input_string,<br/> }<br/> <br/> DEBUG_L(PerlIO_printf(Perl_debug_log,<br/>- &quot;_mem_collxfrm: lowest collating control in the 0-255 &quot;<br/>- &quot;range in locale %s is 0x%02X\n&quot;,<br/>+ &quot;_mem_collxfrm: lowest collating non-NUL control in the &quot;<br/>+ &quot;0-255 range in locale %s is 0x%02X\n&quot;,<br/> PL_collation_name,<br/> cur_min_cp));<br/> if (DEBUG_Lv_TEST) {<br/>@@ -1875,10 +1876,34 @@ Perl__mem_collxfrm(pTHX_ const char *input_string,<br/> #ifdef DEBUGGING<br/> if (DEBUG_Lv_TEST || debug_initialization) {<br/> unsigned i;<br/>+ char * t = s;<br/>+ bool prev_was_printable = TRUE;<br/>+ bool first_time = TRUE;<br/> PerlIO_printf(Perl_debug_log,<br/>- &quot;_mem_collxfrm[%d]: returning %&quot;UVuf&quot; for locale %s &#39;%s&#39;\n&quot;,<br/>- PL_collation_ix, *xlen, PL_collation_name, input_string);<br/>- PerlIO_printf(Perl_debug_log, &quot;Its xfrm is&quot;);<br/>+ &quot;_mem_collxfrm[%d]: returning %&quot;UVuf&quot; for locale %s string &#39;&quot;,<br/>+ PL_collation_ix, *xlen, PL_collation_name);<br/>+ while (t &lt; s + len ) {<br/>+ UV cp = (utf8)<br/>+ ? utf8_to_uvchr_buf((U8 *) t, s + len, NULL)<br/>+ : * (U8 *) t;<br/>+ if (isPRINT(cp)) {<br/>+ if (! prev_was_printable) {<br/>+ PerlIO_printf(Perl_debug_log, &quot; &quot;);<br/>+ }<br/>+ PerlIO_printf(Perl_debug_log, &quot;%c&quot;, (U8) cp);<br/>+ prev_was_printable = TRUE;<br/>+ }<br/>+ else {<br/>+ if (! first_time) {<br/>+ PerlIO_printf(Perl_debug_log, &quot; &quot;);<br/>+ }<br/>+ PerlIO_printf(Perl_debug_log, &quot;%02&quot;UVXf&quot;&quot;, cp);<br/>+ prev_was_printable = FALSE;<br/>+ }<br/>+ t += (utf8) ? UTF8SKIP(t) : 1;<br/>+ first_time = FALSE;<br/>+ }<br/>+ PerlIO_printf(Perl_debug_log, &quot;&#39;\nIts xfrm is&quot;);<br/> for (i = COLLXFRM_HDR_LEN; i &lt; *xlen + COLLXFRM_HDR_LEN; i++) {<br/> PerlIO_printf(Perl_debug_log, &quot; %02x&quot;, (U8) xbuf[i]);<br/> }<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47663.html Tue, 19 Jul 2016 03:30:46 +0000 [perl.git] branch maint-5.24, updated. v5.24.1-RC1-3-g7682ed2 by Steve Hay via perl5-changes In perl.git, the branch maint-5.24 has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/7682ed29a1a27848f952c4d878fd57f25b603d57?hp=f5f5971a32aa536d2fef550b1016dc85a44d04c0&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 7682ed29a1a27848f952c4d878fd57f25b603d57<br/>Author: Steve Hay &lt;steve.m.hay@googlemail.com&gt;<br/>Date: Mon Jul 18 19:43:37 2016 +0100<br/><br/> perldelta - Correct references to pre-5.24.0 version<br/> <br/> The previous stable version was 5.22.0, not 5.23.0. Thanks to ether for<br/> the spot.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> pod/perldelta.pod | 4 ++--<br/> 1 file changed, 2 insertions(+), 2 deletions(-)<br/><br/>diff --git a/pod/perldelta.pod b/pod/perldelta.pod<br/>index 4d06d45..90d110e 100644<br/>--- a/pod/perldelta.pod<br/>+++ b/pod/perldelta.pod<br/>@@ -9,8 +9,8 @@ perldelta - what is new for perl v5.24.1<br/> This document describes differences between the 5.24.0 release and the 5.24.1<br/> release.<br/> <br/>-If you are upgrading from an earlier release such as 5.23.0, first read<br/>-L&lt;perl5240delta&gt;, which describes differences between 5.23.0 and 5.24.0.<br/>+If you are upgrading from an earlier release such as 5.22.0, first read<br/>+L&lt;perl5240delta&gt;, which describes differences between 5.22.0 and 5.24.0.<br/> <br/> =head1 Security<br/> <br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47662.html Mon, 18 Jul 2016 18:48:43 +0000 [perl.git] branch blead, updated. v5.25.2-194-g3df91f1 by Dave Mitchell In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/3df91f1a10601c50feeed86614da0d5be5b1ac59?hp=ef07b9e56353ef13f6b999d0ebae0466282a9fcc&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 3df91f1a10601c50feeed86614da0d5be5b1ac59<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Mon Jul 18 15:04:16 2016 +0100<br/><br/> perlop: clarify that entries aren&#39;t in prec order<br/> <br/> RT #127921<br/> <br/> The phrasing may have given the impression that the =head2 for each<br/> operator was at a lower precedence than the previous =head2. Disabuse<br/> people of that notion.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> pod/perlop.pod | 3 ++-<br/> 1 file changed, 2 insertions(+), 1 deletion(-)<br/><br/>diff --git a/pod/perlop.pod b/pod/perlop.pod<br/>index 365c962..d9dc6a6 100644<br/>--- a/pod/perlop.pod<br/>+++ b/pod/perlop.pod<br/>@@ -71,7 +71,8 @@ values only, not array values.<br/> left and<br/> left or xor<br/> <br/>-In the following sections, these operators are covered in precedence order.<br/>+In the following sections, these operators are covered in detail, in the<br/>+same order in which they appear in the table above.<br/> <br/> Many operators can be overloaded for objects. See L&lt;overload&gt;.<br/> <br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47661.html Mon, 18 Jul 2016 14:10:12 +0000 [perl.git] branch smoke-me/davem/bison4, created.v5.25.2-180-g3232a64 by Dave Mitchell In perl.git, the branch smoke-me/davem/bison4 has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/3232a64d92249c553b6194962ae61c8fbedc992a?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at 3232a64d92249c553b6194962ae61c8fbedc992a (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit 3232a64d92249c553b6194962ae61c8fbedc992a<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Mon Jul 18 11:57:19 2016 +0100<br/><br/> rename &quot;WORD&quot; lexical token to &quot;BAREWORD&quot;<br/> <br/> The enum value &quot;WORD&quot; can apparently clash with a enum value in windows<br/> headers. It used to be worked around in windows by #defining YYTOKENTYPE,<br/> which caused the<br/> <br/> enum yytokentype {<br/> ...<br/> WORD = ...;<br/> }<br/> <br/> in perly.h to be skipped, while still using the<br/> <br/> #define WORD ...<br/> <br/> which appears later in the same file.<br/> <br/> In bison 3.x, the auto-generated perl.h no longer includes the #defines,<br/> so this workaround no longer works.<br/> <br/> Instead, change the name of the token from &quot;WORD&quot; to &quot;BAREWORD&quot;.<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47660.html Mon, 18 Jul 2016 11:17:01 +0000 [perl.git] branch smoke-me/davem/bison3, deleted.v5.25.2-180-g5476735 by Dave Mitchell In perl.git, the branch smoke-me/davem/bison3 has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=5476735760803836e00f0f9d413f55f1e0f83607&gt;<br/><br/> was 5476735760803836e00f0f9d413f55f1e0f83607<br/><br/>-----------------------------------------------------------------------<br/>5476735760803836e00f0f9d413f55f1e0f83607 rename &quot;WORD&quot; lexical token to &quot;BAREWORD&quot;<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47659.html Mon, 18 Jul 2016 11:07:59 +0000 [perl.git] branch smoke-me/davem/bison3, created.v5.25.2-180-g5476735 by Dave Mitchell In perl.git, the branch smoke-me/davem/bison3 has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/5476735760803836e00f0f9d413f55f1e0f83607?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at 5476735760803836e00f0f9d413f55f1e0f83607 (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit 5476735760803836e00f0f9d413f55f1e0f83607<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Mon Jul 18 11:57:19 2016 +0100<br/><br/> rename &quot;WORD&quot; lexical token to &quot;BAREWORD&quot;<br/> <br/> The enum value &quot;WORD&quot; can apparently clash with a enum value in windows<br/> headers. It used to be worked around in windows by #defining YYTOKENTYPE,<br/> which caused the<br/> <br/> enum yytokentype {<br/> ...<br/> WORD = ...;<br/> }<br/> <br/> in perly.h to be skipped, while still using the<br/> <br/> #define WORD ...<br/> <br/> which appears later in the same file.<br/> <br/> In bison 3.x, the auto-generated perl.h no longer includes the #defines,<br/> so this workaround no longer works.<br/> <br/> Instead, change the name of the token from &quot;WORD&quot; to &quot;BAREWORD&quot;.<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2016/07/msg47658.html Mon, 18 Jul 2016 11:07:21 +0000