perl.perl5.changes http://www.nntp.perl.org/group/perl.perl5.changes/ ... Copyright 1998-2013 perl.org Thu, 23 May 2013 12:28:11 +0000 ask@perl.org [perl.git] branch smoke-me/nicholas/rt-118055, created. v5.19.0-142-gdfe12d6 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/rt-118055 has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/dfe12d64f471217d8004892c05035d320449ae24?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at dfe12d64f471217d8004892c05035d320449ae24 (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit dfe12d64f471217d8004892c05035d320449ae24<br/>Author: James E Keenan &lt;jkeenan@cpan.org&gt;<br/>Date: Thu May 23 03:26:55 2013 +0200<br/><br/> Provide alternate email address for jkeenan.<br/><br/>M Porting/checkAUTHORS.pl<br/><br/>commit 3b89f54e7729300a9c982327779d9077e60d586d<br/>Author: James Keenan &lt;jkeenan@dromedary-001.ams6.corp.booking.com&gt;<br/>Date: Thu May 23 03:06:54 2013 +0200<br/><br/> Correct known_pod_issues.dat.<br/><br/>M t/porting/known_pod_issues.dat<br/><br/>commit d21c5a51cf8cd457ab9c037060defa51692199a3<br/>Author: David Steinbrunner &lt;dsteinbrunner@pobox.com&gt;<br/>Date: Tue May 21 06:47:33 2013 -0400<br/><br/> typo fix for vms script<br/><br/>M vms/mms2make.pl<br/><br/>commit b6a6e9564d193cb709231fad4f4816f447263147<br/>Author: David Steinbrunner &lt;dsteinbrunner@pobox.com&gt;<br/>Date: Tue May 21 06:47:05 2013 -0400<br/><br/> typo fixes for regen scripts<br/><br/>M regen/mk_invlists.pl<br/>M regen/reentr.pl<br/>M regen/regcharclass.pl<br/>M regen/regen_lib.pl<br/><br/>commit 2effe01f18007a1b28e11f29b319f2b5cd0ae4df<br/>Author: David Steinbrunner &lt;dsteinbrunner@pobox.com&gt;<br/>Date: Tue May 21 06:46:18 2013 -0400<br/><br/> typo fixes for root level scripts<br/> <br/> Add David Steinbrunner to AUTHORS.<br/> Update pod issues database.<br/><br/>M AUTHORS<br/>M autodoc.pl<br/>M configpm<br/>M install_lib.pl<br/>M installperl<br/>M make_ext.pl<br/>M make_patchnum.pl<br/>M makedef.pl<br/>M regen.pl<br/>M t/porting/known_pod_issues.dat<br/>M write_buildcustomize.pl<br/><br/>commit 5364049c28608557a7832b748edaf27ce5262d89<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed May 22 13:28:07 2013 -0600<br/><br/> perldiag: Describe \g syntax error<br/> <br/> Commit 779fedd7c3021f013726c8f53cb9e66c54637ebf added a warning,<br/> which is nearly identical to an existing one, but didn&#39;t change the<br/> description of the existing one to encompass both. This rectifies that.<br/><br/>M pod/perldiag.pod<br/><br/>commit 779fedd7c3021f013726c8f53cb9e66c54637ebf<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 20 11:42:18 2013 -0600<br/><br/> regcomp.c: Actually emit proper warning<br/> <br/> Before this commit, /\g/ raised the wrong warning<br/> Reference to invalid group 0<br/> This rearranges the code so that the proper warning is emitted.<br/> Unterminated \g... pattern<br/><br/>M pod/perldiag.pod<br/>M regcomp.c<br/>M t/porting/diag.t<br/>M t/re/reg_mesg.t<br/><br/>commit 1fdd5e539a93d9e9573e769f06c0f3d3c3d7e3ac<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue May 21 20:34:47 2013 -0600<br/><br/> Make Unicode::UCD::search_invlist() available<br/> <br/> This commit documents this function, removing the initial underscore<br/> from its name. (And it hardens input checking.)<br/><br/>M ext/XS-APItest/t/handy.t<br/>M lib/Unicode/UCD.pm<br/>M lib/Unicode/UCD.t<br/>M pod/perldelta.pod<br/><br/>commit ad5f730f426dcac62c9dc19bda79e1586ec5f135<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue May 21 19:41:44 2013 -0600<br/><br/> Unicode::UCD Clarifications in pod<br/> <br/> There are no &quot;missing&quot; values in inversion maps; there is a default<br/> value returned for each one. So change the example variables&#39; names.<br/> Plus another sentence rewording for clarity.<br/><br/>M lib/Unicode/UCD.pm<br/><br/>commit e2ce70ff8deec39f04109eef037018788bacae10<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon May 20 12:13:22 2013 -0600<br/><br/> Unicode::UCD: Move function in file.<br/> <br/> This is in preparation for making this function public, and it should be<br/> listed in the pod later than it otherwise would be.<br/><br/>M lib/Unicode/UCD.pm<br/><br/>commit 5b2b197795133a17faa5d8ac3b648776925c57d7<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon May 20 10:41:01 2013 -0600<br/><br/> Unicode::UCD: Correct wrong pod info<br/> <br/> This was erroneous. Extra clarifications are also added.<br/><br/>M lib/Unicode/UCD.pm<br/><br/>commit 2248d90cae57123bbd57bed3759d290369a37652<br/>Author: Ricardo Signes &lt;rjbs@cpan.org&gt;<br/>Date: Wed May 22 09:33:16 2013 -0400<br/><br/> remove a spurious space<br/><br/>M pod/perlfunc.pod<br/><br/>commit 2073970fee26667acdf365b19220c8184fa8b18d<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 22 13:56:50 2013 +0200<br/><br/> Some more comments describing the slab allocator.<br/> <br/> These are based on the description of commit 8be227ab5eaa23f2, but provide<br/> explanations near to the relevant C code.<br/><br/>M op.c<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37184.html Thu, 23 May 2013 11:54:42 +0000 [perl.git] branch smoke-me/nicholas/rt-118055, updated. v5.19.0-143-ge0cd864 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/rt-118055 has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/e0cd8647b984507a9beb2487859a8656e289cde0?hp=dfe12d64f471217d8004892c05035d320449ae24&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit e0cd8647b984507a9beb2487859a8656e289cde0<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Thu May 23 13:46:05 2013 +0200<br/><br/> Ensure that the IV in struct pmop (for ithreads) is aligned properly.<br/> <br/> The members of struct pmop vary between ithreads and non-ithreads builds.<br/> For ithreads, an IV is used for op_pmoffset. For 32 bit platforms built<br/> with -Duse64bitint, IVs are 64 bits, but pointers (and all other members of<br/> all OP structures) are 32 bits, hence on 32 bit platforms OP structure sizes<br/> can be an odd multiple of 4 bytes. Since the swap to the slab allocator,<br/> this is causing problems on architectures where 8 byte IVs have to be 8<br/> byte aligned, notably sparcs. The long-term fix is to replace the IV with<br/> an appropriate 32 bit type, as it is being used for an array index. However,<br/> for maint-5.18 we need a work around which doesn&#39;t change the public headers<br/> and ideally doesn&#39;t impose a large speed or memory penalty.<br/> <br/> Hence for now, simply avoid using the slab allocator when allocating a<br/> struct pmop. Only do this for 32 bit platforms build with 8 byte IVs and<br/> ithreads.<br/> <br/> This is the interim fix for RT #118055.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> op.c | 13 +++++++++++++<br/> 1 files changed, 13 insertions(+), 0 deletions(-)<br/><br/>diff --git a/op.c b/op.c<br/>index 96a06b1..341b087 100644<br/>--- a/op.c<br/>+++ b/op.c<br/>@@ -175,6 +175,19 @@ Perl_Slab_Alloc(pTHX_ size_t sz)<br/> || (CvSTART(PL_compcv) &amp;&amp; !CvSLABBED(PL_compcv)))<br/> return PerlMemShared_calloc(1, sz);<br/> <br/>+#if defined(USE_ITHREADS) &amp;&amp; IVSIZE &gt; U32SIZE<br/>+ /* Work around a goof with alignment on our part. For sparc32 (and<br/>+ possibly other architectures), if built with -Duse64bitint, the IV<br/>+ op_pmoffset in struct pmop should be 8 byte aligned, but the slab<br/>+ allocator is only providing 4 byte alignment. The real fix is to change<br/>+ the IV to a type the same size as a pointer, such as size_t, but we<br/>+ can&#39;t do that without breaking the ABI, which is a no-no in a maint<br/>+ release. So instead, simply allocate struct pmop directly, which will be<br/>+ suitably aligned: */<br/>+ if (sz == sizeof(struct pmop))<br/>+ return PerlMemShared_calloc(1, sz);<br/>+#endif<br/>+<br/> /* While the subroutine is under construction, the slabs are accessed via<br/> CvSTART(), to avoid needing to expand PVCV by one pointer for something<br/> unneeded at runtime. Once a subroutine is constructed, the slabs are<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37183.html Thu, 23 May 2013 11:54:34 +0000 [perl.git] branch blead, updated. v5.19.0-142-gdfe12d6 by James Keenan In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/dfe12d64f471217d8004892c05035d320449ae24?hp=3b89f54e7729300a9c982327779d9077e60d586d&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit dfe12d64f471217d8004892c05035d320449ae24<br/>Author: James E Keenan &lt;jkeenan@cpan.org&gt;<br/>Date: Thu May 23 03:26:55 2013 +0200<br/><br/> Provide alternate email address for jkeenan.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> Porting/checkAUTHORS.pl | 3 ++-<br/> 1 files changed, 2 insertions(+), 1 deletions(-)<br/><br/>diff --git a/Porting/checkAUTHORS.pl b/Porting/checkAUTHORS.pl<br/>index 237a307..c1e108b 100755<br/>--- a/Porting/checkAUTHORS.pl<br/>+++ b/Porting/checkAUTHORS.pl<br/>@@ -659,6 +659,8 @@ jhannah\100mutationgrid.com jay\100jays.net<br/> + jhannah\100omnihotels.com<br/> jidanni\100jidanni.org jidanni\100hoffa.dreamhost.com<br/> jjore\100cpan.org twists\100gmail.com<br/>+jkeenan\100cpan.org jkeen\100verizon.net<br/>++ jkeenan\100dromedary-001.ams6.corp.booking.com<br/> jns\100integration-house.com jns\100gellyfish.com<br/> + gellyfish\100gellyfish.com<br/> john\100atlantech.com john\100titanic.atlantech.com<br/>@@ -919,4 +921,3 @@ wolfgang.laun\100alcatel.at wolfgang.laun\100chello.at<br/> wolfsage\100gmail.com mhorsfall\100darmstadtium.(none)<br/> yath\100yath.de yath-perlbug\100yath.de<br/> <br/>-jkeen@verizon.net jkeenan@cpan.org<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37182.html Thu, 23 May 2013 01:40:49 +0000 [perl.git] branch blead, updated. v5.19.0-141-g3b89f54 by James Keenan In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/3b89f54e7729300a9c982327779d9077e60d586d?hp=d21c5a51cf8cd457ab9c037060defa51692199a3&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 3b89f54e7729300a9c982327779d9077e60d586d<br/>Author: James Keenan &lt;jkeenan@dromedary-001.ams6.corp.booking.com&gt;<br/>Date: Thu May 23 03:06:54 2013 +0200<br/><br/> Correct known_pod_issues.dat.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> t/porting/known_pod_issues.dat | 5 -----<br/> 1 files changed, 0 insertions(+), 5 deletions(-)<br/><br/>diff --git a/t/porting/known_pod_issues.dat b/t/porting/known_pod_issues.dat<br/>index ffef833..b175a81 100644<br/>--- a/t/porting/known_pod_issues.dat<br/>+++ b/t/porting/known_pod_issues.dat<br/>@@ -296,7 +296,6 @@ pod/perltru64.pod ? Should you be using F&lt;...&gt; or maybe L&lt;...&gt; instead of 1<br/> pod/perltru64.pod Verbatim line length including indents exceeds 79 by 4<br/> pod/perlunifaq.pod empty section in previous paragraph 1<br/> pod/perluniprops.pod =item type mismatch 6<br/>-pod/perlutil.pod Apparent internal link is missing its forward slash 2<br/> pod/perlvms.pod ? Should you be using F&lt;...&gt; or maybe L&lt;...&gt; instead of 1<br/> pod/perlvms.pod Verbatim line length including indents exceeds 79 by 2<br/> pod/perlwin32.pod Verbatim line length including indents exceeds 79 by 12<br/>@@ -311,10 +310,6 @@ porting/todo.pod Verbatim line length including indents exceeds 79 by 7<br/> symbian/perlutil.pod Verbatim line length including indents exceeds 79 by 4<br/> utils/c2ph Verbatim line length including indents exceeds 79 by 44<br/> utils/pod2html Pod NAME already used 1<br/>-utils/prove Apparent broken link 2<br/>-utils/prove Pod NAME already used 1<br/>-utils/prove There is more than one target 1<br/>-utils/prove Verbatim line length including indents exceeds 79 by 3<br/> vms/ext/filespec.pm Verbatim line length including indents exceeds 79 by 1<br/> x2p/a2p.pod empty section in previous paragraph 2<br/> lib/benchmark.pm Verbatim line length including indents exceeds 79 by 4<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37181.html Thu, 23 May 2013 01:08:42 +0000 [perl.git] branch blead, updated. v5.19.0-140-gd21c5a5 by James Keenan In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/d21c5a51cf8cd457ab9c037060defa51692199a3?hp=b6a6e9564d193cb709231fad4f4816f447263147&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit d21c5a51cf8cd457ab9c037060defa51692199a3<br/>Author: David Steinbrunner &lt;dsteinbrunner@pobox.com&gt;<br/>Date: Tue May 21 06:47:33 2013 -0400<br/><br/> typo fix for vms script<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> vms/mms2make.pl | 2 +-<br/> 1 files changed, 1 insertions(+), 1 deletions(-)<br/><br/>diff --git a/vms/mms2make.pl b/vms/mms2make.pl<br/>index 7795e4a..1706c51 100644<br/>--- a/vms/mms2make.pl<br/>+++ b/vms/mms2make.pl<br/>@@ -14,7 +14,7 @@<br/> # we invert top of stack at a .else<br/> # we pop at a .endif<br/> # we deselect any other line if $conditions[0] is 0<br/>-# I&#39;m being very lazy - push a 1 at start, then dont need to check for<br/>+# I&#39;m being very lazy - push a 1 at start, then don&#39;t need to check for<br/> # an empty @conditions [assume nesting in descrip.mms is correct] <br/> # 2.1 26-Feb-1995 Charles Bailey bailey@newman.upenn.edu<br/> # - handle MMS macros generated by MakeMaker<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37180.html Thu, 23 May 2013 00:34:03 +0000 [perl.git] branch blead, updated. v5.19.0-139-gb6a6e95 by James Keenan In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/b6a6e9564d193cb709231fad4f4816f447263147?hp=2effe01f18007a1b28e11f29b319f2b5cd0ae4df&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit b6a6e9564d193cb709231fad4f4816f447263147<br/>Author: David Steinbrunner &lt;dsteinbrunner@pobox.com&gt;<br/>Date: Tue May 21 06:47:05 2013 -0400<br/><br/> typo fixes for regen scripts<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> regen/mk_invlists.pl | 4 ++--<br/> regen/reentr.pl | 4 ++--<br/> regen/regcharclass.pl | 12 ++++++------<br/> regen/regen_lib.pl | 2 +-<br/> 4 files changed, 11 insertions(+), 11 deletions(-)<br/><br/>diff --git a/regen/mk_invlists.pl b/regen/mk_invlists.pl<br/>index 843d6e7..67b6e41 100644<br/>--- a/regen/mk_invlists.pl<br/>+++ b/regen/mk_invlists.pl<br/>@@ -118,7 +118,7 @@ for my $i (0 .. @$folds_ref - 1) {<br/> next unless ref $folds_ref-&gt;[$i]; # Skip single-char folds<br/> push @has_multi_char_fold, $cp_ref-&gt;[$i];<br/> <br/>- # Add to the the non-finals list each code point that is in a non-final<br/>+ # Add to the non-finals list each code point that is in a non-final<br/> # position<br/> for my $j (0 .. @{$folds_ref-&gt;[$i]} - 2) {<br/> push @is_non_final_fold, $folds_ref-&gt;[$i][$j]<br/>@@ -204,7 +204,7 @@ for my $prop (qw(<br/> # that crosses the 255/256 boundary if it is one that matches the<br/> # property. For example, in the Word property, there is a range of code<br/> # points that start at U+00F8 and goes through U+02C1. Instead of<br/>- # artifically cutting that off at 256 because 256 is the first code point<br/>+ # artificially cutting that off at 256 because 256 is the first code point<br/> # above Latin1, we let the range go to its natural ending. That gives us<br/> # extra information with no added space taken. But if the range that<br/> # crosses the boundary is one that doesn&#39;t match the property, we don&#39;t<br/>diff --git a/regen/reentr.pl b/regen/reentr.pl<br/>index 899e83b..c5e7129 100644<br/>--- a/regen/reentr.pl<br/>+++ b/regen/reentr.pl<br/>@@ -177,7 +177,7 @@ my %seend; # the type of this function&#39;s &quot;D&quot;<br/> my %seenm; # all the types<br/> my %seenu; # the length of the argument list of this function<br/> <br/>-while (&lt;DATA&gt;) { # Read in the protypes.<br/>+while (&lt;DATA&gt;) { # Read in the protoypes.<br/> next if /^\s+$/;<br/> chomp;<br/> my ($func, $hdr, $type, @p) = split(/\s*\|\s*/, $_, -1);<br/>@@ -587,7 +587,7 @@ EOF<br/> my $GENFUNC = uc $genfunc;<br/> my $D = ifprotomatch($FUNC, grep {/D/} @p);<br/> my $d = $seend{$func};<br/>- $d =~ s/\*$//; # snip: we need need the base type.<br/>+ $d =~ s/\*$//; # snip: we need the base type.<br/> push @struct, &lt;&lt;EOF;<br/> $seent{$func} _${genfunc}_struct;<br/> # if $D<br/>diff --git a/regen/regcharclass.pl b/regen/regcharclass.pl<br/>index f5cf315..976582a 100755<br/>--- a/regen/regcharclass.pl<br/>+++ b/regen/regcharclass.pl<br/>@@ -71,7 +71,7 @@ that C&lt;s&gt; contains at least one character.<br/> =item C&lt;is_WHATEVER_cp(cp)&gt;<br/> <br/> Check to see if the string matches a given codepoint (hypothetically a<br/>-U32). The condition is constructed as as to &quot;break out&quot; as early as<br/>+U32). The condition is constructed as to &quot;break out&quot; as early as<br/> possible if the codepoint is out of range of the condition.<br/> <br/> IOW:<br/>@@ -307,7 +307,7 @@ sub __cond_join {<br/> # Each string is then stored in the &#39;strs&#39; subhash as a hash record<br/> # made up of the results of __uni_latin1, using the keynames<br/> # &#39;low&#39;,&#39;latin1&#39;,&#39;utf8&#39;, as well as the synthesized &#39;LATIN1&#39;, &#39;high&#39;, and<br/>-# &#39;UTF8&#39; which hold a merge of &#39;low&#39; and their lowercase equivelents.<br/>+# &#39;UTF8&#39; which hold a merge of &#39;low&#39; and their lowercase equivalents.<br/> #<br/> # Size data is tracked per type in the &#39;size&#39; subhash.<br/> #<br/>@@ -470,7 +470,7 @@ sub _optree {<br/> $else= 0 unless defined $else;<br/> $depth= 0 unless defined $depth;<br/> <br/>- # if we have an emptry string as a key it means we are in an<br/>+ # if we have an empty string as a key it means we are in an<br/> # accepting state and unless we can match further on should<br/> # return the value of the &#39;&#39; key.<br/> if (exists $trie-&gt;{&#39;&#39;} ) {<br/>@@ -491,7 +491,7 @@ sub _optree {<br/> # it means we are an accepting state (end of sequence).<br/> my @conds= sort { $a &lt;=&gt; $b } grep { length $_ } keys %$trie;<br/> <br/>- # if we havent any keys there is no further we can match and we<br/>+ # if we haven&#39;t any keys there is no further we can match and we<br/> # can return the &quot;else&quot; value.<br/> return $else if !@conds;<br/> <br/>@@ -935,7 +935,7 @@ sub _cond_as_str {<br/> my @masks;<br/> if (@ranges &gt; 1) {<br/> <br/>- # See if the entire set shares optimizable characterstics, and if so,<br/>+ # See if the entire set shares optimizable characteristics, and if so,<br/> # return the optimization. We delay checking for this on sets with<br/> # just a single range, as there may be better optimizations available<br/> # in that case.<br/>@@ -1198,7 +1198,7 @@ sub make_macro {<br/> return $self-&gt;render( $optree, ($type =~ /^cp/) ? 1 : 0, \%opts, $def_fmt );<br/> }<br/> <br/>-# if we arent being used as a module (highly likely) then process<br/>+# if we aren&#39;t being used as a module (highly likely) then process<br/> # the __DATA__ below and produce macros in regcharclass.h<br/> # if an argument is provided to the script then it is assumed to<br/> # be the path of the file to output to, if the arg is &#39;-&#39; outputs<br/>diff --git a/regen/regen_lib.pl b/regen/regen_lib.pl<br/>index a575c97..3abec2f 100644<br/>--- a/regen/regen_lib.pl<br/>+++ b/regen/regen_lib.pl<br/>@@ -76,7 +76,7 @@ sub close_and_rename {<br/> warn &quot;changed &#39;$name&#39; to &#39;$final_name&#39;\n&quot; if $Verbose &gt; 0;<br/> push @Changed, $final_name unless $Verbose &lt; 0;<br/> <br/>- # Some dosish systems can&#39;t rename over an existing file:<br/>+ # Some DOSish systems can&#39;t rename over an existing file:<br/> safer_unlink $final_name;<br/> chmod 0600, $name if $Needs_Write;<br/> rename $name, $final_name or die &quot;renaming $name to $final_name: $!&quot;;<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37179.html Thu, 23 May 2013 00:01:03 +0000 [perl.git] branch blead, updated. v5.19.0-138-g2effe01 by James Keenan In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/2effe01f18007a1b28e11f29b319f2b5cd0ae4df?hp=5364049c28608557a7832b748edaf27ce5262d89&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 2effe01f18007a1b28e11f29b319f2b5cd0ae4df<br/>Author: David Steinbrunner &lt;dsteinbrunner@pobox.com&gt;<br/>Date: Tue May 21 06:46:18 2013 -0400<br/><br/> typo fixes for root level scripts<br/> <br/> Add David Steinbrunner to AUTHORS.<br/> Update pod issues database.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> AUTHORS | 1 +<br/> autodoc.pl | 2 +-<br/> configpm | 2 +-<br/> install_lib.pl | 2 +-<br/> installperl | 2 +-<br/> make_ext.pl | 2 +-<br/> make_patchnum.pl | 2 +-<br/> makedef.pl | 2 +-<br/> regen.pl | 2 +-<br/> t/porting/known_pod_issues.dat | 5 +++++<br/> write_buildcustomize.pl | 2 +-<br/> 11 files changed, 15 insertions(+), 9 deletions(-)<br/><br/>diff --git a/AUTHORS b/AUTHORS<br/>index 892539d..c446fbc 100644<br/>--- a/AUTHORS<br/>+++ b/AUTHORS<br/>@@ -312,6 +312,7 @@ David Nicol &lt;whatever@davidnicol.com&gt;<br/> David R. Favor &lt;dfavor@austin.ibm.com&gt;<br/> David Sparks &lt;daves@ca.sophos.com&gt;<br/> David Starks-Browning &lt;dstarks@rc.tudelft.nl&gt;<br/>+David Steinbrunner &lt;dsteinbrunner@pobox.com&gt;<br/> David Sundstrom &lt;sunds@asictest.sc.ti.com&gt;<br/> David M. Syzdek &lt;david@syzdek.net&gt;<br/> David Wheeler &lt;david@wheeler.net&gt;<br/>diff --git a/autodoc.pl b/autodoc.pl<br/>index 59dc6f0..e000d5a 100644<br/>--- a/autodoc.pl<br/>+++ b/autodoc.pl<br/>@@ -14,7 +14,7 @@<br/> # MANIFEST and *.[ch].<br/> #<br/> # This script is normally invoked as part of &#39;make all&#39;, but is also<br/>-# called from from regen.pl.<br/>+# called from regen.pl.<br/> #<br/> # &#39;=head1&#39; are the only headings looked for. If the next line after the<br/> # heading begins with a word character, it is considered to be the first line<br/>diff --git a/configpm b/configpm<br/>index 33137c6..cfcc467 100755<br/>--- a/configpm<br/>+++ b/configpm<br/>@@ -384,7 +384,7 @@ $fetch_string .= &lt;&lt;&#39;EOT&#39;;<br/> EOT<br/> <br/> } else {<br/>- # We only have &#39; delimted.<br/>+ # We only have &#39; delimited.<br/> <br/> $fetch_string .= &lt;&lt;&#39;EOT&#39;;<br/> return undef unless $Config_SH_expanded =~ /\n$key=\&#39;(.*?)\&#39;\n/s;<br/>diff --git a/install_lib.pl b/install_lib.pl<br/>index ae8ba0a..308af70 100644<br/>--- a/install_lib.pl<br/>+++ b/install_lib.pl<br/>@@ -16,7 +16,7 @@ BEGIN {<br/> # prefixes.<br/> #<br/> # So we set $^X to pretend that we&#39;re the already installed perl, so<br/>- # Config.pm doesits ... expansion off that location.<br/>+ # Config.pm does its ... expansion off that location.<br/> <br/> my $location = $Config{initialinstalllocation};<br/> die &lt;&lt;&#39;OS&#39; unless defined $location;<br/>diff --git a/installperl b/installperl<br/>index 0e590e1..ac1c770 100755<br/>--- a/installperl<br/>+++ b/installperl<br/>@@ -671,7 +671,7 @@ sub installlib {<br/> # this, as $_ becomes a pathname, and so still works. However, it&#39;s not<br/> # obvious that $_ is needed later, and hence $_ must not be modified.<br/> <br/>- # Also, many of the regex exlusion tests below are now superfluous, as the<br/>+ # Also, many of the regex exclusion tests below are now superfluous, as the<br/> # files in question are either no longer in blead, or now in ext/, dist/ or<br/> # cpan/ and not copied into lib/<br/> <br/>diff --git a/make_ext.pl b/make_ext.pl<br/>index 3254628..799ab8b 100644<br/>--- a/make_ext.pl<br/>+++ b/make_ext.pl<br/>@@ -43,7 +43,7 @@ my $ext_dirs_re = &#39;(?:&#39; . join(&#39;|&#39;, @ext_dirs) . &#39;)&#39;;<br/> # Mostly because they still not ported to specified platform.<br/> # <br/> # If any extensions are listed with a &#39;+&#39; char then only those<br/>-# extensions will be built, but only if they arent countermanded<br/>+# extensions will be built, but only if they aren&#39;t countermanded<br/> # by an &#39;!ext&#39; and are appropriate to the type of building being done.<br/> <br/> # It may be deleted in a later release of perl so try to<br/>diff --git a/make_patchnum.pl b/make_patchnum.pl<br/>index 77d4a4e..3f857b5 100644<br/>--- a/make_patchnum.pl<br/>+++ b/make_patchnum.pl<br/>@@ -178,7 +178,7 @@ git_unpushed=&#39;$unpushed_commit_list&#39;&quot;;<br/> $commit_title ||= &quot;Commit id:&quot;;<br/> }<br/> <br/>-# we extract the filename out of the warning header, so dont mess with that<br/>+# we extract the filename out of the warning header, so don&#39;t mess with that<br/> write_files(&lt;&lt;&quot;EOF_HEADER&quot;, &lt;&lt;&quot;EOF_CONFIG&quot;);<br/> /**************************************************************************<br/> * WARNING: &#39;git_version.h&#39; is automatically generated by make_patchnum.pl<br/>diff --git a/makedef.pl b/makedef.pl<br/>index d2c5f5e..ae3b510 100644<br/>--- a/makedef.pl<br/>+++ b/makedef.pl<br/>@@ -627,7 +627,7 @@ if ($ARGS{PLATFORM} eq &#39;netware&#39;) {<br/> }<br/> <br/> if ($define{&#39;USE_PERLIO&#39;}) {<br/>- # Export the symols that make up the PerlIO abstraction, regardless<br/>+ # Export the symbols that make up the PerlIO abstraction, regardless<br/> # of its implementation - read from a file<br/> push @syms, &#39;perlio.sym&#39;;<br/> <br/>diff --git a/regen.pl b/regen.pl<br/>index 62dc820..1b3ae5e 100644<br/>--- a/regen.pl<br/>+++ b/regen.pl<br/>@@ -1,6 +1,6 @@<br/> #!/usr/bin/perl -w<br/> #<br/>-# regen.pl - a wrapper that runs all *.pl scripts to to autogenerate files<br/>+# regen.pl - a wrapper that runs all *.pl scripts to autogenerate files<br/> <br/> require 5.004; # keep this compatible, an old perl is all we may have before<br/> # we build the new one<br/>diff --git a/t/porting/known_pod_issues.dat b/t/porting/known_pod_issues.dat<br/>index b175a81..ffef833 100644<br/>--- a/t/porting/known_pod_issues.dat<br/>+++ b/t/porting/known_pod_issues.dat<br/>@@ -296,6 +296,7 @@ pod/perltru64.pod ? Should you be using F&lt;...&gt; or maybe L&lt;...&gt; instead of 1<br/> pod/perltru64.pod Verbatim line length including indents exceeds 79 by 4<br/> pod/perlunifaq.pod empty section in previous paragraph 1<br/> pod/perluniprops.pod =item type mismatch 6<br/>+pod/perlutil.pod Apparent internal link is missing its forward slash 2<br/> pod/perlvms.pod ? Should you be using F&lt;...&gt; or maybe L&lt;...&gt; instead of 1<br/> pod/perlvms.pod Verbatim line length including indents exceeds 79 by 2<br/> pod/perlwin32.pod Verbatim line length including indents exceeds 79 by 12<br/>@@ -310,6 +311,10 @@ porting/todo.pod Verbatim line length including indents exceeds 79 by 7<br/> symbian/perlutil.pod Verbatim line length including indents exceeds 79 by 4<br/> utils/c2ph Verbatim line length including indents exceeds 79 by 44<br/> utils/pod2html Pod NAME already used 1<br/>+utils/prove Apparent broken link 2<br/>+utils/prove Pod NAME already used 1<br/>+utils/prove There is more than one target 1<br/>+utils/prove Verbatim line length including indents exceeds 79 by 3<br/> vms/ext/filespec.pm Verbatim line length including indents exceeds 79 by 1<br/> x2p/a2p.pod empty section in previous paragraph 2<br/> lib/benchmark.pm Verbatim line length including indents exceeds 79 by 4<br/>diff --git a/write_buildcustomize.pl b/write_buildcustomize.pl<br/>index 3d773a5..018e60e 100644<br/>--- a/write_buildcustomize.pl<br/>+++ b/write_buildcustomize.pl<br/>@@ -34,7 +34,7 @@ my @toolchain = qw(cpan/AutoLoader/lib<br/> # Used only in ExtUtils::Liblist::Kid::_win32_ext()<br/> push @toolchain, &#39;cpan/Text-ParseWords/lib&#39; if $^O eq &#39;MSWin32&#39;;<br/> <br/>-# lib must be last, as the the toolchain modules write themselves into it<br/>+# lib must be last, as the toolchain modules write themselves into it<br/> # as they build, and it&#39;s important that @INC order ensures that the partially<br/> # written files are always masked by the complete versions.<br/> <br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37178.html Wed, 22 May 2013 23:04:35 +0000 [perl.git] branch blead, updated. v5.19.0-137-g5364049 by Karl Williamson In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/5364049c28608557a7832b748edaf27ce5262d89?hp=779fedd7c3021f013726c8f53cb9e66c54637ebf&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 5364049c28608557a7832b748edaf27ce5262d89<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed May 22 13:28:07 2013 -0600<br/><br/> perldiag: Describe \g syntax error<br/> <br/> Commit 779fedd7c3021f013726c8f53cb9e66c54637ebf added a warning,<br/> which is nearly identical to an existing one, but didn&#39;t change the<br/> description of the existing one to encompass both. This rectifies that.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> pod/perldiag.pod | 6 ++++--<br/> 1 files changed, 4 insertions(+), 2 deletions(-)<br/><br/>diff --git a/pod/perldiag.pod b/pod/perldiag.pod<br/>index 5ceafdf..13ffbee 100644<br/>--- a/pod/perldiag.pod<br/>+++ b/pod/perldiag.pod<br/>@@ -5677,8 +5677,10 @@ instead of:<br/> <br/> =item Unterminated \g{...} pattern in regex; marked by &lt;-- HERE in m/%s/<br/> <br/>-(F) You missed a close brace on a \g{..} pattern (group reference) in<br/>-a regular expression. Fix the pattern and retry.<br/>+(F) In a regular expression, you had a C&lt;\g&gt; that wasn&#39;t followed by a<br/>+proper group reference. In the case of C&lt;\g{&gt;, the closing brace is<br/>+missing; otherwise the C&lt;\g&gt; must be followed by an integer. Fix the<br/>+pattern and retry.<br/> <br/> =item Unterminated &lt;&gt; operator<br/> <br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37177.html Wed, 22 May 2013 19:31:55 +0000 [perl.git] branch blead, updated. v5.19.0-136-g779fedd by Karl Williamson In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/779fedd7c3021f013726c8f53cb9e66c54637ebf?hp=1fdd5e539a93d9e9573e769f06c0f3d3c3d7e3ac&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 779fedd7c3021f013726c8f53cb9e66c54637ebf<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 20 11:42:18 2013 -0600<br/><br/> regcomp.c: Actually emit proper warning<br/> <br/> Before this commit, /\g/ raised the wrong warning<br/> Reference to invalid group 0<br/> This rearranges the code so that the proper warning is emitted.<br/> Unterminated \g... pattern<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> pod/perldiag.pod | 2 ++<br/> regcomp.c | 12 ++++++++----<br/> t/porting/diag.t | 1 -<br/> t/re/reg_mesg.t | 1 +<br/> 4 files changed, 11 insertions(+), 5 deletions(-)<br/><br/>diff --git a/pod/perldiag.pod b/pod/perldiag.pod<br/>index ec4812c..5ceafdf 100644<br/>--- a/pod/perldiag.pod<br/>+++ b/pod/perldiag.pod<br/>@@ -5673,6 +5673,8 @@ instead of:<br/> <br/> &lt;&lt;&quot;foo&quot;<br/> <br/>+=item Unterminated \g... pattern in regex; marked by &lt;-- HERE in m/%s/<br/>+<br/> =item Unterminated \g{...} pattern in regex; marked by &lt;-- HERE in m/%s/<br/> <br/> (F) You missed a close brace on a \g{..} pattern (group reference) in<br/>diff --git a/regcomp.c b/regcomp.c<br/>index 05d15a4..7293a57 100644<br/>--- a/regcomp.c<br/>+++ b/regcomp.c<br/>@@ -10673,8 +10673,14 @@ tryagain:<br/> goto parse_named_seq;<br/> } }<br/> num = atoi(RExC_parse);<br/>- if (isg &amp;&amp; num == 0)<br/>- vFAIL(&quot;Reference to invalid group 0&quot;);<br/>+ if (isg &amp;&amp; num == 0) {<br/>+ if (*RExC_parse == &#39;0&#39;) {<br/>+ vFAIL(&quot;Reference to invalid group 0&quot;);<br/>+ }<br/>+ else {<br/>+ vFAIL(&quot;Unterminated \\g... pattern&quot;);<br/>+ }<br/>+ }<br/> if (isrel) {<br/> num = RExC_npar - num;<br/> if (num &lt; 1)<br/>@@ -10687,8 +10693,6 @@ tryagain:<br/> char * const parse_start = RExC_parse - 1; /* MJD */<br/> while (isDIGIT(*RExC_parse))<br/> RExC_parse++;<br/>- if (parse_start == RExC_parse - 1) <br/>- vFAIL(&quot;Unterminated \\g... pattern&quot;);<br/> if (hasbrace) {<br/> if (*RExC_parse != &#39;}&#39;) <br/> vFAIL(&quot;Unterminated \\g{...} pattern&quot;);<br/>diff --git a/t/porting/diag.t b/t/porting/diag.t<br/>index c5dcbee..920646a 100644<br/>--- a/t/porting/diag.t<br/>+++ b/t/porting/diag.t<br/>@@ -603,7 +603,6 @@ Unknown Unicode option value %d<br/> Unrecognized character %s; marked by &lt;-- HERE after %s&lt;-- HERE near column %d<br/> Unstable directory path, current directory changed unexpectedly<br/> Unterminated compressed integer in unpack<br/>-Unterminated \g... pattern in regex; marked by &lt;-- HERE in m/%s/<br/> Usage: CODE(0x%x)(%s)<br/> Usage: %s(%s)<br/> Usage: %s::%s(%s)<br/>diff --git a/t/re/reg_mesg.t b/t/re/reg_mesg.t<br/>index 537283c..ca5c8df 100644<br/>--- a/t/re/reg_mesg.t<br/>+++ b/t/re/reg_mesg.t<br/>@@ -104,6 +104,7 @@ my @death =<br/> <br/> &#39;/(x)\2/&#39; =&gt; &#39;Reference to nonexistent group {#} m/(x)\2{#}/&#39;,<br/> <br/>+ &#39;/\g/&#39; =&gt; &#39;Unterminated \g... pattern {#} m/\g{#}/&#39;,<br/> &#39;/\g{1/&#39; =&gt; &#39;Unterminated \g{...} pattern {#} m/\g{1{#}/&#39;,<br/> <br/> &#39;my $m = &quot;\\\&quot;; $m =~ $m&#39;, =&gt; &#39;Trailing \ in regex m/\/&#39;,<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37176.html Wed, 22 May 2013 19:06:41 +0000 [perl.git] branch smoke-me/davem/enable_cow, created. v5.19.0-131-g2ba1403 by Dave Mitchell In perl.git, the branch smoke-me/davem/enable_cow has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/2ba14035dacbc515fc44a7ebcd54bea3c87fec05?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at 2ba14035dacbc515fc44a7ebcd54bea3c87fec05 (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit 2ba14035dacbc515fc44a7ebcd54bea3c87fec05<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Wed May 22 17:13:53 2013 +0100<br/><br/> perl -V displayed PERL_NEW_COPY_ON_WRITE twice<br/> <br/> I didn&#39;t realise that the perl -V list of defines is now split between<br/> perl.h and perl.c and so added it to one (thinking it was missing) when it<br/> was already in the other).<br/><br/>M perl.h<br/><br/>commit 043d863a0a5fb0c62bd3462573b9ce9af2c20094<br/>Author: David Mitchell &lt;davem@iabyn.com&gt;<br/>Date: Wed May 22 16:38:29 2013 +0100<br/><br/> re-enable Copy-on-Write by default.<br/> <br/> COW was first introduced (and enabled by default) in 5.17.7.<br/> It was disabled by default in 5.17.10, because it was though to have too<br/> many rough edges for the 5.18.0 release.<br/> <br/> By re-enabling it now, early in the 5.19.x release cycle, hopefully it<br/> will be ready for production use by 5.20.<br/> <br/> This commit mainly reverts 9f351b45f4 and e1fd41328c (with modifications),<br/> then updates perldelta.<br/><br/>M perl.h<br/>M pod/perldelta.pod<br/>M pod/perlre.pod<br/>M pod/perlreref.pod<br/>M pod/perlretut.pod<br/>M pod/perlvar.pod<br/>M t/re/pat_rt_report.t<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37175.html Wed, 22 May 2013 16:24:07 +0000 [perl.git] branch blead, updated. v5.19.0-135-g1fdd5e5 by Karl Williamson In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/1fdd5e539a93d9e9573e769f06c0f3d3c3d7e3ac?hp=2248d90cae57123bbd57bed3759d290369a37652&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 1fdd5e539a93d9e9573e769f06c0f3d3c3d7e3ac<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue May 21 20:34:47 2013 -0600<br/><br/> Make Unicode::UCD::search_invlist() available<br/> <br/> This commit documents this function, removing the initial underscore<br/> from its name. (And it hardens input checking.)<br/><br/>M ext/XS-APItest/t/handy.t<br/>M lib/Unicode/UCD.pm<br/>M lib/Unicode/UCD.t<br/>M pod/perldelta.pod<br/><br/>commit ad5f730f426dcac62c9dc19bda79e1586ec5f135<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue May 21 19:41:44 2013 -0600<br/><br/> Unicode::UCD Clarifications in pod<br/> <br/> There are no &quot;missing&quot; values in inversion maps; there is a default<br/> value returned for each one. So change the example variables&#39; names.<br/> Plus another sentence rewording for clarity.<br/><br/>M lib/Unicode/UCD.pm<br/><br/>commit e2ce70ff8deec39f04109eef037018788bacae10<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon May 20 12:13:22 2013 -0600<br/><br/> Unicode::UCD: Move function in file.<br/> <br/> This is in preparation for making this function public, and it should be<br/> listed in the pod later than it otherwise would be.<br/><br/>M lib/Unicode/UCD.pm<br/><br/>commit 5b2b197795133a17faa5d8ac3b648776925c57d7<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon May 20 10:41:01 2013 -0600<br/><br/> Unicode::UCD: Correct wrong pod info<br/> <br/> This was erroneous. Extra clarifications are also added.<br/><br/>M lib/Unicode/UCD.pm<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> ext/XS-APItest/t/handy.t | 4 +-<br/> lib/Unicode/UCD.pm | 233 +++++++++++++++++++++++++++++-----------------<br/> lib/Unicode/UCD.t | 9 ++<br/> pod/perldelta.pod | 7 ++<br/> 4 files changed, 167 insertions(+), 86 deletions(-)<br/><br/>diff --git a/ext/XS-APItest/t/handy.t b/ext/XS-APItest/t/handy.t<br/>index 84ffb02..3a8abc9 100644<br/>--- a/ext/XS-APItest/t/handy.t<br/>+++ b/ext/XS-APItest/t/handy.t<br/>@@ -98,7 +98,7 @@ foreach my $name (sort keys %properties) {<br/> my $i = utf8::native_to_unicode($j);<br/> my $function = uc($name);<br/> <br/>- my $matches = Unicode::UCD::_search_invlist(\@invlist, $i);<br/>+ my $matches = Unicode::UCD::search_invlist(\@invlist, $i);<br/> if (! defined $matches) {<br/> $matches = 0;<br/> }<br/>@@ -260,7 +260,7 @@ foreach my $name (sort keys %to_properties) {<br/> my $i = utf8::native_to_unicode($j);<br/> my $function = $name;<br/> <br/>- my $index = Unicode::UCD::_search_invlist(\@{$list_ref}, $j);<br/>+ my $index = Unicode::UCD::search_invlist(\@{$list_ref}, $j);<br/> <br/> my $ret;<br/> my $char_name = charnames::viacode($j) // &quot;No name&quot;;<br/>diff --git a/lib/Unicode/UCD.pm b/lib/Unicode/UCD.pm<br/>index 9c3dd7c..eeaf2c3 100644<br/>--- a/lib/Unicode/UCD.pm<br/>+++ b/lib/Unicode/UCD.pm<br/>@@ -5,7 +5,7 @@ use warnings;<br/> no warnings &#39;surrogate&#39;; # surrogates can be inputs to this<br/> use charnames ();<br/> <br/>-our $VERSION = &#39;0.51&#39;;<br/>+our $VERSION = &#39;0.52&#39;;<br/> <br/> require Exporter;<br/> <br/>@@ -24,6 +24,7 @@ our @EXPORT_OK = qw(charinfo<br/> prop_value_aliases<br/> prop_invlist<br/> prop_invmap<br/>+ search_invlist<br/> MAX_CP<br/> );<br/> <br/>@@ -80,6 +81,9 @@ Unicode::UCD - Unicode character database<br/> my ($list_ref, $map_ref, $format, $missing)<br/> = prop_invmap(&quot;General Category&quot;);<br/> <br/>+ use Unicode::UCD &#39;search_invlist&#39;;<br/>+ my $index = search_invlist(\@invlist, $code_point);<br/>+<br/> use Unicode::UCD &#39;compexcl&#39;;<br/> my $compexcl = compexcl($codepoint);<br/> <br/>@@ -2124,6 +2128,9 @@ code points that have the property-value:<br/> C&lt;prop_invlist&gt; does not know about any user-defined nor Perl internal-only<br/> properties, and will return C&lt;undef&gt; if called with one of those.<br/> <br/>+The L&lt;/search_invlist()&gt; function is provided for finding a code point within<br/>+an inversion list.<br/>+<br/> =cut<br/> <br/> # User-defined properties could be handled with some changes to utf8_heavy.pl;<br/>@@ -2261,71 +2268,12 @@ sub prop_invlist ($;$) {<br/> return @invlist;<br/> }<br/> <br/>-sub _search_invlist {<br/>- # Find the range in the inversion list which contains a code point; that<br/>- # is, find i such that l[i] &lt;= code_point &lt; l[i+1]. Returns undef if no<br/>- # such i.<br/>-<br/>- # If this is ever made public, could use to speed up .t specials. Would<br/>- # need to use code point argument, as in other functions in this pm<br/>-<br/>- my $list_ref = shift;<br/>- my $code_point = shift;<br/>- # Verify non-neg numeric XXX<br/>-<br/>- my $max_element = @$list_ref - 1;<br/>-<br/>- # Return undef if list is empty or requested item is before the first element.<br/>- return if $max_element &lt; 0;<br/>- return if $code_point &lt; $list_ref-&gt;[0];<br/>-<br/>- # Short cut something at the far-end of the table. This also allows us to<br/>- # refer to element [$i+1] without fear of being out-of-bounds in the loop<br/>- # below.<br/>- return $max_element if $code_point &gt;= $list_ref-&gt;[$max_element];<br/>-<br/>- use integer; # want integer division<br/>-<br/>- my $i = $max_element / 2;<br/>-<br/>- my $lower = 0;<br/>- my $upper = $max_element;<br/>- while (1) {<br/>-<br/>- if ($code_point &gt;= $list_ref-&gt;[$i]) {<br/>-<br/>- # Here we have met the lower constraint. We can quit if we<br/>- # also meet the upper one.<br/>- last if $code_point &lt; $list_ref-&gt;[$i+1];<br/>-<br/>- $lower = $i; # Still too low.<br/>-<br/>- }<br/>- else {<br/>-<br/>- # Here, $code_point &lt; $list_ref[$i], so look lower down.<br/>- $upper = $i;<br/>- }<br/>-<br/>- # Split search domain in half to try again.<br/>- my $temp = ($upper + $lower) / 2;<br/>-<br/>- # No point in continuing unless $i changes for next time<br/>- # in the loop.<br/>- return $i if $temp == $i;<br/>- $i = $temp;<br/>- } # End of while loop<br/>-<br/>- # Here we have found the offset<br/>- return $i;<br/>-}<br/>-<br/> =pod<br/> <br/> =head2 B&lt;prop_invmap()&gt;<br/> <br/> use Unicode::UCD &#39;prop_invmap&#39;;<br/>- my ($list_ref, $map_ref, $format, $missing)<br/>+ my ($list_ref, $map_ref, $format, $default)<br/> = prop_invmap(&quot;General Category&quot;);<br/> <br/> C&lt;prop_invmap&gt; is used to get the complete mapping definition for a property,<br/>@@ -2352,8 +2300,11 @@ It is a fatal error to call this function except in list context.<br/> <br/> In addition to the the two arrays that form the inversion map, C&lt;prop_invmap&gt;<br/> returns two other values; one is a scalar that gives some details as to the<br/>-format of the entries of the map array; the other is used for specialized<br/>-purposes, described at the end of this section.<br/>+format of the entries of the map array; the other is a default value, useful<br/>+in maps whose format name begins with the letter C&lt;&quot;a&quot;&gt;, as described<br/>+L&lt;below in its subsection|/a&gt;; and for specialized purposes, such as<br/>+converting to another data structure, described at the end of this main<br/>+section.<br/> <br/> This means that C&lt;prop_invmap&gt; returns a 4 element list. For example,<br/> <br/>@@ -2413,7 +2364,8 @@ that, instead of treating these as unassigned Unicode code points, the value<br/> for this range should be C&lt;undef&gt;. If you wish, you can change the returned<br/> arrays accordingly.<br/> <br/>-The maps are almost always simple scalars that should be interpreted as-is.<br/>+The maps for almost all properties are simple scalars that should be<br/>+interpreted as-is.<br/> These values are those given in the Unicode-supplied data files, which may be<br/> inconsistent as to capitalization and as to which synonym for a property-value<br/> is given. The results may be normalized by using the L&lt;/prop_value_aliases()&gt;<br/>@@ -2508,7 +2460,7 @@ is like C&lt;&quot;s&quot;&gt; in that all the map array elements are scalars, but here they are<br/> restricted to all being integers, and some have to be adjusted (hence the name<br/> C&lt;&quot;a&quot;&gt;) to get the correct result. For example, in:<br/> <br/>- my ($uppers_ranges_ref, $uppers_maps_ref, $format)<br/>+ my ($uppers_ranges_ref, $uppers_maps_ref, $format, $default)<br/> = prop_invmap(&quot;Simple_Uppercase_Mapping&quot;);<br/> <br/> the returned arrays look like this:<br/>@@ -2521,30 +2473,32 @@ the returned arrays look like this:<br/> 182 0<br/> ...<br/> <br/>+and C&lt;$default&gt; is 0.<br/>+<br/> Let&#39;s start with the second line. It says that the uppercase of code point 97<br/> is 65; or C&lt;uc(&quot;a&quot;)&gt; == &quot;A&quot;. But the line is for the entire range of code<br/>-points 97 through 122. To get the mapping for any code point in a range, you<br/>-take the offset it has from the beginning code point of the range, and add<br/>+points 97 through 122. To get the mapping for any code point in this range,<br/>+you take the offset it has from the beginning code point of the range, and add<br/> that to the mapping for that first code point. So, the mapping for 122 (&quot;z&quot;)<br/> is derived by taking the offset of 122 from 97 (=25) and adding that to 65,<br/> yielding 90 (&quot;z&quot;). Likewise for everything in between.<br/> <br/>-The first line works the same way. The first map in a range is always the<br/>-correct value for its code point (because the adjustment is 0). Thus the<br/>-C&lt;uc(chr(0))&gt; is just itself. Also, C&lt;uc(chr(1))&gt; is also itself, as the<br/>-adjustment is 0+1-0 .. C&lt;uc(chr(96))&gt; is 96.<br/>-<br/> Requiring this simple adjustment allows the returned arrays to be<br/> significantly smaller than otherwise, up to a factor of 10, speeding up<br/> searching through them.<br/> <br/>+Ranges that map to C&lt;$default&gt;, C&lt;&quot;0&quot;&gt;, behave somewhat differently. For<br/>+these, each code point maps to itself. So, in the first line in the example,<br/>+S&lt;C&lt;ord(uc(chr(0)))&gt;&gt; is 0, S&lt;C&lt;ord(uc(chr(1)))&gt;&gt; is 1, ..<br/>+S&lt;C&lt;ord(uc(chr(96)))&gt;&gt; is 96.<br/>+<br/> =item B&lt;C&lt;al&gt;&gt;<br/> <br/> means that some of the map array elements have the form given by C&lt;&quot;a&quot;&gt;, and<br/> the rest are ordered lists of code points.<br/> For example, in:<br/> <br/>- my ($uppers_ranges_ref, $uppers_maps_ref, $format)<br/>+ my ($uppers_ranges_ref, $uppers_maps_ref, $format, $default)<br/> = prop_invmap(&quot;Uppercase_Mapping&quot;);<br/> <br/> the returned arrays look like this:<br/>@@ -2571,6 +2525,9 @@ CAPITAL LETTER N).<br/> No adjustments are needed to entries that are references to arrays; each such<br/> entry will have exactly one element in its range, so the offset is always 0.<br/> <br/>+The fourth (index [3]) element (C&lt;$default&gt;) in the list returned for this<br/>+format is 0.<br/>+<br/> =item B&lt;C&lt;ae&gt;&gt;<br/> <br/> This is like C&lt;&quot;a&quot;&gt;, but some elements are the empty string, and should not be<br/>@@ -2600,6 +2557,9 @@ represents 0+1-0 = 1; ... code point 0x39, (DIGIT NINE), represents 0+9-0 = 9;<br/> (ARABIC-INDIC DIGIT ZERO), represents 0; ... 0x07C1 (NKO DIGIT ONE),<br/> represents 0+1-0 = 1 ...<br/> <br/>+The fourth (index [3]) element (C&lt;$default&gt;) in the list returned for this<br/>+format is the empty string.<br/>+<br/> =item B&lt;C&lt;ale&gt;&gt;<br/> <br/> is a combination of the C&lt;&quot;al&quot;&gt; type and the C&lt;&quot;ae&quot;&gt; type. Some of<br/>@@ -2617,6 +2577,9 @@ An example slice is:<br/> 0x00B0 0<br/> ...<br/> <br/>+The fourth (index [3]) element (C&lt;$default&gt;) in the list returned for this<br/>+format is 0.<br/>+<br/> =item B&lt;C&lt;ar&gt;&gt;<br/> <br/> means that all the elements of the map array are either rational numbers or<br/>@@ -2656,6 +2619,9 @@ C&lt;&quot;ar&quot;&gt;.<br/> 0x660 0 ARABIC-INDIC DIGIT ZERO .. NINE<br/> 0x66A &quot;NaN&quot;<br/> <br/>+The fourth (index [3]) element (C&lt;$default&gt;) in the list returned for this<br/>+format is C&lt;&quot;NaN&quot;&gt;.<br/>+<br/> =item B&lt;C&lt;n&gt;&gt;<br/> <br/> means the Name property. All the elements of the map array are simple<br/>@@ -2701,6 +2667,9 @@ L&lt;Unicode::Normalize::NFD()|Unicode::Normalize&gt;.<br/> Note that the mapping is the one that is specified in the Unicode data files,<br/> and to get the final decomposition, it may need to be applied recursively.<br/> <br/>+The fourth (index [3]) element (C&lt;$default&gt;) in the list returned for this<br/>+format is 0.<br/>+<br/> =back<br/> <br/> Note that a format begins with the letter &quot;a&quot; if and only the property it is<br/>@@ -2713,29 +2682,31 @@ which is an integer. That is, it must match the regular expression:<br/> Further, the first element in a range never needs adjustment, as the<br/> adjustment would be just adding 0.<br/> <br/>-A binary search can be used to quickly find a code point in the inversion<br/>-list, and hence its corresponding mapping.<br/>+A binary search such as that provided by L&lt;/search_invlist()&gt;, can be used to<br/>+quickly find a code point in the inversion list, and hence its corresponding<br/>+mapping.<br/> <br/>-The final element (index [3], assigned to C&lt;$default&gt; in the &quot;block&quot; example) in<br/>-the four element list returned by this function may be useful for applications<br/>+The final, fourth element (index [3], assigned to C&lt;$default&gt; in the &quot;block&quot;<br/>+example) in the four element list returned by this function is used with the<br/>+C&lt;&quot;a&quot;&gt; format types; it may also be useful for applications<br/> that wish to convert the returned inversion map data structure into some<br/> other, such as a hash. It gives the mapping that most code points map to<br/> under the property. If you establish the convention that any code point not<br/> explicitly listed in your data structure maps to this value, you can<br/> potentially make your data structure much smaller. As you construct your data<br/> structure from the one returned by this function, simply ignore those ranges<br/>-that map to this value, generally called the &quot;default&quot; value. For example, to<br/>+that map to this value. For example, to<br/> convert to the data structure searchable by L&lt;/charinrange()&gt;, you can follow<br/> this recipe for properties that don&#39;t require adjustments:<br/> <br/>- my ($list_ref, $map_ref, $format, $missing) = prop_invmap($property);<br/>+ my ($list_ref, $map_ref, $format, $default) = prop_invmap($property);<br/> my @range_list;<br/> <br/> # Look at each element in the list, but the -2 is needed because we<br/> # look at $i+1 in the loop, and the final element is guaranteed to map<br/>- # to $missing by prop_invmap(), so we would skip it anyway.<br/>+ # to $default by prop_invmap(), so we would skip it anyway.<br/> for my $i (0 .. @$list_ref - 2) {<br/>- next if $map_ref-&gt;[$i] eq $missing;<br/>+ next if $map_ref-&gt;[$i] eq $default;<br/> push @range_list, [ $list_ref-&gt;[$i],<br/> $list_ref-&gt;[$i+1],<br/> $map_ref-&gt;[$i]<br/>@@ -2745,13 +2716,13 @@ this recipe for properties that don&#39;t require adjustments:<br/> print charinrange(\@range_list, $code_point), &quot;\n&quot;;<br/> <br/> With this, C&lt;charinrange()&gt; will return C&lt;undef&gt; if its input code point maps<br/>-to C&lt;$missing&gt;. You can avoid this by omitting the C&lt;next&gt; statement, and adding<br/>+to C&lt;$default&gt;. You can avoid this by omitting the C&lt;next&gt; statement, and adding<br/> a line after the loop to handle the final element of the inversion map.<br/> <br/> Similarly, this recipe can be used for properties that do require adjustments:<br/> <br/> for my $i (0 .. @$list_ref - 2) {<br/>- next if $map_ref-&gt;[$i] eq $missing;<br/>+ next if $map_ref-&gt;[$i] eq $default;<br/> <br/> # prop_invmap() guarantees that if the mapping is to an array, the<br/> # range has just one element, so no need to worry about adjustments.<br/>@@ -3411,7 +3382,7 @@ RETRY:<br/> }<br/> <br/> # Find the range that the override applies to.<br/>- my $i = _search_invlist(\@invlist, $cp);<br/>+ my $i = search_invlist(\@invlist, $cp);<br/> if ($cp &lt; $invlist[$i] || $cp &gt;= $invlist[$i + 1]) {<br/> croak __PACKAGE__, &quot;::prop_invmap: wrong_range, cp=$cp; i=$i, current=$invlist[$i]; next=$invlist[$i + 1]&quot;<br/> }<br/>@@ -3520,6 +3491,100 @@ RETRY:<br/> return (\@invlist, \@invmap, $format, $missing);<br/> }<br/> <br/>+sub search_invlist {<br/>+<br/>+=pod<br/>+<br/>+=head2 B&lt;search_invlist()&gt;<br/>+<br/>+ use Unicode::UCD qw(prop_invmap prop_invlist);<br/>+ use Unicode::UCD &#39;search_invlist&#39;;<br/>+<br/>+ my @invlist = prop_invlist($property_name);<br/>+ print $code_point, ((search_invlist(\@invlist, $code_point) // -1) % 2)<br/>+ ? &quot; isn&#39;t&quot;<br/>+ : &quot; is&quot;,<br/>+ &quot; in $property_name\n&quot;;<br/>+<br/>+ my ($blocks_ranges_ref, $blocks_map_ref) = prop_invmap(&quot;Block&quot;);<br/>+ my $index = search_invlist($blocks_ranges_ref, $code_point);<br/>+ print &quot;$code_point is in block &quot;, $blocks_map_ref-&gt;[$index], &quot;\n&quot;;<br/>+<br/>+C&lt;search_invlist&gt; is used to search an inversion list returned by<br/>+C&lt;prop_invlist&gt; or C&lt;prop_invmap&gt; for a particular L&lt;/code point argument&gt;.<br/>+C&lt;undef&gt; is returned if the code point is not found in the inversion list<br/>+(this happens only when it is not a legal L&lt;code point argument&gt;, or is less<br/>+than the list&#39;s first element). A warning is raised in the first instance.<br/>+<br/>+Otherwise, it returns the index into the list of the range that contains the<br/>+code point.; that is, find C&lt;i&gt; such that<br/>+<br/>+ list[i]&lt;= code_point &lt; list[i+1].<br/>+<br/>+As explained in L&lt;/prop_invlist()&gt;, whether a code point is in the list or not<br/>+depends on if the index is even (in) or odd (not in). And as explained in<br/>+L&lt;/prop_invmap()&gt;, the index is used with the returned parallel array to find<br/>+the mapping.<br/>+<br/>+=cut<br/>+<br/>+<br/>+ my $list_ref = shift;<br/>+ my $input_code_point = shift;<br/>+ my $code_point = _getcode($input_code_point);<br/>+<br/>+ if (! defined $code_point) {<br/>+ carp __PACKAGE__, &quot;::search_invlist: unknown code &#39;$input_code_point&#39;&quot;;<br/>+ return;<br/>+ }<br/>+<br/>+ my $max_element = @$list_ref - 1;<br/>+<br/>+ # Return undef if list is empty or requested item is before the first element.<br/>+ return if $max_element &lt; 0;<br/>+ return if $code_point &lt; $list_ref-&gt;[0];<br/>+<br/>+ # Short cut something at the far-end of the table. This also allows us to<br/>+ # refer to element [$i+1] without fear of being out-of-bounds in the loop<br/>+ # below.<br/>+ return $max_element if $code_point &gt;= $list_ref-&gt;[$max_element];<br/>+<br/>+ use integer; # want integer division<br/>+<br/>+ my $i = $max_element / 2;<br/>+<br/>+ my $lower = 0;<br/>+ my $upper = $max_element;<br/>+ while (1) {<br/>+<br/>+ if ($code_point &gt;= $list_ref-&gt;[$i]) {<br/>+<br/>+ # Here we have met the lower constraint. We can quit if we<br/>+ # also meet the upper one.<br/>+ last if $code_point &lt; $list_ref-&gt;[$i+1];<br/>+<br/>+ $lower = $i; # Still too low.<br/>+<br/>+ }<br/>+ else {<br/>+<br/>+ # Here, $code_point &lt; $list_ref[$i], so look lower down.<br/>+ $upper = $i;<br/>+ }<br/>+<br/>+ # Split search domain in half to try again.<br/>+ my $temp = ($upper + $lower) / 2;<br/>+<br/>+ # No point in continuing unless $i changes for next time<br/>+ # in the loop.<br/>+ return $i if $temp == $i;<br/>+ $i = $temp;<br/>+ } # End of while loop<br/>+<br/>+ # Here we have found the offset<br/>+ return $i;<br/>+}<br/>+<br/> =head2 Unicode::UCD::UnicodeVersion<br/> <br/> This returns the version of the Unicode Character Database, in other words, the<br/>diff --git a/lib/Unicode/UCD.t b/lib/Unicode/UCD.t<br/>index e070def..4b0c227 100644<br/>--- a/lib/Unicode/UCD.t<br/>+++ b/lib/Unicode/UCD.t<br/>@@ -2026,5 +2026,14 @@ foreach my $prop (keys %props) {<br/> pass(&quot;prop_invmap(&#39;$mod_prop&#39;)&quot;);<br/> }<br/> <br/>+# A few tests of search_invlist<br/>+use Unicode::UCD qw(search_invlist);<br/>+<br/>+my ($scripts_ranges_ref, $scripts_map_ref) = prop_invmap(&quot;Script&quot;);<br/>+my $index = search_invlist($scripts_ranges_ref, 0x390);<br/>+is($scripts_map_ref-&gt;[$index], &quot;Greek&quot;, &quot;U+0390 is Greek&quot;);<br/>+my @alpha_invlist = prop_invlist(&quot;Alpha&quot;);<br/>+is(search_invlist(\@alpha_invlist, ord(&quot;\t&quot;)), undef, &quot;search_invlist returns undef for code points before first one on the list&quot;);<br/>+<br/> ok($/ eq $input_record_separator, &quot;The record separator didn&#39;t get overridden&quot;);<br/> done_testing();<br/>diff --git a/pod/perldelta.pod b/pod/perldelta.pod<br/>index cb7ab03..431e811 100644<br/>--- a/pod/perldelta.pod<br/>+++ b/pod/perldelta.pod<br/>@@ -126,6 +126,13 @@ memory used by 3.26 and earlier.<br/> <br/> C&lt;PERL5LIB&gt; is always propagated to a test&#39;s C&lt;@INC&gt;, even under C&lt;-T&gt;.<br/> <br/>+=item *<br/>+<br/>+Unicode::UCD has been upgraded from version 0.51 to 0.52.<br/>+<br/>+A function, L&lt;Unicode::UCD/search_invlist()&gt; is now available to do<br/>+search an inversion list or map for a code point.<br/>+<br/> =back<br/> <br/> =head2 Removed Modules and Pragmata<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37174.html Wed, 22 May 2013 16:13:20 +0000 [perl.git] branch blead, updated. v5.19.0-131-g2248d90 by Ricardo Signes In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/2248d90cae57123bbd57bed3759d290369a37652?hp=2073970fee26667acdf365b19220c8184fa8b18d&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 2248d90cae57123bbd57bed3759d290369a37652<br/>Author: Ricardo Signes &lt;rjbs@cpan.org&gt;<br/>Date: Wed May 22 09:33:16 2013 -0400<br/><br/> remove a spurious space<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> pod/perlfunc.pod | 2 +-<br/> 1 files changed, 1 insertions(+), 1 deletions(-)<br/><br/>diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod<br/>index 08b9df9..9540a01 100644<br/>--- a/pod/perlfunc.pod<br/>+++ b/pod/perlfunc.pod<br/>@@ -9197,7 +9197,7 @@ These flow-control keywords are documented in L&lt;perlsyn/&quot;Compound Statements&quot;&gt;.<br/> =item when<br/> <br/> These flow-control keywords related to the experimental switch feature are<br/>-documented in L&lt;perlsyn/&quot;Switch Statements&quot;&gt; .<br/>+documented in L&lt;perlsyn/&quot;Switch Statements&quot;&gt;.<br/> <br/> =back<br/> <br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37173.html Wed, 22 May 2013 13:33:33 +0000 [perl.git] branch blead, updated. v5.19.0-130-g2073970 by Nicholas Clark In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/2073970fee26667acdf365b19220c8184fa8b18d?hp=c5b6cc8c74b4cfaa225d9702c4139816707e1999&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 2073970fee26667acdf365b19220c8184fa8b18d<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 22 13:56:50 2013 +0200<br/><br/> Some more comments describing the slab allocator.<br/> <br/> These are based on the description of commit 8be227ab5eaa23f2, but provide<br/> explanations near to the relevant C code.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> op.c | 17 ++++++++++++++++-<br/> 1 files changed, 16 insertions(+), 1 deletions(-)<br/><br/>diff --git a/op.c b/op.c<br/>index 3bdbdf6..96a06b1 100644<br/>--- a/op.c<br/>+++ b/op.c<br/>@@ -165,11 +165,23 @@ Perl_Slab_Alloc(pTHX_ size_t sz)<br/> OP *o;<br/> size_t opsz, space;<br/> <br/>+ /* We only allocate ops from the slab during subroutine compilation.<br/>+ We find the slab via PL_compcv, hence that must be non-NULL. It could<br/>+ also be pointing to a subroutine which is now fully set up (CvROOT()<br/>+ pointing to the top of the optree for that sub), or a subroutine<br/>+ which isn&#39;t using the slab allocator. If our sanity checks aren&#39;t met,<br/>+ don&#39;t use a slab, but allocate the OP directly from the heap. */<br/> if (!PL_compcv || CvROOT(PL_compcv)<br/> || (CvSTART(PL_compcv) &amp;&amp; !CvSLABBED(PL_compcv)))<br/> return PerlMemShared_calloc(1, sz);<br/> <br/>- if (!CvSTART(PL_compcv)) { /* sneak it in here */<br/>+ /* While the subroutine is under construction, the slabs are accessed via<br/>+ CvSTART(), to avoid needing to expand PVCV by one pointer for something<br/>+ unneeded at runtime. Once a subroutine is constructed, the slabs are<br/>+ accessed via CvROOT(). So if CvSTART() is NULL, no slab has been<br/>+ allocated yet. See the commit message for 8be227ab5eaa23f2 for more<br/>+ details. */<br/>+ if (!CvSTART(PL_compcv)) {<br/> CvSTART(PL_compcv) =<br/> (OP *)(slab = S_new_slab(aTHX_ PERL_SLAB_SIZE));<br/> CvSLABBED_on(PL_compcv);<br/>@@ -180,6 +192,9 @@ Perl_Slab_Alloc(pTHX_ size_t sz)<br/> opsz = SIZE_TO_PSIZE(sz);<br/> sz = opsz + OPSLOT_HEADER_P;<br/> <br/>+ /* The slabs maintain a free list of OPs. In particular, constant folding<br/>+ will free up OPs, so it makes sense to re-use them where possible. A<br/>+ freed up slot is used in preference to a new allocation. */<br/> if (slab-&gt;opslab_freed) {<br/> OP **too = &amp;slab-&gt;opslab_freed;<br/> o = *too;<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37172.html Wed, 22 May 2013 11:59:20 +0000 [perl.git] branch smoke-me/nicholas/embed_lib, updated. v5.19.0-137-g19b4a09 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/embed_lib has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/19b4a091cf8836e58746afad403eff0c21e31277?hp=c5b6cc8c74b4cfaa225d9702c4139816707e1999&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 19b4a091cf8836e58746afad403eff0c21e31277<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue Apr 17 15:59:44 2012 +0200<br/><br/> Refactor autodoc.pl to read MANIFEST line by line, instead of slurping it.<br/><br/>M autodoc.pl<br/><br/>commit 8aae984e4f7549ef237c15d4a7f26d4f77feaace<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue Apr 17 15:47:13 2012 +0200<br/><br/> autodoc.pl now uses regen/embed_lib.pl to parse embed.fnc<br/> <br/> Previously it had its own custom parsing code for embed.fnc.<br/><br/>M autodoc.pl<br/><br/>commit ada7da9103425235b28b8223e09f4636c0087efe<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sun Apr 8 19:44:11 2012 +0200<br/><br/> Refactor autodoc.pl to use regen_lib.pl to generate file headers &amp; footers.<br/> <br/> This reduces duplication of code that generates &#39;-*- buffer-read-only: t -*-&#39;,<br/> &#39;ex: set ro:&#39; etc.<br/><br/>M Makefile.SH<br/>M autodoc.pl<br/><br/>commit 90f9998116d74c6d013ab5053c7f330a612b5026<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sun Apr 8 19:36:49 2012 +0200<br/><br/> In regen/regen_lib.pl, add &#39;Pod&#39; as a third supported &#39;language&#39;.<br/> <br/> Pod needs a commenting style distinct from C and Perl. (ie the empty string)<br/><br/>M regen/regen_lib.pl<br/><br/>commit 57cc0707c6dcba96c136512636ecb79f8519c08c<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sun Apr 8 13:28:06 2012 +0200<br/><br/> t/porting/diag.t now uses regen/embed_lib.pl to parse embed.fnc<br/> <br/> Previously it had its own custom parsing code for embed.fnc.<br/><br/>M t/porting/diag.t<br/><br/>commit 6b23d0ababee7054192f3a575cebdffa07100dc4<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sun Apr 8 13:08:28 2012 +0200<br/><br/> In t/porting/diag.t, use TestInit to chdir and set up @INC.<br/> <br/> Also eliminate the $|=1, as it&#39;s really not necessary for tests that neither<br/> fork nor shell out to other processes.<br/><br/>M t/porting/diag.t<br/><br/>commit 69c2ee803e78866069c45e8f1c3092d2c6393de3<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sun Apr 8 19:56:47 2012 +0200<br/><br/> Avoid VMS running autodoc.pl twice for no reason.<br/> <br/> Previous descrip_mms.template carried separate rules to build perlintern.pod<br/> and perlapi.pod, each of which caused autodoc.pl to run. autdoc.pl builds<br/> both files when it runs, so this was duplicate work.<br/><br/>M vms/descrip_mms.template<br/><br/>commit 0067d1d8cb4534a239eecb84c47d09e095e76f5e<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 22 11:48:03 2013 +0200<br/><br/> Refactor the &quot;check categories and severity&quot; logic in diag.t<br/> <br/> Move the &quot;todo&quot; bailout as early as possible, before any work is done.<br/> Replace C&lt;use 5.01&gt; [sic] with C&lt;use feature &#39;state&#39;&gt;, as this makes the<br/> intent much clearer.<br/> Use parenthesis for like() and is() as this is consistent with the rest of the<br/> test, and permits a simplification of the BEGIN handling.<br/><br/>M t/porting/diag.t<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> Makefile.SH | 3 +-<br/> autodoc.pl | 72 ++++++++++++++-------------------------------<br/> regen/regen_lib.pl | 14 ++++++---<br/> t/porting/diag.t | 64 ++++++++++++++--------------------------<br/> vms/descrip_mms.template | 6 ++--<br/> 5 files changed, 60 insertions(+), 99 deletions(-)<br/><br/>diff --git a/Makefile.SH b/Makefile.SH<br/>index 7502235..a18dff0 100755<br/>--- a/Makefile.SH<br/>+++ b/Makefile.SH<br/>@@ -1076,7 +1076,8 @@ pod/perltoc.pod: $(perltoc_pod_prereqs) $(PERL_EXE) $(ext) pod/buildtoc<br/> <br/> pod/perlapi.pod: pod/perlintern.pod<br/> <br/>-pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc<br/>+# Depending on $(nonxs_ext) gets us Text::Wrap built<br/>+pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc $(nonxs_ext)<br/> $(MINIPERL) autodoc.pl<br/> <br/> pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST<br/>diff --git a/autodoc.pl b/autodoc.pl<br/>index 59dc6f0..dd0d8bb 100644<br/>--- a/autodoc.pl<br/>+++ b/autodoc.pl<br/>@@ -25,6 +25,14 @@<br/> <br/> use strict;<br/> <br/>+if (@ARGV) {<br/>+ my $workdir = shift;<br/>+ chdir $workdir<br/>+ or die &quot;Couldn&#39;t chdir to &#39;$workdir&#39;: $!&quot;;<br/>+}<br/>+require &#39;regen/regen_lib.pl&#39;;<br/>+require &#39;regen/embed_lib.pl&#39;;<br/>+<br/> #<br/> # See database of global and static function prototypes in embed.fnc<br/> # This is used to generate prototype headers under various configurations,<br/>@@ -244,17 +252,11 @@ removed without notice.\n\n$docs&quot; if $flags =~ /x/;<br/> <br/> sub output {<br/> my ($podname, $header, $dochash, $missing, $footer) = @_;<br/>- my $filename = &quot;pod/$podname.pod&quot;;<br/>- open my $fh, &#39;&gt;&#39;, $filename or die &quot;Can&#39;t open $filename: $!&quot;;<br/>+ my $fh = open_new(&quot;pod/$podname.pod&quot;, undef,<br/>+ {by =&gt; &quot;$0 extracting documentation&quot;,<br/>+ from =&gt; &#39;the C source files&#39;});<br/> <br/>- print $fh &lt;&lt;&quot;_EOH_&quot;, $header;<br/>--*- buffer-read-only: t -*-<br/>-<br/>-!!!!!!! DO NOT EDIT THIS FILE !!!!!!!<br/>-This file is built by $0 extracting documentation from the C source<br/>-files.<br/>-<br/>-_EOH_<br/>+ print $fh $header;<br/> <br/> my $key;<br/> # case insensitive sort, with fallback for determinacy<br/>@@ -306,41 +308,15 @@ _EOB_<br/> }<br/> print $fh &quot;=back\n\n&quot;;<br/> }<br/>+ print $fh $footer, &quot;=cut\n&quot;;<br/> <br/>-print $fh $footer, &lt;&lt;&#39;_EOF_&#39;;<br/>-=cut<br/>-<br/>- ex: set ro:<br/>-_EOF_<br/>-<br/>- close $fh or die &quot;Can&#39;t close $filename: $!&quot;;<br/>+ read_only_bottom_close_and_rename($fh);<br/> }<br/> <br/>-if (@ARGV) {<br/>- my $workdir = shift;<br/>- chdir $workdir<br/>- or die &quot;Couldn&#39;t chdir to &#39;$workdir&#39;: $!&quot;;<br/>-}<br/>-<br/>-open IN, &quot;embed.fnc&quot; or die $!;<br/>-<br/>-while (&lt;IN&gt;) {<br/>- chomp;<br/>- next if /^:/;<br/>- while (s|\\\s*$||) {<br/>- $_ .= &lt;IN&gt;;<br/>- chomp;<br/>- }<br/>- s/\s+$//;<br/>- next if /^\s*(#|$)/;<br/>-<br/>- my ($flags, $retval, $func, @args) = split /\s*\|\s*/, $_;<br/>-<br/>- next unless $func;<br/>-<br/>- s/\b(NN|NULLOK)\b\s+//g for @args;<br/>- $func =~ s/\t//g; # clean up fields from embed.pl<br/>- $retval =~ s/\t//;<br/>+foreach (@{(setup_embed())[0]}) {<br/>+ next if @$_ &lt; 2;<br/>+ my ($flags, $retval, $func, @args) = @$_;<br/>+ s/\b(?:NN|NULLOK)\b\s+//g for @args;<br/> <br/> $funcflags{$func} = {<br/> flags =&gt; $flags,<br/>@@ -349,21 +325,19 @@ while (&lt;IN&gt;) {<br/> };<br/> }<br/> <br/>-my $file;<br/> # glob() picks up docs from extra .c or .h files that may be in unclean<br/> # development trees.<br/>-my $MANIFEST = do {<br/>- local ($/, *FH);<br/>- open FH, &quot;MANIFEST&quot; or die &quot;Can&#39;t open MANIFEST: $!&quot;;<br/>- &lt;FH&gt;;<br/>-};<br/>+open my $fh, &#39;&lt;&#39;, &#39;MANIFEST&#39;<br/>+ or die &quot;Can&#39;t open MANIFEST: $!&quot;;<br/>+while (my $line = &lt;$fh&gt;) {<br/>+ next unless my ($file) = $line =~ /^(\S+\.[ch])\t/;<br/> <br/>-for $file (($MANIFEST =~ /^(\S+\.c)\t/gm), ($MANIFEST =~ /^(\S+\.h)\t/gm)) {<br/> open F, &quot;&lt; $file&quot; or die &quot;Cannot open $file for docs: $!\n&quot;;<br/> $curheader = &quot;Functions in file $file\n&quot;;<br/> autodoc(\*F,$file);<br/> close F or die &quot;Error closing $file: $!\n&quot;;<br/> }<br/>+close $fh or die &quot;Error whilst reading MANIFEST: $!&quot;;<br/> <br/> for (sort keys %funcflags) {<br/> next unless $funcflags{$_}{flags} =~ /d/;<br/>diff --git a/regen/regen_lib.pl b/regen/regen_lib.pl<br/>index a575c97..4c13535 100644<br/>--- a/regen/regen_lib.pl<br/>+++ b/regen/regen_lib.pl<br/>@@ -36,7 +36,8 @@ sub safer_unlink {<br/> sub open_new {<br/> my ($final_name, $mode, $header) = @_;<br/> my $name = $final_name . &#39;-new&#39;;<br/>- my $lang = $final_name =~ /\.(?:c|h|tab|act)$/ ? &#39;C&#39; : &#39;Perl&#39;;<br/>+ my $lang = $final_name =~ /\.pod$/ ? &#39;Pod&#39; :<br/>+ $final_name =~ /\.(?:c|h|tab|act)$/ ? &#39;C&#39; : &#39;Perl&#39;;<br/> my $fh = gensym;<br/> if (!defined $mode or $mode eq &#39;&gt;&#39;) {<br/> if (-f $name) {<br/>@@ -82,11 +83,13 @@ sub close_and_rename {<br/> rename $name, $final_name or die &quot;renaming $name to $final_name: $!&quot;;<br/> }<br/> <br/>+my %lang_opener = (Perl =&gt; &#39;# &#39;, Pod =&gt; &#39;&#39;, C =&gt; &#39;/* &#39;);<br/>+<br/> sub read_only_top {<br/> my %args = @_;<br/> die &quot;Missing language argument&quot; unless defined $args{lang};<br/> die &quot;Unknown language argument &#39;$args{lang}&#39;&quot;<br/>- unless $args{lang} eq &#39;Perl&#39; or $args{lang} eq &#39;C&#39;;<br/>+ unless exists $lang_opener{$args{lang}};<br/> my $style = $args{style} ? &quot; $args{style} &quot; : &#39; &#39;;<br/> <br/> my $raw = &quot;-*- buffer-read-only: t -*-\n&quot;;<br/>@@ -125,8 +128,9 @@ EOM<br/> $raw .= $args{final} if $args{final};<br/> <br/> local $Text::Wrap::columns = 78;<br/>- my $cooked = $args{lang} eq &#39;Perl&#39;<br/>- ? wrap(&#39;# &#39;, &#39;# &#39;, $raw) . &quot;\n&quot; : wrap(&#39;/* &#39;, $style, $raw) . &quot; */\n\n&quot;;<br/>+ my $cooked = $args{lang} eq &#39;C&#39;<br/>+ ? wrap(&#39;/* &#39;, $style, $raw) . &quot; */\n\n&quot;<br/>+ : wrap($lang_opener{$args{lang}}, $lang_opener{$args{lang}}, $raw) . &quot;\n&quot;;<br/> $cooked =~ tr/\0/ /; # Don&#39;t break Larry&#39;s name etc<br/> $cooked =~ s/ +$//mg; # Remove all trailing spaces<br/> $cooked =~ s! \*/\n!$args{quote}!s if $args{quote};<br/>@@ -152,7 +156,7 @@ sub read_only_bottom_close_and_rename {<br/> <br/> if (defined $lang &amp;&amp; $lang eq &#39;Perl&#39;) {<br/> $comment =~ s/^/# /mg;<br/>- } else {<br/>+ } elsif (!defined $lang or $lang ne &#39;Pod&#39;) {<br/> $comment =~ s/^/ * /mg;<br/> $comment =~ s! \* !/* !;<br/> $comment .= &quot; */&quot;;<br/>diff --git a/t/porting/diag.t b/t/porting/diag.t<br/>index c5dcbee..8698bf9 100644<br/>--- a/t/porting/diag.t<br/>+++ b/t/porting/diag.t<br/>@@ -1,15 +1,15 @@<br/> #!/usr/bin/perl<br/>-use warnings;<br/>-use strict;<br/> <br/> BEGIN {<br/>- chdir &#39;t&#39;;<br/>- require &#39;./test.pl&#39;;<br/>+ @INC = &#39;..&#39; if -f &#39;../TestInit.pm&#39;;<br/> }<br/>+use TestInit qw(T); # T is chdir to the top level<br/> <br/>-plan(&#39;no_plan&#39;);<br/>+use warnings;<br/>+use strict;<br/> <br/>-$|=1;<br/>+require &#39;t/test.pl&#39;;<br/>+plan(&#39;no_plan&#39;);<br/> <br/> # --make-exceptions-list outputs the list of strings that don&#39;t have<br/> # perldiag.pod entries to STDERR without TAP formatting, so they can<br/>@@ -19,37 +19,19 @@ $|=1;<br/> # Just add the documentation instead.<br/> my $make_exceptions_list = ($ARGV[0]||&#39;&#39;) eq &#39;--make-exceptions-list&#39;;<br/> <br/>-chdir &#39;..&#39; or die &quot;Can&#39;t chdir ..: $!&quot;;<br/>-BEGIN { defined $ENV{PERL_UNICODE} and push @INC, &quot;lib&quot;; }<br/>+require &#39;regen/embed_lib.pl&#39;;<br/> <br/>+# Look for functions that look like they could be diagnostic ones.<br/> my @functions;<br/>-<br/>-open my $func_fh, &quot;&lt;&quot;, &quot;embed.fnc&quot; or die &quot;Can&#39;t open embed.fnc: $!&quot;;<br/>-<br/>-# Look for functions in embed.fnc that look like they could be diagnostic ones.<br/>-while (&lt;$func_fh&gt;) {<br/>- chomp;<br/>- s/^\s+//;<br/>- while (s/\s*\\$//) { # Grab up all continuation lines, these end in \<br/>- my $next = &lt;$func_fh&gt;;<br/>- $next =~ s/^\s+//;<br/>- chomp $next;<br/>- $_ .= $next;<br/>- }<br/>- next if /^:/; # Lines beginning with colon are comments.<br/>- next unless /\|/; # Lines without a vertical bar are something we can&#39;t deal<br/>- # with<br/>- my @fields = split /\s*\|\s*/;<br/>- next unless $fields[2] =~ /warn|err|(\b|_)die|croak/i;<br/>- push @functions, $fields[2];<br/>-<br/>+foreach (@{(setup_embed())[0]}) {<br/>+ next if @$_ &lt; 2;<br/>+ next unless $_-&gt;[2] =~ /warn|err|(\b|_)die|croak/i;<br/> # The flag p means that this function may have a &#39;Perl_&#39; prefix<br/> # The flag s means that this function may have a &#39;S_&#39; prefix<br/>- push @functions, &quot;Perl_$fields[2]&quot;, if $fields[0] =~ /p/;<br/>- push @functions, &quot;S_$fields[2]&quot;, if $fields[0] =~ /s/;<br/>-}<br/>-<br/>-close $func_fh;<br/>+ push @functions, $_-&gt;[2];<br/>+ push @functions, &#39;Perl_&#39; . $_-&gt;[2] if $_-&gt;[0] =~ /p/;<br/>+ push @functions, &#39;S_&#39; . $_-&gt;[2] if $_-&gt;[0] =~ /s/;<br/>+};<br/> <br/> my $regcomp_re = &quot;(?&lt;routine&gt;(?:ckWARN(?:\\d+)?reg\\w*|vWARN\\d+))&quot;;<br/> my $function_re = join &#39;|&#39;, @functions;<br/>@@ -401,24 +383,24 @@ sub check_message {<br/> # We found an actual valid entry in perldiag.pod for this error.<br/> pass($key);<br/> <br/>+ return $ret<br/>+ if $entries{$key}{cattodo};<br/>+<br/> # Now check the category and severity<br/> <br/> # Cache our severity qr thingies<br/>- use 5.01;<br/>+ use feature &#39;state&#39;;<br/> state %qrs;<br/> my $qr = $qrs{$severity} ||= qr/$severity/;<br/> <br/>- return $ret<br/>- if $entries{$key}{cattodo};<br/>-<br/>- like $entries{$key}{severity}, $qr,<br/>+ like($entries{$key}{severity}, $qr,<br/> $severity =~ /\[/<br/> ? &quot;severity is one of $severity for $key&quot;<br/>- : &quot;severity is $severity for $key&quot;;<br/>+ : &quot;severity is $severity for $key&quot;);<br/> <br/>- is $entries{$key}{category}, $categories,<br/>+ is($entries{$key}{category}, $categories,<br/> ($categories ? &quot;categories are [$categories]&quot; : &quot;no category&quot;)<br/>- . &quot; for $key&quot;;<br/>+ . &quot; for $key&quot;);<br/> }<br/> # Later, should start checking that the severity is correct, too.<br/> } elsif ($partial) {<br/>diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template<br/>index af27c3c..bb5b00c 100644<br/>--- a/vms/descrip_mms.template<br/>+++ b/vms/descrip_mms.template<br/>@@ -322,12 +322,12 @@ PERLDELTA_CURRENT = [.pod]perl5191delta.pod<br/> $(PERLDELTA_CURRENT) : [.pod]perldelta.pod<br/> Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)<br/> <br/>-[.pod]perlapi.pod : embed.fnc autodoc.pl $(MINIPERL_EXE)<br/>- $(MINIPERL) autodoc.pl<br/>-<br/> [.pod]perlmodlib.pod : [.pod]perlmodlib.pl MANIFEST $(MINIPERL_EXE)<br/> $(MINIPERL) [.pod]perlmodlib.pl &quot;-q&quot;<br/> <br/>+[.pod]perlapi.pod : [.pod]perlintern.pod<br/>+ @ $(NOOP)<br/>+<br/> [.pod]perlintern.pod : embed.fnc autodoc.pl $(MINIPERL_EXE)<br/> $(MINIPERL) autodoc.pl<br/> <br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37171.html Wed, 22 May 2013 10:15:27 +0000 [perl.git] branch smoke-me/nicholas/embed_lib, created. v5.19.0-129-gc5b6cc8 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/embed_lib has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/c5b6cc8c74b4cfaa225d9702c4139816707e1999?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at c5b6cc8c74b4cfaa225d9702c4139816707e1999 (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit c5b6cc8c74b4cfaa225d9702c4139816707e1999<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 8 16:30:18 2013 +0200<br/><br/> Add comments describing the operation of S_scan_ident().<br/><br/>M toke.c<br/><br/>commit 27ffb73a493be4fd4322b04f1bcbdabe6dff523b<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 8 16:27:19 2013 +0200<br/><br/> More tests for the &quot;Ambiguous use of ... resolved ...&quot; warning S_scan_ident().<br/> <br/> In particular, test that the special case for reporting $# as @ works.<br/><br/>M t/lib/warnings/toke<br/><br/>commit 5fb91d484fee378b489da85e763d4ae7df3f2baa<br/>Author: Max Maischein &lt;corion@corion.net&gt;<br/>Date: Tue May 21 21:40:21 2013 +0200<br/><br/> Fix typo in Porting/sync-with-cpan<br/> <br/> I will run `make test_porting` on the correct branch before submitting a patch.<br/> I will run `make test_porting` on the correct branch before submitting a patch.<br/> I will run `make test_porting` on the correct branch before submitting a patch.<br/><br/>M Porting/sync-with-cpan<br/><br/>commit a1450e8bf79c3c2d21815edb107c092b823221fd<br/>Author: Max Maischein &lt;corion@corion.net&gt;<br/>Date: Tue May 21 19:09:47 2013 +0200<br/><br/> Eliminate external call to tar executable in favour of Archive::Tar<br/> <br/> Archive::Tar has -&gt;extract_archive, which does Just That. This means<br/> we lose immediate support for bzip2 files, but not all<br/> incarnations of `tar` support it either.<br/> <br/> Signed-off-by: David Golden &lt;dagolden@cpan.org&gt;<br/><br/>M Porting/sync-with-cpan<br/><br/>commit b6956a94c03907bb423a113afad54a0e343f44cf<br/>Author: Chris &#39;BinGOs&#39; Williams &lt;chris@bingosnet.co.uk&gt;<br/>Date: Tue May 21 14:13:52 2013 +0100<br/><br/> Add new Module::CoreList::Utils to MANIFEST<br/><br/>M MANIFEST<br/><br/>commit eab82fd6486ac0971d2f1b8800432a3b8f0b315c<br/>Merge: b4b2fef 5730025<br/>Author: Chris &#39;BinGOs&#39; Williams &lt;chris@bingosnet.co.uk&gt;<br/>Date: Tue May 21 13:32:53 2013 +0100<br/><br/> Merge branch &#39;smoke-me/coreutils&#39; into blead<br/><br/>commit b4b2fefd8bdd72b0f88245101f270e9dc39568f6<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed Apr 24 17:01:43 2013 +0200<br/><br/> Remove 2 superfluous use lines from ExtUtils::CBuilder.<br/> <br/> use IO::File was added with the upgrade to 0.23 (commit c3fb68a339256eb3 in<br/> April 2008), but the use of IO::File in the code was eliminated by the<br/> upgrade to 0.2800 (commit 06e8058f27e4269b in Dec 2010), which replaced<br/> the code in question with use of File::Temp. The latter refactoring also<br/> added the use Data::Dumper; line, but did not add any code which uses<br/> Data::Dumper.<br/><br/>M dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm<br/><br/>commit fdf38e49aa470e60cb56fdd7a3a49f85da8ea2ce<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed Apr 10 13:44:07 2013 +0200<br/><br/> Refactor 3 tests so that they avoid clearing %:: via list assignment.<br/> <br/> For all 3, clearing %:: was intended to expose another bug, not to directly<br/> test the effects of clearing %::<br/> <br/> Tested by building the 3 revisions that added the tests, and confirming that<br/> the revised test also triggers the bug that each fixed.<br/><br/>M t/op/stash.t<br/><br/>commit aee674b7db1a4a3fd0082f4247560d3c945d0f5c<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Fri Apr 5 12:12:53 2013 +0200<br/><br/> Test that caller does not SEGV when the current package is undefined.<br/> <br/> Prior to commit d4d03940c58a0177 this code would SEGV under ithreads.<br/> Test suggested by Brian Fraser.<br/><br/>M t/op/caller.t<br/><br/>commit ef4abe7673cc0b19ffd81c9a42f79de20a52ac87<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 20 17:55:46 2013 +0200<br/><br/> Remove fakethr.h and eliminate all references to it and FAKE_THREADS<br/> <br/> fakethr.h and FAKE_THREADS were for a &quot;green&quot; threads implementation of<br/> 5005threads. 5005threads itself is long gone, and it&#39;s not clear that<br/> -DFAKE_THREADS *ever* built correctly. Certainly it did not work for the<br/> 5.005 release, and it did not work at the time of the commits for the initial<br/> checkin. The closest that it seems to have been to working is around commit<br/> c6ee37c52f2ca9e5 (Dec 1997), where the headers no longer contained errors,<br/> but perl.c failed to compile.<br/><br/>M MANIFEST<br/>M configpm<br/>M dist/threads-shared/lib/threads/shared.pm<br/>M dist/threads-shared/shared.xs<br/>D fakethr.h<br/>M perl.h<br/>M vms/descrip_mms.template<br/><br/>commit 31a53e79025eb5944553e671a615e60f384fe743<br/>Merge: 9e7945e 8ca91d3<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 21 07:49:29 2013 +0200<br/><br/> Merge the refactoring of x2p&#39;s Makefile to blead.<br/><br/>commit 8ca91d39a4a96434bc909d710b033c8505e2cde3<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 21:48:12 2013 +0200<br/><br/> Simplify x2p&#39;s Makefile.<br/> <br/> Eliminate plexe and plc, which relate to tests for the compiler and were<br/> added as part of commit 52cebf5efc9883c7 in May 1988. The compiler was<br/> removed by commit de1254415ffeb03b in Sept 2006.<br/> <br/> The files a2p.man and s2p.man were removed with Perl 5.000.<br/> The macros &#39;public&#39;, &#39;private&#39; and &#39;util&#39; mirror the structure of the top<br/> level Makefile.SH. However, x2p only ever used &#39;public&#39;, so simplify things<br/> by inlining the value of &#39;public&#39; in the only place that uses it.<br/> &#39;addedbyconf&#39; now only contains the value of &#39;plextract&#39;, so use the latter<br/> directly in the one place that had used &#39;addedbyconf&#39;.<br/><br/>M x2p/Makefile.SH<br/><br/>commit e1da83eac92e1d2253d6b03218386b36cb4bb0af<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 21:34:21 2013 +0200<br/><br/> Remove rules to delete *.loadmap and *.prelmap files, generated on VM/ESA<br/> <br/> These rules to clean up properly on VM/ESA were added in Oct 1998 by<br/> perforce changes 1961, 1962 and 1963 in the confperl branch. VM/ESA support<br/> was removed by commit 043fec90e88a2e23 in Aug 2012.<br/><br/>M Cross/Makefile-cross-SH<br/>M Makefile.SH<br/>M x2p/Makefile.SH<br/><br/>commit 6105164f37e277ea0eb5dec4a432b86b49489be1<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 21:26:59 2013 +0200<br/><br/> Add x2p/Makefile.SH to the *.SH files processed by the top level Makefile.<br/> <br/> This makes the top level Makefile responsible for deleting x2p/Makefile.<br/> With this, we can eliminate the &#39;sh&#39; and &#39;shextract&#39; from x2p&#39;s Makefile.<br/><br/>M Makefile.SH<br/>M x2p/Makefile.SH<br/><br/>commit 655e5c9e391de4eef96d3ad88908a53cddbf53e3<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 21:17:31 2013 +0200<br/><br/> Remove the now unused &#39;shlist&#39; Makefile targets.<br/><br/>M Makefile.SH<br/>M x2p/Makefile.SH<br/><br/>commit 9719c95bf27185afc59c14150d4f052f92217540<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 20:57:37 2013 +0200<br/><br/> Programmatically generate dependencies for all *.SH files.<br/> <br/> Previously dependencies for Makefile, config.h and makedepend were<br/> explicitly coded into verbatim sections of Makefile.SH, with most of the<br/> others being generated by makedepend.SH<br/><br/>M Makefile.SH<br/>M makedepend.SH<br/><br/>commit fc40bd89f80e1d94b62f08a3ab57f39ea3333029<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 20:25:47 2013 +0200<br/><br/> Add runtests.SH to the code that generates the targets sh and shextract.<br/> <br/> The generated Makefile is functionally identical.<br/><br/>M Makefile.SH<br/><br/>commit c0d271fb2cf4e67f892e8f1b575439d13b73a01f<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 17:14:50 2013 +0200<br/><br/> Eliminate x2p/cflags.SH. x2p&#39;s Makefile can use ../cflags<br/> <br/> x2p/Makefile is only used on *nix, so this should not present a problem.<br/><br/>M MANIFEST<br/>M Porting/exec-bit.txt<br/>M x2p/Makefile.SH<br/>D x2p/cflags.SH<br/><br/>commit 3ae7e562a2ff05c27052670c20b7ba3b7005bf7b<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 19:40:46 2013 +0200<br/><br/> Pass in to makedepend the name(s) of files that all objects depend on.<br/><br/>M Makefile.SH<br/>M makedepend.SH<br/>M x2p/Makefile.SH<br/><br/>commit 0ff64a71c493f41b23ddd052a465c3d40c3264f2<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 16:54:40 2013 +0200<br/><br/> In the Makefile, generate the value of shextract programmatically.<br/> <br/> shextract lists the files generated by shell scripts named *.SH which need<br/> deleting. Instead of maintaining it by hand, generate it in Makefile.SH from<br/> the list of *.SH files.<br/> <br/> This indirectly eliminates the last reference to F&lt;makedir&gt;. makedir.SH<br/> was eliminated by commit ebca06e95b02d1a8 and the reference to makedir.SH in<br/> Makefile.SH eliminated by commit 847471027aa42997 (both Sept 2009), but<br/> that commit missed that the reference to makedir a few lines later was<br/> related.<br/><br/>M Makefile.SH<br/><br/>commit 417de989d3cb17f83d8a6af00ff4b171a8682c8c<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 13:01:22 2013 +0200<br/><br/> Defer running makedepend in x2p/ until it&#39;s needed.<br/> <br/> We can run makedepend in x2p/ as part of the regular build process, which<br/> means that it can run as part of a parallel make. This gets a slight<br/> speedup (0.2s on this system), and increases flexibility on how x2p/Makefile<br/> is generated.<br/><br/>M Makefile.SH<br/><br/>commit 2fea0471858664126bb4c23b75f6bf15c262cd8b<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 12:49:44 2013 +0200<br/><br/> Add x2p/makefile to the dependencies for targets within x2p/<br/> <br/> This will give us more flexibility in when and how we generate it.<br/> <br/> [x2p/makefile is x2p/GNUmakefile on OS X]<br/><br/>M Makefile.SH<br/><br/>commit d730c2986a70e4fa953cb2f352b7b5ebf41ea580<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 12:33:05 2013 +0200<br/><br/> Remove vestigial *.SH code which can link the extracted file into ../<br/> <br/> 4 of the *.SH files have code which links the extracted file into the parent<br/> directory if the current directory ends SH. This code dates from Perl 1.<br/> It seems that the intent was that the *.SH files could live in a SH/<br/> directory, but that feature was neither used or mentioned in the<br/> documentation in Perl 1, and hasn&#39;t been used since.<br/><br/>M Cross/Makefile-cross-SH<br/>M Makefile.SH<br/>M makedepend.SH<br/>M x2p/Makefile.SH<br/><br/>commit 9e7945ee50c30a17a84968fb0c7e5c38223af6f9<br/>Merge: 39ecab1 7df6ffa<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 20 21:42:33 2013 +0200<br/><br/> Merge the pack refactoring to blead.<br/><br/>commit 7df6ffa3fb2efaa96f5e6001f1cc311ad9f8b185<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 20 21:40:27 2013 +0200<br/><br/> Notes in perldelta for the tiny XS-visible changes of the pack refactoring.<br/><br/>M pod/perldelta.pod<br/><br/>commit 228e69a781c23b2599bbd89f1de29c212f10ea31<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 8 10:40:07 2013 +0200<br/><br/> Annotate the &quot;cold&quot; paths in pp_pack.c with UNLIKELY().<br/> <br/> The usual case is nice regular bytes in the host&#39;s nice regular order.<br/><br/>M pp_pack.c<br/><br/>commit 545872c5eddf1f00b9826a3d8d682387f1c5049d<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 18:25:53 2013 +0200<br/><br/> Eliminate the implementations of [hv]to[vh][ls] for mixed-endian systems.<br/> <br/> As pp_pack.c has had mixed-endian support removed, there is little point in<br/> keeping code in perl.h and util.c only needed for architectures that cannot<br/> be built.<br/><br/>M perl.h<br/>M util.c<br/><br/>commit 1cb43330cc18f2eee5ab1eb58e65991407f4b243<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 18:17:39 2013 +0200<br/><br/> Eliminate Perl_my_swabn(), as it is now unused.<br/> <br/> It is not marked as part of the API, and no code on CPAN is using it.<br/><br/>M embed.fnc<br/>M embed.h<br/>M proto.h<br/>M util.c<br/><br/>commit 3a88beaa68dbb5bad93145daa0c829e0aeb40adb<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 17:39:42 2013 +0200<br/><br/> When endian-swapping in pack, simply copy the bytes in reverse order.<br/> <br/> This should restore support for big endian Crays. It doesn&#39;t support<br/> mixed-endian systems.<br/><br/>M embed.fnc<br/>M pp_pack.c<br/>M proto.h<br/><br/>commit aaec8192358ffb8080ad85754ea9aeca93b06c8b<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 16:22:08 2013 +0200<br/><br/> Pass &#39;needs_swap&#39; as a parameter to SHIFT_BYTES.<br/> <br/> It feels wrong to have it as an implicit parameter sucked in via the textual<br/> expansion of the macro. Whilst it can be derived from the parameter<br/> &#39;datumtype&#39;, it seems that the C compiler generates a lot less efficient code<br/> that way.<br/><br/>M pp_pack.c<br/><br/>commit 20aa3a3813ca2068a61ea9582e99df57cc735e62<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 15:15:54 2013 +0200<br/><br/> When endian-swapping in unpack, simply copy the bytes in reverse order.<br/> <br/> It is considerably simpler to re-order the bytes before reading them into<br/> the variable of the desired type, than to read into the variable and then<br/> need a specialised &quot;reverse this integer&quot; function for each size of integer.<br/> <br/> This should restore support for big endian Crays. It doesn&#39;t support<br/> mixed-endian systems. Support for mixed-endian systems can be restored (if<br/> needed) by re-ordering the bytes correctly at the locations which currently<br/> only know how to reverse the bytes.<br/><br/>M pp_pack.c<br/><br/>commit cd7e75121be11e7979933a8f7a47cd842a685157<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 12:23:00 2013 +0200<br/><br/> Fold the implementation of DO_BO_UNPACK into SHIFT_BYTES(), its only user.<br/><br/>M pp_pack.c<br/><br/>commit 7285e3f43c94010f09aa1b7a3ccbdbe7de1aa3e8<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 11:53:17 2013 +0200<br/><br/> Re-implement SHIFT16 and SHIFT32 as wrappers to SHIFT_BYTES.<br/><br/>M pp_pack.c<br/><br/>commit e396d2357dcec18c01b1cc78d9edc80a3aa4066d<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 10:08:53 2013 +0200<br/><br/> Refactor the two uses of SHIFT{16,32} not followed by DO_BO_UNPACK().<br/> <br/> There is one place where SHIFT16() is not immediately followed by<br/> DO_BO_UNPACK() (&#39;n!&#39; and &#39;v!&#39;), and one place where SHIFT32() is not<br/> immediately followed by DO_BO_UNPACK() (&#39;N!&#39; and &#39;V!&#39;). Every other use of<br/> either macro is followed by DO_BO_UNPACK(). For the two locations that don&#39;t<br/> have DO_BO_UNPACK(), the modifiers &#39;&lt;&#39; and &#39;&gt;&#39; are illegal, hence<br/> DO_BO_UNPACK() will always be a no-op. Hence add DO_BO_UNPACK() to both<br/> (which permits refactoring to simplify things), and add assert()s that the<br/> assumptions are true.<br/><br/>M pp_pack.c<br/><br/>commit 2b4ad5699f46c7f63185ad4e7d1f61e16aaa73f6<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 09:25:39 2013 +0200<br/><br/> Remove the now unused &#39;type&#39; argument from the macros DO_BO_(UN)?PACK.<br/><br/>M pp_pack.c<br/><br/>commit e8966daba327099373354b8935491872e853160e<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 20:40:34 2013 +0200<br/><br/> As DO_BO_(UN)?PACK are now implemented with my_swabn(), simplify &#39;J&#39; and &#39;j&#39;.<br/> <br/> The conditionally compiled code to figure out the correct named integer<br/> size for UVs and IVs is no longer needed, as my_swabn() will swap UVs and<br/> IVs, whatever their length.<br/><br/>M pp_pack.c<br/>M t/porting/diag.t<br/><br/>commit 0c0fa9f456cec3d6fd9e033a5024063564ee1ca7<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 19:58:10 2013 +0200<br/><br/> Merge the identical definitions of DO_BO_UNPACK and DO_BO_PACK.<br/> <br/> Delete the now-unused mixed-endian definitions of DO_BO_UNPACK and<br/> DO_BO_PACK, and the macro BO_CANT_DOIT, as they were the last two things<br/> using it.<br/><br/>M pp_pack.c<br/><br/>commit a1219b5e0bb6c311848c834f67e70ff7a19c6bf4<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 19:41:10 2013 +0200<br/><br/> Swap byte order in DO_BO_(UN)?PACK based on a variable needs_swap.<br/> <br/> Add the macro NEEDS_SWAP to initialise needs_swap based on<br/> TYPE_ENDIANNESS(datumtype). This makes the two definitions of DO_BO_UNPACK<br/> identical, and the two definitions of DO_BO_PACK identical.<br/> <br/> This also makes building pp_pack.c on a mixed endian byteorder architecture<br/> a compile time error. The commit adds pointers on where to add code to<br/> re-instate support for such architectures.<br/><br/>M pp_pack.c<br/><br/>commit e8fda8c499f46bb801215ff1dbea51c1f3007a6c<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 18:43:26 2013 +0200<br/><br/> DO_BO_{UN,}PACK can use my_swabn() directly.<br/> <br/> This removes the only users of my_{be,le,h}to{be,le,h}n, so remove the<br/> definitions for those macros.<br/><br/>M perl.h<br/>M pp_pack.c<br/><br/>commit 7e38f754fea50c46f3571cd67982e061b3cf8304<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 18:05:24 2013 +0200<br/><br/> Use DO_BO_{UN,}PACK in place of DO_BO_UNPACK_{N,PC}<br/> <br/> Also, eliminate the intermediate macros DO_BO_PACK_PTR and DO_BO_UNPACK_PTR.<br/><br/>M pp_pack.c<br/><br/>commit 79be8fb4ac8fa99573841ce07cea480399422f8f<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 17:16:18 2013 +0200<br/><br/> Eliminate my_{hto[bl]e,[bl]etoh}{16,32,64,s,i,l} as nothing now uses them.<br/><br/>M embed.fnc<br/>M embed.h<br/>M perl.h<br/>M proto.h<br/>M util.c<br/><br/>commit 68a0946fb4222dd6bcf5c2881bf6cd64c2c2e5ef<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 16:54:12 2013 +0200<br/><br/> In pp_pack.c, refactor DO_BO_(UN)?PACK to use my_letohn etc<br/> <br/> Previously they were using a my_letoh* function for the appropriate size.<br/> <br/> This commit probably breaks fixed 16 and 32 bit templates on big endian<br/> Crays where sizeof(short) and sizeof(int) are 8. A future commit will<br/> restore support. (Although it&#39;s not clear whether such Crays can still<br/> build blead cleanly, as we&#39;ve not had any feedback since Boeing<br/> decommissioned their Cray.)<br/><br/>M pp_pack.c<br/><br/>commit 86c6fce076648c5abe5ab491fec9d3142d93bde1<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 16:36:09 2013 +0200<br/><br/> In pp_pack.c, refactor DO_BO_(UN)?PACK_PTR to use my_letohn etc<br/> <br/> Previously they were casting the pointer to an integer value, calling<br/> a my_letoh* function for the appropriate size, and casting the return value<br/> back to a pointer.<br/><br/>M pp_pack.c<br/><br/>commit df609c5f9dbf07fc7a18075911f5eaefdeea3ffd<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 16:22:01 2013 +0200<br/><br/> In pp_pack.c, refactor DO_BO_(UN)?PACK_N to use sizeof() on the variable.<br/> <br/> Previously they were using sizeof() on the type argument passed to the<br/> macro. This change makes their implementation more like DO_BO_(UN)?PACK<br/> and DO_BO_(UN)?PACK_PTR.<br/><br/>M pp_pack.c<br/><br/>commit 3cc90e2e712615f2081743c38153954d60e3f0df<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 15:46:02 2013 +0200<br/><br/> Refactor macros in pp_pack.c, removing support for mixed-endian byte orders.<br/> <br/> The byte-order handling can be simplified considerably if we don&#39;t have to<br/> support mixed-endian systems. It&#39;s not clear whether Perl 5.000 even<br/> compiled on PDP-11s, let alone more recent versions.<br/> <br/> Support probably can be added back at the end of the refactoring, if someone<br/> has time and a PDP-11 to test on, but for the intermediate stages it is a<br/> lot easier not to need to think about such platforms.<br/><br/>M pp_pack.c<br/><br/>commit 691a44df41bbec11b634fc7bbf78a6eeb1f768a3<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 14:40:04 2013 +0200<br/><br/> Eliminate the conditionally-compiled fallback functions for htonl etc.<br/> <br/> These are now only being used for mixed-endian platforms which do not<br/> provide their own htnol (etc) functions. Given that the fallbacks have been<br/> buggy since they were added in Perl 3.0, it&#39;s safe to conclude that no<br/> mixed-endian platforms were ever using these functions.<br/> <br/> It&#39;s also unclear why these functions were ever marked as &#39;A&#39;, part of the<br/> API. XS code can&#39;t call them directly, as it can&#39;t rely on them being<br/> compiled. Unsurprisingly, no code on CPAN references them.<br/><br/>M embed.fnc<br/>M embed.h<br/>M perl.h<br/>M proto.h<br/>M util.c<br/><br/>commit 66bb80e4324617840aa70c8af410bf76eedcbea1<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 13:28:20 2013 +0200<br/><br/> Remove buggy loop-based byte swapping code.<br/> <br/> The irony is that the union-based code special-cased for little endian<br/> systems actually works everywhere, even on mixed-endian systems.<br/><br/>M pod/perldiag.pod<br/>M util.c<br/><br/>commit 36bb5e1d607385b423cc4360bce20f3043900790<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 08:20:57 2013 +0200<br/><br/> Update the Win32 miniperl conditional compilation, for the htonl etc changes.<br/> <br/> As of commit 19253ae62cd13079 (Oct 2012), miniperl on Win32 avoids using<br/> Winsock. The win32_* wrappers for htonl etc had used the pre-processor<br/> macro MYSWAP to conditionally compile in the correct code. However, MYSWAP<br/> was defined as a side effect of using the htonl etc wrappers in util.c,<br/> which are no longer needed. Hence use the WIN32_NO_SOCKETS macro directly<br/> in win32sck.c for the correct conditional compilation.<br/><br/>M win32/win32sck.c<br/><br/>commit e4b03fedd1c92616345d5428c7b0d2981b0e00d8<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sat May 4 22:50:12 2013 +0200<br/><br/> Fallbacks for ntohl, ntohs, htonl and htons for little endian systems.<br/> <br/> The host byteorder agnostic functions in util.c are now only used on mixed<br/> endian systems.<br/><br/>M perl.h<br/><br/>commit 8e2d7c446d5ab31e6c8e661a3c17f0f0b199d525<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sat May 4 22:03:59 2013 +0200<br/><br/> Provide ntohl, ntohs, htonl and htons no-op macros on big endian systems.<br/> <br/> This means that there are always macros or functions for ntohl, ntohs,<br/> htonl and htons available, so eliminate use of HAS_NTOHL etc, and<br/> unconditionally compile the code that it was protecting. However, as code<br/> on CPAN is using these guard macros, define all of them in perl.h<br/> <br/> (Technically the 4 are not quite no-ops, as they truncate their values to<br/> 32 or 16 bits, to be consistent with the implementations for platforms which<br/> need re-ordering.)<br/><br/>M perl.h<br/>M pp_pack.c<br/>M pp_sys.c<br/><br/>commit 260c6fee6deba90b42b0734fbdea2fea1d69c9bc<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sat May 4 21:30:27 2013 +0200<br/><br/> Provide vtohl, vtohs, htovl and htovs no-op macros on little endian systems.<br/> <br/> This means that there are always macros or functions for vtohl, vtohs,<br/> htovl and htovs available, so eliminate HAS_VTOHL etc, and unconditionally<br/> compile the code that it was protecting. grep.cpan.me shows that no code on<br/> CPAN uses any of these macros.<br/> <br/> (Technically the 4 are not quite no-ops, as they truncate their values to<br/> 32 or 16 bits, to be consistent with the implementations for platforms which<br/> need re-ordering.)<br/><br/>M perl.h<br/>M pp_pack.c<br/>M util.c<br/><br/>commit 5ae724797a32a9a98d51759460d87f419fdd5a45<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sat May 4 21:07:14 2013 +0200<br/><br/> vtohl, vtohs, htovl and htovs are no-ops on 64 bit little endian systems.<br/> <br/> Previously they were implemented as function calls on 64 bit little endian<br/> systems. Bit endian systems implemented them as byte-swapping macros. 32<br/> little endian system didn&#39;t implement them at all. 32 and 64 bit little<br/> endian systems now behave identically.<br/><br/>M perl.h<br/><br/>commit fcdf154797de71462d8c8f5606482a86ed73943a<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Fri May 3 17:06:01 2013 +0200<br/><br/> Eliminate the definitions for DO_BO_PACK_P and DO_BO_UNPACK_P.<br/> <br/> Commit 07409e015252427f in April 2005 replaced all the uses of these two<br/> macros with DO_BO_PACK_PC and DO_BO_UNPACK_PC.<br/><br/>M pp_pack.c<br/><br/>commit f8e5a5db38586c726249f161f1fbb581d1738ca2<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Fri May 3 15:52:38 2013 +0200<br/><br/> Eliminate pre-5.9.x conditional code for PERL_PACK_CAN_SHRIEKSIGN<br/> <br/> PERL_PACK_CAN_SHRIEKSIGN has been unconditionally defined for versions 5.9.x<br/> and greater, and undefined for 5.8.x. As we are never going to need to<br/> port changes back to maint-5.8 any more, eliminate all the 5.8.x related code<br/> and the macro that supports it.<br/><br/>M packsizetables.c<br/>M pp_pack.c<br/>M regen/genpacksizetables.pl<br/><br/>commit 5fa237154915dfcb787e0c5403e6260482a5fb3e<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Fri May 3 15:26:34 2013 +0200<br/><br/> Eliminate pre-5.9.x conditional code for PERL_PACK_CAN_BYTEORDER<br/> <br/> PERL_PACK_CAN_BYTEORDER has been unconditionally defined for versions 5.9.x<br/> and greater, and undefined for 5.8.x. As we are never going to need to<br/> port changes back to maint-5.8 any more, eliminate all the 5.8.x related code,<br/> and the macro that supports it.<br/><br/>M pp_pack.c<br/><br/>commit 39ecab1c690aee1a1fdeefb6c706448af5d2981f<br/>Merge: 6d5abc6 843b375<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 20 21:12:01 2013 +0200<br/><br/> Merge the reworking of how genpacksizetables.pl is used.<br/><br/>commit 843b37592a564e2e84c28a00619ac6c132c6dbc9<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 12:06:39 2013 +0200<br/><br/> Add regen/genpacksizetables.pl to t/porting/regen.t<br/><br/>M t/porting/regen.t<br/><br/>commit e3f061af802f7db7c760d810c495d83763fff668<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 11:54:19 2013 +0200<br/><br/> Move genpacksizetables.pl to regen/genpacksizetables.pl<br/><br/>M MANIFEST<br/>D genpacksizetables.pl<br/>M packsizetables.c<br/>A regen/genpacksizetables.pl<br/><br/>commit 6b05cb8115fc15fed0e6bf162a9cc797222572ee<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 11:47:30 2013 +0200<br/><br/> Refactor genpacksizetables.pl to use regen/regen_lib.pl<br/><br/>M genpacksizetables.pl<br/>M packsizetables.c<br/><br/>commit 298bc19c0935302faa4957de141245bb64c6b2df<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 11:23:11 2013 +0200<br/><br/> Extract the generated packprops array into packsizetables.c.<br/> <br/> The C source is the output from genpacksizetables.pl<br/> Previously it was pasted into pp_pack.c<br/> <br/> LocalWords: packprops<br/><br/>M MANIFEST<br/>A packsizetables.c<br/>M pp_pack.c<br/><br/>commit e2add64b70b6d5c55a6598257032bf0777c5976c<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 11:08:05 2013 +0200<br/><br/> Propagate a change from commit 1651fc447620d361 into genpacksizetables.pl.<br/> <br/> pp_pack.c contains a table generated by genpacksizetables.pl, pasted into the<br/> C source. The C source was updated by commit 1651fc447620d361 in April 2007,<br/> but the table used to generate the code was not.<br/><br/>M genpacksizetables.pl<br/><br/>commit d8a3828919c2d8a9e1344ba4d05795d37ed9cdb6<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 13 16:18:12 2013 -0600<br/><br/> genpacksizetables.pl: Correct comment typo<br/><br/>M genpacksizetables.pl<br/><br/>commit 6d5abc62848da0e110869e2b13c68bf498ff3a90<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed Mar 6 16:27:08 2013 +0100<br/><br/> Change LIKELY() and UNLIKELY() to cast their first argument to a bool.<br/> <br/> This avoids problems such as pointers being compared with the literal value 1.<br/> Suggested by Zefram.<br/> <br/> Note that this is technically a change of behaviour, as the macro EXPECT(),<br/> which they are both both wrappers for, returns its value, so they will now<br/> be returning TRUE or FALSE, rather than the actual value passed to them.<br/> However, all uses in the core and on CPAN are only within if() statements, so<br/> this should not make any difference in practice.<br/><br/>M perl.h<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37170.html Wed, 22 May 2013 10:15:20 +0000 [perl.git] branch nicholas/configpm, deleted. v5.17.0-612-g4cea661 by Nicholas Clark In perl.git, the branch nicholas/configpm has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=4cea661a4dfd3760254ea67f29aef8e4094e7255&gt;<br/><br/> was 4cea661a4dfd3760254ea67f29aef8e4094e7255<br/><br/>-----------------------------------------------------------------------<br/>4cea661a4dfd3760254ea67f29aef8e4094e7255 perlhacktips: add AddressSanitizer<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37169.html Wed, 22 May 2013 08:58:10 +0000 [perl.git] branch smoke-me/nicholas/S_scan_ident, deleted. v5.17.10-50-g5fd6a1f by Nicholas Clark In perl.git, the branch smoke-me/nicholas/S_scan_ident has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=5fd6a1f52e77aaae4c3ed9b44061fca8731d857f&gt;<br/><br/> was 5fd6a1f52e77aaae4c3ed9b44061fca8731d857f<br/><br/>-----------------------------------------------------------------------<br/>5fd6a1f52e77aaae4c3ed9b44061fca8731d857f Add comments describing the operation of S_scan_ident().<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37168.html Wed, 22 May 2013 08:54:27 +0000 [perl.git] branch blead, updated. v5.19.0-129-gc5b6cc8 by Nicholas Clark In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/c5b6cc8c74b4cfaa225d9702c4139816707e1999?hp=5fb91d484fee378b489da85e763d4ae7df3f2baa&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit c5b6cc8c74b4cfaa225d9702c4139816707e1999<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 8 16:30:18 2013 +0200<br/><br/> Add comments describing the operation of S_scan_ident().<br/><br/>M toke.c<br/><br/>commit 27ffb73a493be4fd4322b04f1bcbdabe6dff523b<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 8 16:27:19 2013 +0200<br/><br/> More tests for the &quot;Ambiguous use of ... resolved ...&quot; warning S_scan_ident().<br/> <br/> In particular, test that the special case for reporting $# as @ works.<br/><br/>M t/lib/warnings/toke<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> t/lib/warnings/toke | 15 +++++++++++++++<br/> toke.c | 19 +++++++++++++++++++<br/> 2 files changed, 34 insertions(+), 0 deletions(-)<br/><br/>diff --git a/t/lib/warnings/toke b/t/lib/warnings/toke<br/>index 5ee3ad5..df2a0b4 100644<br/>--- a/t/lib/warnings/toke<br/>+++ b/t/lib/warnings/toke<br/>@@ -425,10 +425,25 @@ EXPECT<br/> # toke.c<br/> use warnings &#39;ambiguous&#39; ;<br/> $a = ${time} ;<br/>+$a = @{time} ;<br/>+$a = $#{time} ; # This one is special cased in toke.c<br/>+$a = %{time} ;<br/>+$a = *{time} ;<br/>+$a = defined &amp;{time} ; # To avoid calling &amp;::time<br/> no warnings &#39;ambiguous&#39; ;<br/> $a = ${time} ;<br/>+$a = @{time} ;<br/>+$a = $#{time} ; # This one is special cased in toke.c<br/>+$a = %{time} ;<br/>+$a = *{time} ;<br/>+$a = defined &amp;{time} ; # To avoid calling &amp;::time<br/> EXPECT<br/> Ambiguous use of ${time} resolved to $time at - line 3.<br/>+Ambiguous use of @{time} resolved to @time at - line 4.<br/>+Ambiguous use of @{time} resolved to @time at - line 5.<br/>+Ambiguous use of %{time} resolved to %time at - line 6.<br/>+Ambiguous use of *{time} resolved to *time at - line 7.<br/>+Ambiguous use of &amp;{time} resolved to &amp;time at - line 8.<br/> ########<br/> # toke.c<br/> use warnings &#39;ambiguous&#39; ;<br/>diff --git a/toke.c b/toke.c<br/>index ff6308f..bca5d56 100644<br/>--- a/toke.c<br/>+++ b/toke.c<br/>@@ -9300,6 +9300,8 @@ S_scan_ident(pTHX_ char *s, const char *send, char *dest, STRLEN destlen, I32 ck<br/> *d = &#39;\0&#39;;<br/> d = dest;<br/> if (*d) {<br/>+ /* Either a digit variable, or parse_ident() found an identifier<br/>+ (anything valid as a bareword), so job done and return. */<br/> if (PL_lex_state != LEX_NORMAL)<br/> PL_lex_state = LEX_INTERPENDMAYBE;<br/> return s;<br/>@@ -9311,8 +9313,12 @@ S_scan_ident(pTHX_ char *s, const char *send, char *dest, STRLEN destlen, I32 ck<br/> || s[1] == &#39;{&#39;<br/> || strnEQ(s+1,&quot;::&quot;,2)) )<br/> {<br/>+ /* Dereferencing a value in a scalar variable.<br/>+ The alternatives are different syntaxes for a scalar variable.<br/>+ Using &#39; as a leading package separator isn&#39;t allowed. :: is. */<br/> return s;<br/> }<br/>+ /* Handle the opening { of @{...}, &amp;{...}, *{...}, %{...}, ${...} */<br/> if (*s == &#39;{&#39;) {<br/> bracket = s;<br/> s++;<br/>@@ -9339,20 +9345,29 @@ S_scan_ident(pTHX_ char *s, const char *send, char *dest, STRLEN destlen, I32 ck<br/> d[1] = &#39;\0&#39;;<br/> }<br/> }<br/>+ /* Convert $^F, ${^F} and the ^F of ${^FOO} to control characters */<br/> if (*d == &#39;^&#39; &amp;&amp; *s &amp;&amp; isCONTROLVAR(*s)) {<br/> *d = toCTRL(*s);<br/> s++;<br/> }<br/>+ /* Warn about ambiguous code after unary operators if {...} notation isn&#39;t<br/>+ used. There&#39;s no difference in ambiguity; it&#39;s merely a heuristic<br/>+ about when not to warn. */<br/> else if (ck_uni &amp;&amp; !bracket)<br/> check_uni();<br/> if (bracket) {<br/>+ /* If we were processing {...} notation then... */<br/> if (isIDFIRST_lazy_if(d,is_utf8)) {<br/>+ /* if it starts as a valid identifier, assume that it is one.<br/>+ (the later check for } being at the expected point will trap<br/>+ cases where this doesn&#39;t pan out.) */<br/> d += is_utf8 ? UTF8SKIP(d) : 1;<br/> parse_ident(&amp;s, &amp;d, e, 1, is_utf8);<br/> *d = &#39;\0&#39;;<br/> while (s &lt; send &amp;&amp; SPACE_OR_TAB(*s))<br/> s++;<br/> if ((*s == &#39;[&#39; || (*s == &#39;{&#39; &amp;&amp; strNE(dest, &quot;sub&quot;)))) {<br/>+ /* ${foo[0]} and ${foo{bar}} notation. */<br/> if (ckWARN(WARN_AMBIGUOUS) &amp;&amp; keyword(dest, d - dest, 0)) {<br/> const char * const brack =<br/> (const char *)<br/>@@ -9385,6 +9400,8 @@ S_scan_ident(pTHX_ char *s, const char *send, char *dest, STRLEN destlen, I32 ck<br/> while (s &lt; send &amp;&amp; SPACE_OR_TAB(*s))<br/> s++;<br/> <br/>+ /* Expect to find a closing } after consuming any trailing whitespace.<br/>+ */<br/> if (*s == &#39;}&#39;) {<br/> s++;<br/> if (PL_lex_state == LEX_INTERPNORMAL &amp;&amp; !PL_lex_brackets) {<br/>@@ -9407,6 +9424,8 @@ S_scan_ident(pTHX_ char *s, const char *send, char *dest, STRLEN destlen, I32 ck<br/> }<br/> }<br/> else {<br/>+ /* Didn&#39;t find the closing } at the point we expected, so restore<br/>+ state such that the next thing to process is the opening { and */<br/> s = bracket; /* let the parser handle it */<br/> *dest = &#39;\0&#39;;<br/> }<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37167.html Wed, 22 May 2013 08:54:19 +0000 [perl.git] branch blead, updated. v5.19.0-127-g5fb91d4 by Max Maischein In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/5fb91d484fee378b489da85e763d4ae7df3f2baa?hp=a1450e8bf79c3c2d21815edb107c092b823221fd&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 5fb91d484fee378b489da85e763d4ae7df3f2baa<br/>Author: Max Maischein &lt;corion@corion.net&gt;<br/>Date: Tue May 21 21:40:21 2013 +0200<br/><br/> Fix typo in Porting/sync-with-cpan<br/> <br/> I will run `make test_porting` on the correct branch before submitting a patch.<br/> I will run `make test_porting` on the correct branch before submitting a patch.<br/> I will run `make test_porting` on the correct branch before submitting a patch.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> Porting/sync-with-cpan | 2 +-<br/> 1 files changed, 1 insertions(+), 1 deletions(-)<br/><br/>diff --git a/Porting/sync-with-cpan b/Porting/sync-with-cpan<br/>index ca3bedf..68e22ca 100755<br/>--- a/Porting/sync-with-cpan<br/>+++ b/Porting/sync-with-cpan<br/>@@ -230,7 +230,7 @@ say &quot;Cleaning out old directory&quot;;<br/> system git =&gt; &#39;clean&#39;, &#39;-dfxq&#39;, $pkg_dir;<br/> <br/> say &quot;Unpacking $new_file&quot;;<br/>-Archive::Tar-&gt;extract_archive( $newfile );<br/>+Archive::Tar-&gt;extract_archive( $new_file );<br/> <br/> (my $new_dir = $new_file) =~ s/\.tar\.gz//;<br/> # ensure &#39;make&#39; will update all files<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37166.html Tue, 21 May 2013 19:41:24 +0000 [perl.git] branch blead, updated. v5.19.0-126-ga1450e8 by David Golden In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/a1450e8bf79c3c2d21815edb107c092b823221fd?hp=b6956a94c03907bb423a113afad54a0e343f44cf&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit a1450e8bf79c3c2d21815edb107c092b823221fd<br/>Author: Max Maischein &lt;corion@corion.net&gt;<br/>Date: Tue May 21 19:09:47 2013 +0200<br/><br/> Eliminate external call to tar executable in favour of Archive::Tar<br/> <br/> Archive::Tar has -&gt;extract_archive, which does Just That. This means<br/> we lose immediate support for bzip2 files, but not all<br/> incarnations of `tar` support it either.<br/> <br/> Signed-off-by: David Golden &lt;dagolden@cpan.org&gt;<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> Porting/sync-with-cpan | 3 ++-<br/> 1 files changed, 2 insertions(+), 1 deletions(-)<br/><br/>diff --git a/Porting/sync-with-cpan b/Porting/sync-with-cpan<br/>index b6ee246..ca3bedf 100755<br/>--- a/Porting/sync-with-cpan<br/>+++ b/Porting/sync-with-cpan<br/>@@ -127,6 +127,7 @@ use 5.010;<br/> use strict;<br/> use warnings;<br/> use Getopt::Long;<br/>+use Archive::Tar;<br/> <br/> $| = 1;<br/> <br/>@@ -229,8 +230,8 @@ say &quot;Cleaning out old directory&quot;;<br/> system git =&gt; &#39;clean&#39;, &#39;-dfxq&#39;, $pkg_dir;<br/> <br/> say &quot;Unpacking $new_file&quot;;<br/>+Archive::Tar-&gt;extract_archive( $newfile );<br/> <br/>-system tar =&gt; &#39;xfz&#39;, $new_file;<br/> (my $new_dir = $new_file) =~ s/\.tar\.gz//;<br/> # ensure &#39;make&#39; will update all files<br/> system(&#39;find&#39;, $new_dir, &#39;-exec&#39;, &#39;touch&#39;, &#39;{}&#39;, &#39;;&#39;);<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37165.html Tue, 21 May 2013 17:59:07 +0000 [perl.git] branch blead, updated. v5.19.0-125-gb6956a9 by Chris 'Bingos' Williams In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/b6956a94c03907bb423a113afad54a0e343f44cf?hp=eab82fd6486ac0971d2f1b8800432a3b8f0b315c&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit b6956a94c03907bb423a113afad54a0e343f44cf<br/>Author: Chris &#39;BinGOs&#39; Williams &lt;chris@bingosnet.co.uk&gt;<br/>Date: Tue May 21 14:13:52 2013 +0100<br/><br/> Add new Module::CoreList::Utils to MANIFEST<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> MANIFEST | 2 ++<br/> 1 files changed, 2 insertions(+), 0 deletions(-)<br/><br/>diff --git a/MANIFEST b/MANIFEST<br/>index 32b958c..72fcff9 100644<br/>--- a/MANIFEST<br/>+++ b/MANIFEST<br/>@@ -3209,6 +3209,7 @@ dist/Module-CoreList/identify-dependencies A usage example for Module::CoreList<br/> dist/Module-CoreList/lib/Module/CoreList.pm Module::CoreList<br/> dist/Module-CoreList/lib/Module/CoreList.pod Module::CoreList<br/> dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm Module::CoreList guts<br/>+dist/Module-CoreList/lib/Module/CoreList/Utils.pm Module::CoreList guts<br/> dist/Module-CoreList/Makefile.PL Module::CoreList<br/> dist/Module-CoreList/MANIFEST Module::CoreList<br/> dist/Module-CoreList/README Module::CoreList<br/>@@ -3216,6 +3217,7 @@ dist/Module-CoreList/t/corelist.t Module::CoreList tests<br/> dist/Module-CoreList/t/deprecated.t Module::CoreList tests<br/> dist/Module-CoreList/t/find_modules.t Module::CoreList tests<br/> dist/Module-CoreList/t/pod.t Module::CoreList tests<br/>+dist/Module-CoreList/t/utils.t Module::CoreList tests<br/> dist/Net-Ping/Changes Net::Ping<br/> dist/Net-Ping/lib/Net/Ping.pm Hello, anybody home?<br/> dist/Net-Ping/t/100_load.t Ping Net::Ping<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37164.html Tue, 21 May 2013 13:18:59 +0000 [perl.git] branch blead, updated. v5.19.0-124-geab82fd by Chris 'Bingos' Williams In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/eab82fd6486ac0971d2f1b8800432a3b8f0b315c?hp=b4b2fefd8bdd72b0f88245101f270e9dc39568f6&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit eab82fd6486ac0971d2f1b8800432a3b8f0b315c<br/>Merge: b4b2fef 5730025<br/>Author: Chris &#39;BinGOs&#39; Williams &lt;chris@bingosnet.co.uk&gt;<br/>Date: Tue May 21 13:32:53 2013 +0100<br/><br/> Merge branch &#39;smoke-me/coreutils&#39; into blead<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> dist/Module-CoreList/lib/Module/CoreList/Utils.pm | 854 +++++++++++++++++++++<br/> dist/Module-CoreList/t/utils.t | 23 +<br/> 2 files changed, 877 insertions(+), 0 deletions(-)<br/> create mode 100644 dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/> create mode 100644 dist/Module-CoreList/t/utils.t<br/><br/>diff --git a/dist/Module-CoreList/lib/Module/CoreList/Utils.pm b/dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/>new file mode 100644<br/>index 0000000..a04ef6c<br/>--- /dev/null<br/>+++ b/dist/Module-CoreList/lib/Module/CoreList/Utils.pm<br/>@@ -0,0 +1,854 @@<br/>+package Module::CoreList::Utils;<br/>+<br/>+use strict;<br/>+use warnings;<br/>+use vars qw[$VERSION %utilities];<br/>+use Module::CoreList;<br/>+use Module::CoreList::TieHashDelta;<br/>+<br/>+$VERSION = &#39;2.91&#39;;<br/>+<br/>+sub utilities {<br/>+ my $perl = shift;<br/>+ $perl = shift if eval { $perl-&gt;isa(__PACKAGE__) };<br/>+ return unless $perl or exists $utilities{$perl};<br/>+ return sort keys %{ $utilities{$perl} };<br/>+}<br/>+<br/>+sub first_release_raw {<br/>+ my $util = shift;<br/>+ $util = shift if eval { $util-&gt;isa(__PACKAGE__) };<br/>+ #and scalar @_ and $_[0] =~ m#\A[a-zA-Z_][0-9a-zA-Z_]*(?:(::|&#39;)[0-9a-zA-Z_]+)*\z#;<br/>+ my $version = shift;<br/>+<br/>+ my @perls = $version<br/>+ ? grep { exists $utilities{$_}{ $util } &amp;&amp;<br/>+ $utilities{$_}{ $util } ge $version } keys %utilities<br/>+ : grep { exists $utilities{$_}{ $util } } keys %utilities;<br/>+<br/>+ return grep { exists $Module::CoreList::released{$_} } @perls;<br/>+}<br/>+<br/>+sub first_release_by_date {<br/>+ my @perls = &amp;first_release_raw;<br/>+ return unless @perls;<br/>+ return (sort { $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} } @perls)[0];<br/>+}<br/>+<br/>+sub first_release {<br/>+ my @perls = &amp;first_release_raw;<br/>+ return unless @perls;<br/>+ return (sort { $a cmp $b } @perls)[0];<br/>+}<br/>+<br/>+sub removed_from {<br/>+ my @perls = &amp;removed_raw;<br/>+ return shift @perls;<br/>+}<br/>+<br/>+sub removed_from_by_date {<br/>+ my @perls = sort { $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} } &amp;removed_raw;<br/>+ return shift @perls;<br/>+}<br/>+<br/>+sub removed_raw {<br/>+ my $util = shift;<br/>+ $util = shift if eval { $util-&gt;isa(__PACKAGE__) };<br/>+ return unless my @perls = sort { $a cmp $b } first_release_raw($util);<br/>+ @perls = grep { exists $Module::CoreList::released{$_} } @perls;<br/>+ my $last = pop @perls;<br/>+ my @removed = grep { $_ &gt; $last } sort { $a cmp $b } keys %utilities;<br/>+ return @removed;<br/>+}<br/>+<br/>+my %delta = (<br/>+ 5 =&gt; {<br/>+ changed =&gt; {<br/>+ &#39;a2p&#39; =&gt; &#39;1&#39;,<br/>+ &#39;c2ph&#39; =&gt; &#39;1&#39;,<br/>+ &#39;cppstdin&#39; =&gt; &#39;1&#39;,<br/>+ &#39;find2perl&#39; =&gt; &#39;1&#39;,<br/>+ &#39;pstruct&#39; =&gt; &#39;1&#39;,<br/>+ &#39;s2p&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.001 =&gt; {<br/>+ delta_from =&gt; 5,<br/>+ changed =&gt; {<br/>+ &#39;h2xs&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.002 =&gt; {<br/>+ delta_from =&gt; 5.001,<br/>+ changed =&gt; {<br/>+ &#39;h2ph&#39; =&gt; &#39;1&#39;,<br/>+ &#39;perlbug&#39; =&gt; &#39;1&#39;,<br/>+ &#39;perldoc&#39; =&gt; &#39;1&#39;,<br/>+ &#39;pod2html&#39; =&gt; &#39;1&#39;,<br/>+ &#39;pod2latex&#39; =&gt; &#39;1&#39;,<br/>+ &#39;pod2man&#39; =&gt; &#39;1&#39;,<br/>+ &#39;pod2text&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.00307 =&gt; {<br/>+ delta_from =&gt; 5.002,<br/>+ changed =&gt; {<br/>+ &#39;pl2pm&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ &#39;cppstdin&#39; =&gt; 1,<br/>+ &#39;pstruct&#39; =&gt; 1,<br/>+ }<br/>+ },<br/>+<br/>+ 5.004 =&gt; {<br/>+ delta_from =&gt; 5.00307,<br/>+ changed =&gt; {<br/>+ &#39;splain&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.005 =&gt; {<br/>+ delta_from =&gt; 5.00405,<br/>+ changed =&gt; {<br/>+ &#39;perlcc&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.00503 =&gt; {<br/>+ delta_from =&gt; 5.005,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.00405 =&gt; {<br/>+ delta_from =&gt; 5.004,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.006 =&gt; {<br/>+ delta_from =&gt; 5.00504,<br/>+ changed =&gt; {<br/>+ &#39;dprofpp&#39; =&gt; &#39;1&#39;,<br/>+ &#39;pod2usage&#39; =&gt; &#39;1&#39;,<br/>+ &#39;podchecker&#39; =&gt; &#39;1&#39;,<br/>+ &#39;podselect&#39; =&gt; &#39;1&#39;,<br/>+ &#39;pstruct&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.006001 =&gt; {<br/>+ delta_from =&gt; 5.006,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.007003 =&gt; {<br/>+ delta_from =&gt; 5.006002,<br/>+ changed =&gt; {<br/>+ &#39;libnetcfg&#39; =&gt; &#39;1&#39;,<br/>+ &#39;perlivp&#39; =&gt; &#39;1&#39;,<br/>+ &#39;psed&#39; =&gt; &#39;1&#39;,<br/>+ &#39;xsubpp&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.008 =&gt; {<br/>+ delta_from =&gt; 5.007003,<br/>+ changed =&gt; {<br/>+ &#39;enc2xs&#39; =&gt; &#39;1&#39;,<br/>+ &#39;piconv&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.008001 =&gt; {<br/>+ delta_from =&gt; 5.008,<br/>+ changed =&gt; {<br/>+ &#39;cpan&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.009 =&gt; {<br/>+ delta_from =&gt; 5.008009,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ &#39;corelist&#39; =&gt; 1,<br/>+ &#39;instmodsh&#39; =&gt; 1,<br/>+ &#39;prove&#39; =&gt; 1,<br/>+ }<br/>+ },<br/>+<br/>+ 5.008002 =&gt; {<br/>+ delta_from =&gt; 5.008001,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.006002 =&gt; {<br/>+ delta_from =&gt; 5.006001,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.008003 =&gt; {<br/>+ delta_from =&gt; 5.008002,<br/>+ changed =&gt; {<br/>+ &#39;instmodsh&#39; =&gt; &#39;1&#39;,<br/>+ &#39;prove&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.00504 =&gt; {<br/>+ delta_from =&gt; 5.00503,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.009001 =&gt; {<br/>+ delta_from =&gt; 5.009,<br/>+ changed =&gt; {<br/>+ &#39;instmodsh&#39; =&gt; &#39;1&#39;,<br/>+ &#39;prove&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.008004 =&gt; {<br/>+ delta_from =&gt; 5.008003,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.008005 =&gt; {<br/>+ delta_from =&gt; 5.008004,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.008006 =&gt; {<br/>+ delta_from =&gt; 5.008005,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.009002 =&gt; {<br/>+ delta_from =&gt; 5.009001,<br/>+ changed =&gt; {<br/>+ &#39;corelist&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.008007 =&gt; {<br/>+ delta_from =&gt; 5.008006,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.009003 =&gt; {<br/>+ delta_from =&gt; 5.009002,<br/>+ changed =&gt; {<br/>+ &#39;ptar&#39; =&gt; &#39;1&#39;,<br/>+ &#39;ptardiff&#39; =&gt; &#39;1&#39;,<br/>+ &#39;shasum&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.008008 =&gt; {<br/>+ delta_from =&gt; 5.008007,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.009004 =&gt; {<br/>+ delta_from =&gt; 5.009003,<br/>+ changed =&gt; {<br/>+ &#39;config_data&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.009005 =&gt; {<br/>+ delta_from =&gt; 5.009004,<br/>+ changed =&gt; {<br/>+ &#39;cpan2dist&#39; =&gt; &#39;1&#39;,<br/>+ &#39;cpanp&#39; =&gt; &#39;1&#39;,<br/>+ &#39;cpanp-run-perl&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ &#39;perlcc&#39; =&gt; 1,<br/>+ }<br/>+ },<br/>+<br/>+ 5.010000 =&gt; {<br/>+ delta_from =&gt; 5.009005,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.008009 =&gt; {<br/>+ delta_from =&gt; 5.008008,<br/>+ changed =&gt; {<br/>+ &#39;corelist&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.010001 =&gt; {<br/>+ delta_from =&gt; 5.010000,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.011 =&gt; {<br/>+ delta_from =&gt; 5.010001,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.011001 =&gt; {<br/>+ delta_from =&gt; 5.011,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.011002 =&gt; {<br/>+ delta_from =&gt; 5.011001,<br/>+ changed =&gt; {<br/>+ &#39;perlthanks&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.011003 =&gt; {<br/>+ delta_from =&gt; 5.011002,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.011004 =&gt; {<br/>+ delta_from =&gt; 5.011003,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.011005 =&gt; {<br/>+ delta_from =&gt; 5.011004,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.012 =&gt; {<br/>+ delta_from =&gt; 5.011005,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.013 =&gt; {<br/>+ delta_from =&gt; 5.012005,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.012001 =&gt; {<br/>+ delta_from =&gt; 5.012,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.013001 =&gt; {<br/>+ delta_from =&gt; 5.013,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.013002 =&gt; {<br/>+ delta_from =&gt; 5.013001,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.013003 =&gt; {<br/>+ delta_from =&gt; 5.013002,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.013004 =&gt; {<br/>+ delta_from =&gt; 5.013003,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.012002 =&gt; {<br/>+ delta_from =&gt; 5.012001,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.013005 =&gt; {<br/>+ delta_from =&gt; 5.013004,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.013006 =&gt; {<br/>+ delta_from =&gt; 5.013005,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.013007 =&gt; {<br/>+ delta_from =&gt; 5.013006,<br/>+ changed =&gt; {<br/>+ &#39;ptargrep&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.013008 =&gt; {<br/>+ delta_from =&gt; 5.013007,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.013009 =&gt; {<br/>+ delta_from =&gt; 5.013008,<br/>+ changed =&gt; {<br/>+ &#39;json_pp&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.012003 =&gt; {<br/>+ delta_from =&gt; 5.012002,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.013010 =&gt; {<br/>+ delta_from =&gt; 5.013009,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.013011 =&gt; {<br/>+ delta_from =&gt; 5.013010,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.014 =&gt; {<br/>+ delta_from =&gt; 5.013011,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.014001 =&gt; {<br/>+ delta_from =&gt; 5.014,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.015 =&gt; {<br/>+ delta_from =&gt; 5.014004,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ &#39;dprofpp&#39; =&gt; 1,<br/>+ }<br/>+ },<br/>+<br/>+ 5.012004 =&gt; {<br/>+ delta_from =&gt; 5.012003,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.015001 =&gt; {<br/>+ delta_from =&gt; 5.015,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.015002 =&gt; {<br/>+ delta_from =&gt; 5.015001,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.015003 =&gt; {<br/>+ delta_from =&gt; 5.015002,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.014002 =&gt; {<br/>+ delta_from =&gt; 5.014001,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.015004 =&gt; {<br/>+ delta_from =&gt; 5.015003,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.015005 =&gt; {<br/>+ delta_from =&gt; 5.015004,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.015006 =&gt; {<br/>+ delta_from =&gt; 5.015005,<br/>+ changed =&gt; {<br/>+ &#39;zipdetails&#39; =&gt; &#39;1&#39;,<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.015007 =&gt; {<br/>+ delta_from =&gt; 5.015006,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.015008 =&gt; {<br/>+ delta_from =&gt; 5.015007,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.015009 =&gt; {<br/>+ delta_from =&gt; 5.015008,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.016 =&gt; {<br/>+ delta_from =&gt; 5.015009,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.017 =&gt; {<br/>+ delta_from =&gt; 5.016003,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.017001 =&gt; {<br/>+ delta_from =&gt; 5.017,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.017002 =&gt; {<br/>+ delta_from =&gt; 5.017001,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.016001 =&gt; {<br/>+ delta_from =&gt; 5.016,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.017003 =&gt; {<br/>+ delta_from =&gt; 5.017002,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.017004 =&gt; {<br/>+ delta_from =&gt; 5.017003,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.014003 =&gt; {<br/>+ delta_from =&gt; 5.014002,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.017005 =&gt; {<br/>+ delta_from =&gt; 5.017004,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.016002 =&gt; {<br/>+ delta_from =&gt; 5.016001,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.012005 =&gt; {<br/>+ delta_from =&gt; 5.012004,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.017006 =&gt; {<br/>+ delta_from =&gt; 5.017005,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.017007 =&gt; {<br/>+ delta_from =&gt; 5.017006,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.017008 =&gt; {<br/>+ delta_from =&gt; 5.017007,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.017009 =&gt; {<br/>+ delta_from =&gt; 5.017008,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.014004 =&gt; {<br/>+ delta_from =&gt; 5.014003,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.016003 =&gt; {<br/>+ delta_from =&gt; 5.016002,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.017010 =&gt; {<br/>+ delta_from =&gt; 5.017009,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+<br/>+ 5.017011 =&gt; {<br/>+ delta_from =&gt; 5.017010,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+ 5.018000 =&gt; {<br/>+ delta_from =&gt; 5.017011,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ }<br/>+ },<br/>+ 5.019000 =&gt; {<br/>+ delta_from =&gt; 5.018000,<br/>+ changed =&gt; {<br/>+ },<br/>+ removed =&gt; {<br/>+ &#39;cpan2dist&#39; =&gt; &#39;1&#39;,<br/>+ &#39;cpanp&#39; =&gt; &#39;1&#39;,<br/>+ &#39;cpanp-run-perl&#39; =&gt; &#39;1&#39;,<br/>+ &#39;pod2latex&#39; =&gt; &#39;1&#39;,<br/>+ }<br/>+ },<br/>+);<br/>+<br/>+for my $version (sort { $a &lt;=&gt; $b } keys %delta) {<br/>+ my $data = $delta{$version};<br/>+<br/>+ tie %{$utilities{$version}}, &#39;Module::CoreList::TieHashDelta&#39;,<br/>+ $data-&gt;{changed}, $data-&gt;{removed},<br/>+ $data-&gt;{delta_from} ? $utilities{$data-&gt;{delta_from}} : undef;<br/>+}<br/>+<br/>+# Create aliases with trailing zeros for $] use<br/>+<br/>+$utilities{&#39;5.000&#39;} = $utilities{5};<br/>+<br/>+_create_aliases(\%utilities);<br/>+<br/>+sub _create_aliases {<br/>+ my ($hash) = @_;<br/>+<br/>+ for my $version (keys %$hash) {<br/>+ next unless $version &gt;= 5.010;<br/>+<br/>+ my $padded = sprintf &quot;%0.6f&quot;, $version;<br/>+<br/>+ # If the version in string form isn&#39;t the same as the numeric version,<br/>+ # alias it.<br/>+ if ($padded ne $version &amp;&amp; $version == $padded) {<br/>+ $hash-&gt;{$padded} = $hash-&gt;{$version};<br/>+ }<br/>+ }<br/>+}<br/>+<br/>+&#39;foo&#39;;<br/>diff --git a/dist/Module-CoreList/t/utils.t b/dist/Module-CoreList/t/utils.t<br/>new file mode 100644<br/>index 0000000..4822495<br/>--- /dev/null<br/>+++ b/dist/Module-CoreList/t/utils.t<br/>@@ -0,0 +1,23 @@<br/>+use strict;<br/>+use warnings;<br/>+use Test::More tests =&gt; 9;<br/>+<br/>+BEGIN { require_ok(&#39;Module::CoreList::Utils&#39;); }<br/>+<br/>+ok( defined $Module::CoreList::Utils::utilities{5}{a2p}, &#39;5 had a2p&#39; );<br/>+is( Module::CoreList::Utils-&gt;first_release(&#39;a2p&#39;), 5, &#39;a2p first released in 5&#39; );<br/>+is( Module::CoreList::Utils::first_release(&#39;a2p&#39;), 5, &#39;a2p first released in 5&#39; );<br/>+is( Module::CoreList::Utils-&gt;first_release(&#39;corelist&#39;), 5.008009, &#39;corelist with v5.8.9&#39;);<br/>+is( Module::CoreList::Utils-&gt;first_release_by_date(&#39;corelist&#39;), 5.009002, &#39;corelist with v5.9.2&#39;);<br/>+is( Module::CoreList::Utils::first_release_by_date(&#39;corelist&#39;), 5.009002, &#39;corelist with v5.9.2&#39;);<br/>+{<br/>+ my @expected = qw(a2p c2ph cppstdin find2perl h2xs pstruct s2p);<br/>+ {<br/>+ my @foo = Module::CoreList::Utils-&gt;utilities(5.001);<br/>+ is_deeply( \@foo, \@expected, &#39;5.001 utils all present and correct&#39; );<br/>+ }<br/>+ {<br/>+ my @foo = Module::CoreList::Utils::utilities(5.001);<br/>+ is_deeply( \@foo, \@expected, &#39;5.001 utils all present and correct&#39; );<br/>+ }<br/>+}<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37163.html Tue, 21 May 2013 12:36:11 +0000 [perl.git] branch smoke-me/nicholas/ExtUtils-CBuilder-Base-prune, deleted. v5.17.11-22-g82adae2 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/ExtUtils-CBuilder-Base-prune has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=82adae220e83c4202eabe01f49eeb4844d271715&gt;<br/><br/> was 82adae220e83c4202eabe01f49eeb4844d271715<br/><br/>-----------------------------------------------------------------------<br/>82adae220e83c4202eabe01f49eeb4844d271715 Remove 2 superfluous use lines from ExtUtils::CBuilder.<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37162.html Tue, 21 May 2013 10:32:32 +0000 [perl.git] branch blead, updated. v5.19.0-113-gb4b2fef by Nicholas Clark In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/b4b2fefd8bdd72b0f88245101f270e9dc39568f6?hp=fdf38e49aa470e60cb56fdd7a3a49f85da8ea2ce&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit b4b2fefd8bdd72b0f88245101f270e9dc39568f6<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed Apr 24 17:01:43 2013 +0200<br/><br/> Remove 2 superfluous use lines from ExtUtils::CBuilder.<br/> <br/> use IO::File was added with the upgrade to 0.23 (commit c3fb68a339256eb3 in<br/> April 2008), but the use of IO::File in the code was eliminated by the<br/> upgrade to 0.2800 (commit 06e8058f27e4269b in Dec 2010), which replaced<br/> the code in question with use of File::Temp. The latter refactoring also<br/> added the use Data::Dumper; line, but did not add any code which uses<br/> Data::Dumper.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> .../lib/ExtUtils/CBuilder/Base.pm | 4 +---<br/> 1 files changed, 1 insertions(+), 3 deletions(-)<br/><br/>diff --git a/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm b/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm<br/>index c76489b..479a787 100644<br/>--- a/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm<br/>+++ b/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm<br/>@@ -6,13 +6,11 @@ use File::Basename;<br/> use Cwd ();<br/> use Config;<br/> use Text::ParseWords;<br/>-use IO::File;<br/>-use Data::Dumper;$Data::Dumper::Indent=1;<br/> use IPC::Cmd qw(can_run);<br/> use File::Temp qw(tempfile);<br/> <br/> use vars qw($VERSION);<br/>-$VERSION = &#39;0.280209&#39;;<br/>+$VERSION = &#39;0.280210&#39;;<br/> <br/> # More details about C/C++ compilers:<br/> # http://developers.sun.com/sunstudio/documentation/product/compiler.jsp<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37161.html Tue, 21 May 2013 10:32:26 +0000 [perl.git] branch blead, updated. v5.19.0-112-gfdf38e4 by Nicholas Clark In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/fdf38e49aa470e60cb56fdd7a3a49f85da8ea2ce?hp=aee674b7db1a4a3fd0082f4247560d3c945d0f5c&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit fdf38e49aa470e60cb56fdd7a3a49f85da8ea2ce<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed Apr 10 13:44:07 2013 +0200<br/><br/> Refactor 3 tests so that they avoid clearing %:: via list assignment.<br/> <br/> For all 3, clearing %:: was intended to expose another bug, not to directly<br/> test the effects of clearing %::<br/> <br/> Tested by building the 3 revisions that added the tests, and confirming that<br/> the revised test also triggers the bug that each fixed.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> t/op/stash.t | 9 +++++----<br/> 1 files changed, 5 insertions(+), 4 deletions(-)<br/><br/>diff --git a/t/op/stash.t b/t/op/stash.t<br/>index fd5450e..2681d47 100644<br/>--- a/t/op/stash.t<br/>+++ b/t/op/stash.t<br/>@@ -11,7 +11,7 @@ plan( tests =&gt; 58 );<br/> <br/> # Used to segfault (bug #15479)<br/> fresh_perl_like(<br/>- &#39;%:: = &quot;&quot;&#39;,<br/>+ &#39;delete $::{STDERR}; my %a = &quot;&quot;&#39;,<br/> qr/Odd number of elements in hash assignment at - line 1\./,<br/> { switches =&gt; [ &#39;-w&#39; ] },<br/> &#39;delete $::{STDERR} and print a warning&#39;,<br/>@@ -59,14 +59,15 @@ package main;<br/> {<br/> local $ENV{PERL_DESTRUCT_LEVEL} = 2;<br/> fresh_perl_is(<br/>- &#39;package A; sub a { // }; %::=&quot;&quot;&#39;,<br/>+ &#39;package A::B; sub a { // }; %A::=&quot;&quot;&#39;,<br/> &#39;&#39;,<br/> &#39;&#39;,<br/> );<br/> # Variant of the above which creates an object that persists until global<br/>- # destruction.<br/>+ # destruction, and triggers an assertion failure prior to change<br/>+ # a420522db95b7762<br/> fresh_perl_is(<br/>- &#39;use Exporter; package A; sub a { // }; %::=&quot;&quot;&#39;,<br/>+ &#39;use Exporter; package A; sub a { // }; delete $::{$_} for keys %::&#39;,<br/> &#39;&#39;,<br/> &#39;&#39;,<br/> );<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37160.html Tue, 21 May 2013 10:19:42 +0000 [perl.git] branch smoke-me/nicholas/RT54044, deleted. v5.17.10-49-gcffb726 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/RT54044 has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=cffb726fc69b7e9513c76a479db79979ff833be3&gt;<br/><br/> was cffb726fc69b7e9513c76a479db79979ff833be3<br/><br/>-----------------------------------------------------------------------<br/>cffb726fc69b7e9513c76a479db79979ff833be3 Refactor 3 tests so that they avoid clearing %:: via list assignment.<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37159.html Tue, 21 May 2013 10:19:40 +0000 [perl.git] branch smoke-me/nicholas/caller-undef-package, deleted. v5.17.10-46-g4ac62a0 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/caller-undef-package has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=4ac62a04d6ee7e388129dca0977c6e908f4a43ff&gt;<br/><br/> was 4ac62a04d6ee7e388129dca0977c6e908f4a43ff<br/><br/>-----------------------------------------------------------------------<br/>4ac62a04d6ee7e388129dca0977c6e908f4a43ff Test that caller does not SEGV when the current package is undefined.<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37158.html Tue, 21 May 2013 09:58:35 +0000 [perl.git] branch blead, updated. v5.19.0-111-gaee674b by Nicholas Clark In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/aee674b7db1a4a3fd0082f4247560d3c945d0f5c?hp=ef4abe7673cc0b19ffd81c9a42f79de20a52ac87&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit aee674b7db1a4a3fd0082f4247560d3c945d0f5c<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Fri Apr 5 12:12:53 2013 +0200<br/><br/> Test that caller does not SEGV when the current package is undefined.<br/> <br/> Prior to commit d4d03940c58a0177 this code would SEGV under ithreads.<br/> Test suggested by Brian Fraser.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> t/op/caller.t | 10 +++++++++-<br/> 1 files changed, 9 insertions(+), 1 deletions(-)<br/><br/>diff --git a/t/op/caller.t b/t/op/caller.t<br/>index efce8df..c37a6ed 100644<br/>--- a/t/op/caller.t<br/>+++ b/t/op/caller.t<br/>@@ -5,7 +5,7 @@ BEGIN {<br/> chdir &#39;t&#39; if -d &#39;t&#39;;<br/> @INC = &#39;../lib&#39;;<br/> require &#39;./test.pl&#39;;<br/>- plan( tests =&gt; 91 );<br/>+ plan( tests =&gt; 92 );<br/> }<br/> <br/> my @c;<br/>@@ -297,6 +297,14 @@ is eval &quot;s//&lt;&lt;END/e;\nfoo\nEND\n(caller 0)[6]&quot;,<br/> is $w, 1, &#39;value from (caller 0)[9] (bitmask) works in ${^WARNING_BITS}&#39;;<br/> }<br/> <br/>+# This was fixed with commit d4d03940c58a0177, which fixed bug #78742<br/>+fresh_perl_is &lt;&lt;&#39;END&#39;, &quot;__ANON__::doof\n&quot;, {},<br/>+package foo;<br/>+BEGIN {undef %foo::}<br/>+sub doof { caller(0) }<br/>+print +(doof())[3];<br/>+END<br/>+ &quot;caller should not SEGV when the current package is undefined&quot;;<br/> $::testing_caller = 1;<br/> <br/> do &#39;./op/caller.pl&#39; or die $@;<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37157.html Tue, 21 May 2013 09:58:19 +0000 [perl.git] branch smoke-me/nicholas/fakethr, deleted. v5.19.0-28-gb4c0512 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/fakethr has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=b4c05129f48e705ff8e033db447ab1d4e22b832d&gt;<br/><br/> was b4c05129f48e705ff8e033db447ab1d4e22b832d<br/><br/>-----------------------------------------------------------------------<br/>b4c05129f48e705ff8e033db447ab1d4e22b832d Remove fakethr.h and eliminate all references to it and FAKE_THREADS<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37156.html Tue, 21 May 2013 07:15:30 +0000 [perl.git] branch blead, updated. v5.19.0-110-gef4abe7 by Nicholas Clark In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/ef4abe7673cc0b19ffd81c9a42f79de20a52ac87?hp=31a53e79025eb5944553e671a615e60f384fe743&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit ef4abe7673cc0b19ffd81c9a42f79de20a52ac87<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 20 17:55:46 2013 +0200<br/><br/> Remove fakethr.h and eliminate all references to it and FAKE_THREADS<br/> <br/> fakethr.h and FAKE_THREADS were for a &quot;green&quot; threads implementation of<br/> 5005threads. 5005threads itself is long gone, and it&#39;s not clear that<br/> -DFAKE_THREADS *ever* built correctly. Certainly it did not work for the<br/> 5.005 release, and it did not work at the time of the commits for the initial<br/> checkin. The closest that it seems to have been to working is around commit<br/> c6ee37c52f2ca9e5 (Dec 1997), where the headers no longer contained errors,<br/> but perl.c failed to compile.<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> MANIFEST | 1 -<br/> configpm | 1 -<br/> dist/threads-shared/lib/threads/shared.pm | 2 +-<br/> dist/threads-shared/shared.xs | 4 +-<br/> fakethr.h | 75 -----------------------------<br/> perl.h | 9 +---<br/> vms/descrip_mms.template | 13 +----<br/> 7 files changed, 6 insertions(+), 99 deletions(-)<br/> delete mode 100644 fakethr.h<br/><br/>diff --git a/MANIFEST b/MANIFEST<br/>index 5916b98..32b958c 100644<br/>--- a/MANIFEST<br/>+++ b/MANIFEST<br/>@@ -3882,7 +3882,6 @@ ext/XS-Typemap/t/Typemap.t test that typemaps work<br/> ext/XS-Typemap/Typemap.pm XS::Typemap extension<br/> ext/XS-Typemap/Typemap.xs XS::Typemap extension<br/> fakesdio.h stdio in terms of PerlIO<br/>-fakethr.h Fake threads header<br/> feature.h Feature header<br/> form.h Public declarations for formats<br/> generate_uudmap.c Generate uudmap.h, the uuencode decoding map<br/>diff --git a/configpm b/configpm<br/>index 0be40f9..33137c6 100755<br/>--- a/configpm<br/>+++ b/configpm<br/>@@ -82,7 +82,6 @@ my @header_files = qw(EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h<br/> regcomp.h regexp.h regnodes.h scope.h sv.h thread.h utf8.h<br/> util.h);<br/> <br/>-# No point in adding fakethr.h, as it no longer works<br/> push @header_files,<br/> $^O eq &#39;VMS&#39; ? &#39;vmsish.h&#39; : qw(dosish.h perliol.h time64.h unixish.h);<br/> <br/>diff --git a/dist/threads-shared/lib/threads/shared.pm b/dist/threads-shared/lib/threads/shared.pm<br/>index ecbc1fd..e5c3669 100644<br/>--- a/dist/threads-shared/lib/threads/shared.pm<br/>+++ b/dist/threads-shared/lib/threads/shared.pm<br/>@@ -7,7 +7,7 @@ use warnings;<br/> <br/> use Scalar::Util qw(reftype refaddr blessed);<br/> <br/>-our $VERSION = &#39;1.43&#39;;<br/>+our $VERSION = &#39;1.44&#39;;<br/> my $XS_VERSION = $VERSION;<br/> $VERSION = eval $VERSION;<br/> <br/>diff --git a/dist/threads-shared/shared.xs b/dist/threads-shared/shared.xs<br/>index 3dccc39..d3e859d 100644<br/>--- a/dist/threads-shared/shared.xs<br/>+++ b/dist/threads-shared/shared.xs<br/>@@ -612,7 +612,7 @@ S_abs_2_rel_milli(double abs)<br/> bool<br/> Perl_sharedsv_cond_timedwait(perl_cond *cond, perl_mutex *mut, double abs)<br/> {<br/>-#if defined(NETWARE) || defined(FAKE_THREADS) || defined(I_MACH_CTHREADS)<br/>+#if defined(NETWARE) || defined(I_MACH_CTHREADS)<br/> Perl_croak_nocontext(&quot;cond_timedwait not supported on this platform&quot;);<br/> #else<br/> # ifdef WIN32<br/>@@ -671,7 +671,7 @@ Perl_sharedsv_cond_timedwait(perl_cond *cond, perl_mutex *mut, double abs)<br/> return (got_it);<br/> # endif /* OS2 */<br/> # endif /* WIN32 */<br/>-#endif /* NETWARE || FAKE_THREADS || I_MACH_CTHREADS */<br/>+#endif /* NETWARE || I_MACH_CTHREADS */<br/> }<br/> <br/> <br/>diff --git a/fakethr.h b/fakethr.h<br/>deleted file mode 100644<br/>index 643806d..0000000<br/>--- a/fakethr.h<br/>+++ /dev/null<br/>@@ -1,75 +0,0 @@<br/>-/* fakethr.h<br/>- *<br/>- * Copyright (C) 1999, by Larry Wall and others<br/>- *<br/>- * You may distribute under the terms of either the GNU General Public<br/>- * License or the Artistic License, as specified in the README file.<br/>- *<br/>- */<br/>-<br/>-typedef int perl_mutex;<br/>-typedef int perl_key;<br/>-<br/>-typedef struct perl_thread *perl_os_thread;<br/>-/* With fake threads, thr is global(ish) so we don&#39;t need dTHR */<br/>-#define dTHR extern int errno<br/>-<br/>-struct perl_wait_queue {<br/>- struct perl_thread * thread;<br/>- struct perl_wait_queue * next;<br/>-};<br/>-typedef struct perl_wait_queue *perl_cond;<br/>-<br/>-/* Ask thread.h to include our per-thread extras */<br/>-#define HAVE_THREAD_INTERN<br/>-struct thread_intern {<br/>- perl_os_thread next_run, prev_run; /* Linked list of runnable threads */<br/>- perl_cond wait_queue; /* Wait queue that we are waiting on */<br/>- IV private; /* Holds data across time slices */<br/>- I32 savemark; /* Holds MARK for thread join values */<br/>-};<br/>-<br/>-#define init_thread_intern(t) \<br/>- STMT_START { \<br/>- t-&gt;self = (t); \<br/>- (t)-&gt;i.next_run = (t)-&gt;i.prev_run = (t); \<br/>- (t)-&gt;i.wait_queue = 0; \<br/>- (t)-&gt;i.private = 0; \<br/>- } STMT_END<br/>-<br/>-/*<br/>- * Note that SCHEDULE() is only callable from pp code (which<br/>- * must be expecting to be restarted). We&#39;ll have to do<br/>- * something a bit different for XS code.<br/>- */<br/>-<br/>-#define SCHEDULE() return schedule(), PL_op<br/>-<br/>-#define MUTEX_LOCK(m)<br/>-#define MUTEX_UNLOCK(m)<br/>-#define MUTEX_INIT(m)<br/>-#define MUTEX_DESTROY(m)<br/>-#define COND_INIT(c) perl_cond_init(c)<br/>-#define COND_SIGNAL(c) perl_cond_signal(c)<br/>-#define COND_BROADCAST(c) perl_cond_broadcast(c)<br/>-#define COND_WAIT(c, m) \<br/>- STMT_START { \<br/>- perl_cond_wait(c); \<br/>- SCHEDULE(); \<br/>- } STMT_END<br/>-#define COND_DESTROY(c)<br/>-<br/>-#define THREAD_CREATE(t, f) f((t))<br/>-#define THREAD_POST_CREATE(t) NOOP<br/>-<br/>-#define YIELD NOOP<br/>-<br/>-/*<br/>- * Local variables:<br/>- * c-indentation-style: bsd<br/>- * c-basic-offset: 4<br/>- * indent-tabs-mode: nil<br/>- * End:<br/>- *<br/>- * ex: set ts=8 sts=4 sw=4 et:<br/>- */<br/>diff --git a/perl.h b/perl.h<br/>index 87e7f0f..1f6e4e4 100644<br/>--- a/perl.h<br/>+++ b/perl.h<br/>@@ -2670,9 +2670,6 @@ freeing any remaining Perl interpreters.<br/> # ifdef NETWARE<br/> # include &lt;nw5thread.h&gt;<br/> # else<br/>-# ifdef FAKE_THREADS<br/>-# include &quot;fakethr.h&quot;<br/>-# else<br/> # ifdef WIN32<br/> # include &lt;win32thread.h&gt;<br/> # else<br/>@@ -2699,8 +2696,7 @@ typedef pthread_key_t perl_key;<br/> # endif /* I_MACH_CTHREADS */<br/> # endif /* OS2 */<br/> # endif /* WIN32 */<br/>-# endif /* FAKE_THREADS */<br/>-#endif /* NETWARE */<br/>+# endif /* NETWARE */<br/> #endif /* USE_ITHREADS */<br/> <br/> #if defined(WIN32)<br/>@@ -4513,9 +4509,6 @@ EXTCONST char PL_bincompat_options[] =<br/> # ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP<br/> &quot; DEBUG_LEAKING_SCALARS_FORK_DUMP&quot;<br/> # endif<br/>-# ifdef FAKE_THREADS<br/>- &quot; FAKE_THREADS&quot;<br/>-# endif<br/> # ifdef FCRYPT<br/> &quot; FCRYPT&quot;<br/> # endif<br/>diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template<br/>index 20da73c..af27c3c 100644<br/>--- a/vms/descrip_mms.template<br/>+++ b/vms/descrip_mms.template<br/>@@ -151,14 +151,6 @@ THRLIBS2 = sys$share:cma$open_lib_shr/share|sys$share:cma$open_rtl/share<br/> .endif<br/> .endif<br/> <br/>-.ifdef FAKETHREADED<br/>-THREADDEF = <br/>-THREADH = fakethr.h<br/>-THREAD = THREAD<br/>-.else<br/>-THREADH =<br/>-.endif<br/>-<br/> .ifdef MTU<br/> .ifdef MTK<br/> MTHREADLINKFLAGS = /THREADS=(MULTIPLE_KERNEL,UPCALLS)<br/>@@ -255,9 +247,8 @@ h2 = iperlsys.h keywords.h mydtrace.h mg.h mg_vtable.h nostdio.h op.h<br/> h3 = op_reg_common.h opcode.h opnames.h overload.h pad.h parser.h patchlevel.h <br/> h4 = perl.h perlapi.h perlio.h perlsdio.h perlvars.h perly.h<br/> h5 = pp.h pp_proto.h proto.h regcomp.h regexp.h regnodes.h scope.h<br/>-h6 = sv.h thread.h utf8.h util.h vmsish.h warnings.h<br/>-h7 = xsub.h $(THREADH)<br/>-h = $(h0) $(h1) $(h2) $(h3) $(h4) $(h5) $(h6) $(h7)<br/>+h6 = sv.h thread.h utf8.h util.h vmsish.h warnings.h xsub.h<br/>+h = $(h0) $(h1) $(h2) $(h3) $(h4) $(h5) $(h6)<br/> <br/> acopt = $(ARCHCORE)perlshr_attr.opt $(ARCHCORE)$(DBG)perlshr_bld.opt<br/> ac = archcore_includes.ts $(acopt)<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37155.html Tue, 21 May 2013 07:15:25 +0000 [perl.git] branch blead, updated. v5.19.0-109-g31a53e7 by Nicholas Clark In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/31a53e79025eb5944553e671a615e60f384fe743?hp=9e7945ee50c30a17a84968fb0c7e5c38223af6f9&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 31a53e79025eb5944553e671a615e60f384fe743<br/>Merge: 9e7945e 8ca91d3<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 21 07:49:29 2013 +0200<br/><br/> Merge the refactoring of x2p&#39;s Makefile to blead.<br/><br/>commit 8ca91d39a4a96434bc909d710b033c8505e2cde3<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 21:48:12 2013 +0200<br/><br/> Simplify x2p&#39;s Makefile.<br/> <br/> Eliminate plexe and plc, which relate to tests for the compiler and were<br/> added as part of commit 52cebf5efc9883c7 in May 1988. The compiler was<br/> removed by commit de1254415ffeb03b in Sept 2006.<br/> <br/> The files a2p.man and s2p.man were removed with Perl 5.000.<br/> The macros &#39;public&#39;, &#39;private&#39; and &#39;util&#39; mirror the structure of the top<br/> level Makefile.SH. However, x2p only ever used &#39;public&#39;, so simplify things<br/> by inlining the value of &#39;public&#39; in the only place that uses it.<br/> &#39;addedbyconf&#39; now only contains the value of &#39;plextract&#39;, so use the latter<br/> directly in the one place that had used &#39;addedbyconf&#39;.<br/><br/>M x2p/Makefile.SH<br/><br/>commit e1da83eac92e1d2253d6b03218386b36cb4bb0af<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 21:34:21 2013 +0200<br/><br/> Remove rules to delete *.loadmap and *.prelmap files, generated on VM/ESA<br/> <br/> These rules to clean up properly on VM/ESA were added in Oct 1998 by<br/> perforce changes 1961, 1962 and 1963 in the confperl branch. VM/ESA support<br/> was removed by commit 043fec90e88a2e23 in Aug 2012.<br/><br/>M Cross/Makefile-cross-SH<br/>M Makefile.SH<br/>M x2p/Makefile.SH<br/><br/>commit 6105164f37e277ea0eb5dec4a432b86b49489be1<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 21:26:59 2013 +0200<br/><br/> Add x2p/Makefile.SH to the *.SH files processed by the top level Makefile.<br/> <br/> This makes the top level Makefile responsible for deleting x2p/Makefile.<br/> With this, we can eliminate the &#39;sh&#39; and &#39;shextract&#39; from x2p&#39;s Makefile.<br/><br/>M Makefile.SH<br/>M x2p/Makefile.SH<br/><br/>commit 655e5c9e391de4eef96d3ad88908a53cddbf53e3<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 21:17:31 2013 +0200<br/><br/> Remove the now unused &#39;shlist&#39; Makefile targets.<br/><br/>M Makefile.SH<br/>M x2p/Makefile.SH<br/><br/>commit 9719c95bf27185afc59c14150d4f052f92217540<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 20:57:37 2013 +0200<br/><br/> Programmatically generate dependencies for all *.SH files.<br/> <br/> Previously dependencies for Makefile, config.h and makedepend were<br/> explicitly coded into verbatim sections of Makefile.SH, with most of the<br/> others being generated by makedepend.SH<br/><br/>M Makefile.SH<br/>M makedepend.SH<br/><br/>commit fc40bd89f80e1d94b62f08a3ab57f39ea3333029<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 20:25:47 2013 +0200<br/><br/> Add runtests.SH to the code that generates the targets sh and shextract.<br/> <br/> The generated Makefile is functionally identical.<br/><br/>M Makefile.SH<br/><br/>commit c0d271fb2cf4e67f892e8f1b575439d13b73a01f<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 17:14:50 2013 +0200<br/><br/> Eliminate x2p/cflags.SH. x2p&#39;s Makefile can use ../cflags<br/> <br/> x2p/Makefile is only used on *nix, so this should not present a problem.<br/><br/>M MANIFEST<br/>M Porting/exec-bit.txt<br/>M x2p/Makefile.SH<br/>D x2p/cflags.SH<br/><br/>commit 3ae7e562a2ff05c27052670c20b7ba3b7005bf7b<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 19:40:46 2013 +0200<br/><br/> Pass in to makedepend the name(s) of files that all objects depend on.<br/><br/>M Makefile.SH<br/>M makedepend.SH<br/>M x2p/Makefile.SH<br/><br/>commit 0ff64a71c493f41b23ddd052a465c3d40c3264f2<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 16:54:40 2013 +0200<br/><br/> In the Makefile, generate the value of shextract programmatically.<br/> <br/> shextract lists the files generated by shell scripts named *.SH which need<br/> deleting. Instead of maintaining it by hand, generate it in Makefile.SH from<br/> the list of *.SH files.<br/> <br/> This indirectly eliminates the last reference to F&lt;makedir&gt;. makedir.SH<br/> was eliminated by commit ebca06e95b02d1a8 and the reference to makedir.SH in<br/> Makefile.SH eliminated by commit 847471027aa42997 (both Sept 2009), but<br/> that commit missed that the reference to makedir a few lines later was<br/> related.<br/><br/>M Makefile.SH<br/><br/>commit 417de989d3cb17f83d8a6af00ff4b171a8682c8c<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 13:01:22 2013 +0200<br/><br/> Defer running makedepend in x2p/ until it&#39;s needed.<br/> <br/> We can run makedepend in x2p/ as part of the regular build process, which<br/> means that it can run as part of a parallel make. This gets a slight<br/> speedup (0.2s on this system), and increases flexibility on how x2p/Makefile<br/> is generated.<br/><br/>M Makefile.SH<br/><br/>commit 2fea0471858664126bb4c23b75f6bf15c262cd8b<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 12:49:44 2013 +0200<br/><br/> Add x2p/makefile to the dependencies for targets within x2p/<br/> <br/> This will give us more flexibility in when and how we generate it.<br/> <br/> [x2p/makefile is x2p/GNUmakefile on OS X]<br/><br/>M Makefile.SH<br/><br/>commit d730c2986a70e4fa953cb2f352b7b5ebf41ea580<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 12:33:05 2013 +0200<br/><br/> Remove vestigial *.SH code which can link the extracted file into ../<br/> <br/> 4 of the *.SH files have code which links the extracted file into the parent<br/> directory if the current directory ends SH. This code dates from Perl 1.<br/> It seems that the intent was that the *.SH files could live in a SH/<br/> directory, but that feature was neither used or mentioned in the<br/> documentation in Perl 1, and hasn&#39;t been used since.<br/><br/>M Cross/Makefile-cross-SH<br/>M Makefile.SH<br/>M makedepend.SH<br/>M x2p/Makefile.SH<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> Cross/Makefile-cross-SH | 7 ---<br/> MANIFEST | 1 -<br/> Makefile.SH | 68 ++++++++++++++++---------------<br/> Porting/exec-bit.txt | 1 -<br/> makedepend.SH | 39 +----------------<br/> x2p/Makefile.SH | 35 ++-------------<br/> x2p/cflags.SH | 104 -----------------------------------------------<br/> 7 files changed, 43 insertions(+), 212 deletions(-)<br/> delete mode 100755 x2p/cflags.SH<br/><br/>diff --git a/Cross/Makefile-cross-SH b/Cross/Makefile-cross-SH<br/>index e5a14b4..e83cd4c 100644<br/>--- a/Cross/Makefile-cross-SH<br/>+++ b/Cross/Makefile-cross-SH<br/>@@ -957,7 +957,6 @@ _mopup:<br/> -@test -f vms/README_vms.pod &amp;&amp; rm -f vms/README_vms.pod<br/> -rm -f perl.exp ext.libs extra.pods uni.data opmini.o<br/> -rm -f perl.export perl.dll perl.libexp perl.map perl.def<br/>- -rm -f perl.loadmap miniperl.loadmap perl.prelmap miniperl.prelmap<br/> -rm -f perl.third lib*.so.perl.third perl.3log t/perl.third t/perl.3log<br/> -rm -f perl.pixie lib*.so.perl.pixie lib*.so.Addrs<br/> -rm -f perl.Addrs perl.Counts t/perl.Addrs t/perl.Counts *perl.xok<br/>@@ -1281,12 +1280,6 @@ ctags:<br/> !NO!SUBS!<br/> <br/> $eunicefix $Makefile<br/>-case `pwd` in<br/>-*SH)<br/>- $rm -f ../$Makefile<br/>- $ln $Makefile ../$Makefile<br/>- ;;<br/>-esac<br/> $rm -f $firstmakefile<br/> <br/> # Now do any special processing required before building.<br/>diff --git a/MANIFEST b/MANIFEST<br/>index 7115372..5916b98 100644<br/>--- a/MANIFEST<br/>+++ b/MANIFEST<br/>@@ -5493,7 +5493,6 @@ x2p/a2p.h Global declarations<br/> x2p/a2p.pod Pod for awk to perl translator<br/> x2p/a2p.y A yacc grammar for awk<br/> x2p/a2py.c Awk compiler, sort of<br/>-x2p/cflags.SH A script that emits C compilation flags per file<br/> x2p/EXTERN.h Same as above<br/> x2p/find2perl.PL A find to perl translator<br/> x2p/hash.c Hashes again<br/>diff --git a/Makefile.SH b/Makefile.SH<br/>index ddb9be1..7502235 100755<br/>--- a/Makefile.SH<br/>+++ b/Makefile.SH<br/>@@ -443,16 +443,27 @@ xconfig.h: config_h.SH Cross/config-\$(CROSS_NAME).sh<br/> ;;<br/> esac<br/> <br/>+SH_to_target() {<br/>+ echo $@ | sed -e s/\\\.SH//g -e s/_/./g<br/>+}<br/>+<br/>+SH=&#39;Makefile.SH cflags.SH config_h.SH makedepend.SH myconfig.SH runtests.SH pod/Makefile.SH x2p/Makefile.SH&#39;<br/>+shextract=`SH_to_target $SH`<br/>+<br/> ## In the following dollars and backticks do not need the extra backslash.<br/>-$spitshell &gt;&gt;$Makefile &lt;&lt;&#39;!NO!SUBS!&#39;<br/>+$spitshell &gt;&gt;$Makefile &lt;&lt;!GROK!THIS!<br/> <br/>-private = preplibrary $(CONFIGPM) $(CONFIGPOD) lib/ExtUtils/Miniperl.pm git_version.h lib/buildcustomize.pl<br/>+private = preplibrary \$(CONFIGPM) \$(CONFIGPOD) lib/ExtUtils/Miniperl.pm git_version.h lib/buildcustomize.pl<br/> <br/> # Files to be built with variable substitution before miniperl<br/> # is available.<br/>-sh = Makefile.SH cflags.SH config_h.SH makedepend.SH myconfig.SH pod/Makefile.SH<br/>+sh = $SH<br/>+<br/>+shextract = $shextract<br/>+!GROK!THIS!<br/> <br/>-shextract = Makefile cflags config.h makedepend makedir myconfig pod/Makefile<br/>+## In the following dollars and backticks do not need the extra backslash.<br/>+$spitshell &gt;&gt;$Makefile &lt;&lt;&#39;!NO!SUBS!&#39;<br/> <br/> addedbyconf = UU $(shextract) pstruct<br/> <br/>@@ -589,18 +600,21 @@ perl$(OBJ_EXT): git_version.h<br/> case &quot;$usedl$static_cwd&quot; in<br/> defineundef)<br/> util_deps=&#39;$(MINIPERL_EXE) $(CONFIGPM) lib/auto/Cwd/Cwd$(DLSUFFIX) FORCE&#39;<br/>- x2p_deps=&#39;$(MINIPERL_EXE) $(CONFIGPM) $(dynamic_ext) FORCE&#39;<br/>+ x2p_deps=&quot;\$(MINIPERL_EXE) \$(CONFIGPM) \$(dynamic_ext) x2p/$firstmakefile FORCE&quot;<br/> ;;<br/> definedefine)<br/> util_deps=&#39;$(PERL_EXE) $(CONFIGPM) FORCE&#39;<br/>- x2p_deps=&#39;$(PERL_EXE) $(CONFIGPM) $(dynamic_ext) FORCE&#39;<br/>+ x2p_deps=&quot;\$(PERL_EXE) \$(CONFIGPM) \$(dynamic_ext) x2p/$firstmakefile FORCE&quot;<br/> ;;<br/> *) util_deps=&#39;$(PERL_EXE) $(CONFIGPM) FORCE&#39;<br/>- x2p_deps=&#39;$(PERL_EXE) $(CONFIGPM) FORCE&#39;<br/>+ x2p_deps=&quot;\$(PERL_EXE) \$(CONFIGPM) x2p/$firstmakefile FORCE&quot;<br/> ;;<br/> esac<br/> <br/> $spitshell &gt;&gt;$Makefile &lt;&lt;!GROK!THIS!<br/>+x2p/$firstmakefile: makedepend<br/>+ cd x2p; \$(MAKE) depend<br/>+<br/> translators: $x2p_deps<br/> @echo &quot; &quot;; echo &quot; Making x2p stuff&quot;; cd x2p; \$(LDLIBPTH) \$(MAKE) all<br/> <br/>@@ -1271,13 +1285,12 @@ _mopup:<br/> -@test -f vms/README_vms.pod &amp;&amp; rm -f vms/README_vms.pod<br/> -rm -f perl.exp ext.libs $(generated_pods) uni.data opmini.o perlmini.o pod/roffitall<br/> -rm -f perl.export perl.dll perl.libexp perl.map perl.def<br/>- -rm -f perl.loadmap miniperl.loadmap perl.prelmap miniperl.prelmap<br/> -rm -f perl.third lib*.so.perl.third perl.3log t/perl.third t/perl.3log<br/> -rm -f perl.pixie lib*.so.perl.pixie lib*.so.Addrs<br/> -rm -f perl.Addrs perl.Counts t/perl.Addrs t/perl.Counts *perl.xok<br/> -rm -f cygwin.c libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump<br/> -rm -f $(PERL_EXE) $(MINIPERL_EXE) $(LIBPERL) libperl.* microperl<br/>- -rm -f config.arch config.over $(DTRACE_H) runtests<br/>+ -rm -f config.arch config.over $(DTRACE_H)<br/> <br/> # Do not &#39;make _tidy&#39; directly.<br/> _tidy:<br/>@@ -1389,21 +1402,22 @@ MAKEDEPEND = Makefile makedepend<br/> <br/> $(FIRSTMAKEFILE): README $(MAKEDEPEND)<br/> $(MAKE) depend MAKEDEPEND=<br/>+!NO!SUBS!<br/> <br/>-config.h: config_h.SH config.sh<br/>- $(SHELL) config_h.SH<br/>+for f in $SH; do<br/>+ file=`SH_to_target $f`<br/>+ $spitshell &gt;&gt;$Makefile &lt;&lt;!GROK!THIS!<br/> <br/>-.PHONY: depend<br/>-depend: makedepend<br/>- sh ./makedepend MAKE=$(MAKE)<br/>- cd x2p; $(MAKE) depend<br/>+$file: $f config.sh<br/>+ \$(SHELL) $f<br/>+!GROK!THIS!<br/>+done<br/> <br/>-# Cannot postpone this until $firstmakefile is ready ;-)<br/>-makedepend: makedepend.SH config.sh<br/>- sh ./makedepend.SH<br/>+$spitshell &gt;&gt;$Makefile &lt;&lt;&#39;!NO!SUBS!&#39;<br/> <br/>-runtests: runtests.SH config.sh<br/>- sh ./runtests.SH<br/>+.PHONY: depend<br/>+depend: makedepend<br/>+ sh ./makedepend MAKE=$(MAKE) cflags<br/> <br/> .PHONY: test check test_prep test_prep_nodll test_prep_pre \<br/> test_prep_reonly test_tty test-tty test_notty test-notty \<br/>@@ -1576,7 +1590,7 @@ noknack: utilities<br/> nokfilenack: utilities<br/> $(RUN_PERL) -Ilib utils/perlbug -nok -s &#39;(UNINSTALLED)&#39; -F perl.nok -A<br/> <br/>-.PHONY: clist hlist shlist<br/>+.PHONY: clist hlist<br/> <br/> clist: $(c)<br/> echo $(c) | tr &#39; &#39; $(TRNL) &gt;.clist<br/>@@ -1584,12 +1598,6 @@ clist: $(c)<br/> hlist: $(h)<br/> echo $(h) | tr &#39; &#39; $(TRNL) &gt;.hlist<br/> <br/>-shlist: $(sh)<br/>- echo $(sh) | tr &#39; &#39; $(TRNL) &gt;.shlist<br/>-<br/>-Makefile: Makefile.SH ./config.sh<br/>- $(SHELL) Makefile.SH<br/>-<br/> .PHONY: distcheck<br/> distcheck: FORCE<br/> perl &#39;-MExtUtils::Manifest=&amp;fullcheck&#39; -e &#39;fullcheck()&#39;<br/>@@ -1604,12 +1612,6 @@ ctags:<br/> !NO!SUBS!<br/> <br/> $eunicefix Makefile<br/>-case `pwd` in<br/>-*SH)<br/>- $rm -f ../Makefile<br/>- $ln Makefile ../Makefile<br/>- ;;<br/>-esac<br/> $rm -f $firstmakefile<br/> <br/> # Now do any special processing required before building.<br/>diff --git a/Porting/exec-bit.txt b/Porting/exec-bit.txt<br/>index e2f445b..0073e77 100644<br/>--- a/Porting/exec-bit.txt<br/>+++ b/Porting/exec-bit.txt<br/>@@ -27,7 +27,6 @@ runtests.SH<br/> t/TEST<br/> vms/ext/filespec.t<br/> x2p/Makefile.SH<br/>-x2p/cflags.SH<br/> Porting/Maintainers.pl<br/> Porting/add-package.pl<br/> Porting/bisect.pl<br/>diff --git a/makedepend.SH b/makedepend.SH<br/>index 5669b8d..f992af3 100755<br/>--- a/makedepend.SH<br/>+++ b/makedepend.SH<br/>@@ -39,7 +39,7 @@ mkdir .depending<br/> # This script should be called with <br/> # sh ./makedepend MAKE=$(MAKE)<br/> case &quot;$1&quot; in <br/>- MAKE=*) eval $1 ;;<br/>+ MAKE=*) eval $1; shift ;;<br/> esac<br/> <br/> export PATH || (echo &quot;OOPS, this isn&#39;t sh. Desperation time. I will feed myself to sh.&quot;; sh \$0; kill \$\$)<br/>@@ -206,35 +206,12 @@ for file in `$cat .clist`; do<br/> -e &#39;s|\.c\.c|.c|&#39; $uwinfix .cout .cerr| \<br/> $uniq | $sort | $uniq &gt;&gt; .deptmp<br/> fi<br/>- echo &quot;$filebase\$(OBJ_EXT): cflags&quot; &gt;&gt; .deptmp<br/>+ echo &quot;$filebase\$(OBJ_EXT): $@&quot; &gt;&gt; .deptmp<br/> done<br/> <br/> $sed &lt;$mf &gt;$mf.new -e &#39;1,/^# AUTOMATICALLY/!d&#39;<br/> <br/>-$MAKE shlist || ($echo &quot;Searching for .SH files...&quot;; \<br/>- $echo *.SH | $tr &#39; &#39; $trnl | $egrep -v &#39;\*&#39; &gt;.shlist)<br/>-<br/>-# Now extract the dependencies on makedepend.SH and Makefile.SH<br/>-# (they should reside in the main Makefile):<br/>-rm -f .shlist.old<br/>-mv .shlist .shlist.old<br/>-$egrep -v &#39;^makedepend\.SH&#39; &lt;.shlist.old &gt;.shlist<br/>-rm -f .shlist.old<br/>-mv .shlist .shlist.old<br/>-$egrep -v &#39;^Makefile\.SH&#39; &lt;.shlist.old &gt;.shlist<br/>-rm -f .shlist.old<br/>-mv .shlist .shlist.old<br/>-$egrep -v &#39;^perl_exp\.SH&#39; &lt;.shlist.old &gt;.shlist<br/>-rm -f .shlist.old<br/>-mv .shlist .shlist.old<br/>-$egrep -v &#39;^config_h\.SH&#39; &lt;.shlist.old &gt;.shlist<br/>-rm .shlist.old<br/>-<br/> if $test -s .deptmp; then<br/>- for file in `cat .shlist`; do<br/>- $echo `$expr X$file : &#39;X\(.*\).SH&#39;`: $file $TOP/config.sh \; \<br/>- $sh $file &gt;&gt; .deptmp<br/>- done<br/> $echo &quot;Updating $mf...&quot;<br/> $echo &quot;# If this runs make out of memory, delete /usr/include lines.&quot; \<br/> &gt;&gt; $mf.new<br/>@@ -262,10 +239,6 @@ else<br/> $sed -f .hsed &gt;&gt; $mf.new<br/> &lt;.deptmp $sed -n &#39;s|h:#include &quot;\(.*\)&quot;.*$|h: \1|p&#39; | \<br/> $sed -f .hsed &gt;&gt; $mf.new<br/>- for file in `$cat .shlist`; do<br/>- $echo `$expr X$file : &#39;X\(.*\).SH&#39;`: $file $TOP/config.sh \; \<br/>- $sh $file &gt;&gt; $mf.new<br/>- done<br/> fi<br/> $rm -f $mf.old<br/> $cp $mf $mf.old<br/>@@ -273,15 +246,9 @@ $rm -f $mf<br/> $cp $mf.new $mf<br/> $rm $mf.new<br/> $echo &quot;# WARNING: Put nothing here or make depend will gobble it up!&quot; &gt;&gt; $mf<br/>-$rm -rf .deptmp UU .shlist .clist .hlist .hsed .cout .cerr<br/>+$rm -rf .deptmp UU .clist .hlist .hsed .cout .cerr<br/> rmdir .depending<br/> <br/> !NO!SUBS!<br/> $eunicefix makedepend<br/> chmod +x makedepend<br/>-case `pwd` in<br/>-*SH)<br/>- $rm -f ../makedepend<br/>- ln makedepend ../makedepend<br/>- ;;<br/>-esac<br/>diff --git a/x2p/Makefile.SH b/x2p/Makefile.SH<br/>index 3f16623..ae017b6 100755<br/>--- a/x2p/Makefile.SH<br/>+++ b/x2p/Makefile.SH<br/>@@ -77,26 +77,10 @@ PERL = $perl<br/> cat &gt;&gt;Makefile &lt;&lt;&#39;!NO!SUBS!&#39;<br/> <br/> REALPERL = ../perl<br/>-CCCMD = `sh $(shellflags) cflags &quot;optimize=&#39;$(OPTIMIZE)&#39;&quot; $@`<br/>-<br/>-public = a2p$(EXE_EXT) s2p find2perl<br/>-<br/>-private = <br/>-<br/>-manpages = a2p.man s2p.man<br/>-<br/>-util =<br/>-<br/>-sh = Makefile.SH cflags.SH<br/>-shextract = Makefile cflags<br/>+CCCMD = `sh $(shellflags) ../cflags &quot;optimize=&#39;$(OPTIMIZE)&#39;&quot; $@`<br/> <br/> pl = find2perl.PL s2p.PL<br/> plextract = find2perl s2p<br/>-plexe = find2perl.exe s2p.exe<br/>-plc = find2perl.c s2p.c<br/>-plm = a2p.loadmap<br/>-<br/>-addedbyconf = $(shextract) $(plextract)<br/> <br/> h = EXTERN.h INTERN.h ../config.h ../handy.h hash.h a2p.h str.h util.h<br/> <br/>@@ -110,7 +94,7 @@ lintflags = -phbvxac<br/> .c$(OBJ_EXT):<br/> $(CCCMD) -DPERL_FOR_X2P $*.c<br/> <br/>-all: $(public) $(private) $(util)<br/>+all: a2p$(EXE_EXT) s2p find2perl<br/> @echo &quot; &quot;<br/> <br/> a2p$(EXE_EXT): $(obj) a2p$(OBJ_EXT)<br/>@@ -149,13 +133,13 @@ a2p$(OBJ_EXT): a2p.c a2py.c a2p.h EXTERN.h util.h INTERN.h \<br/> $(CCCMD) a2p.c<br/> <br/> clean:<br/>- rm -f a2p$(EXE_EXT) psed *$(OBJ_EXT) $(plexe) $(plc) $(plm)<br/>+ rm -f a2p$(EXE_EXT) psed *$(OBJ_EXT) $(plexe) $(plc)<br/> <br/> distclean: veryclean<br/> <br/> realclean: clean<br/> -rmdir .depending<br/>- rm -f core $(addedbyconf) all<br/>+ rm -f core $(plextract) all<br/> rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old makefile.old<br/> <br/> veryclean: realclean<br/>@@ -170,7 +154,7 @@ lint:<br/> lint $(lintflags) $(defs) $(c) &gt; a2p.fuzz<br/> <br/> depend: ../makedepend<br/>- sh ../makedepend MAKE=$(MAKE)<br/>+ sh ../makedepend MAKE=$(MAKE) ../cflags<br/> <br/> clist:<br/> echo $(c) | tr &#39; &#39; $(TRNL) &gt;.clist<br/>@@ -178,9 +162,6 @@ clist:<br/> hlist:<br/> echo $(h) | tr &#39; &#39; $(TRNL) &gt;.hlist<br/> <br/>-shlist:<br/>- echo $(sh) | tr &#39; &#39; $(TRNL) &gt;.shlist<br/>-<br/> $(plextract):<br/> $(RUN) $(PERL) -I../lib $@.PL<br/> <br/>@@ -194,10 +175,4 @@ $(obj):<br/> makedepend: depend<br/> !NO!SUBS!<br/> $eunicefix Makefile<br/>-case `pwd` in<br/>-*SH)<br/>- $rm -f ../Makefile<br/>- $ln Makefile ../Makefile<br/>- ;;<br/>-esac<br/> rm -f $firstmakefile<br/>diff --git a/x2p/cflags.SH b/x2p/cflags.SH<br/>deleted file mode 100755<br/>index caeb336..0000000<br/>--- a/x2p/cflags.SH<br/>+++ /dev/null<br/>@@ -1,104 +0,0 @@<br/>-#!/bin/sh<br/>-<br/>-case $PERL_CONFIG_SH in<br/>-&#39;&#39;)<br/>- if test -f config.sh; then TOP=.;<br/>- elif test -f ../config.sh; then TOP=..;<br/>- elif test -f ../../config.sh; then TOP=../..;<br/>- elif test -f ../../../config.sh; then TOP=../../..;<br/>- elif test -f ../../../../config.sh; then TOP=../../../..;<br/>- else<br/>- echo &quot;Can&#39;t find config.sh.&quot;; exit 1<br/>- fi<br/>- . $TOP/config.sh<br/>- ;;<br/>-esac<br/>-: This forces SH files to create target in same directory as SH file.<br/>-: This is so that make depend always knows where to find SH derivatives.<br/>-case &quot;$0&quot; in<br/>-*/cflags.SH) cd `expr X$0 : &#39;X\(.*\)/&#39;` ;;<br/>-cflags.SH) ;;<br/>-*) case `pwd` in<br/>- */x2p) ;;<br/>- *) if test -d x2p; then cd x2p<br/>- else echo &quot;Can&#39;t figure out where to write output.&quot;; exit 1<br/>- fi;;<br/>- esac;;<br/>-esac<br/>-echo &quot;Extracting x2p/cflags (with variable substitutions)&quot;<br/>-: This section of the file will have variable substitutions done on it.<br/>-: Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!.<br/>-: Protect any dollar signs and backticks that you do not want interpreted<br/>-: by putting a backslash in front. You may delete these comments.<br/>-rm -f cflags<br/>-$spitshell &gt;cflags &lt;&lt;!GROK!THIS!<br/>-!GROK!THIS!<br/>-<br/>-: In the following dollars and backticks do not need the extra backslash.<br/>-$spitshell &gt;&gt;cflags &lt;&lt;&#39;!NO!SUBS!&#39;<br/>-case $PERL_CONFIG_SH in<br/>-&#39;&#39;)<br/>- if test -f config.sh; then TOP=.;<br/>- elif test -f ../config.sh; then TOP=..;<br/>- elif test -f ../../config.sh; then TOP=../..;<br/>- elif test -f ../../../config.sh; then TOP=../../..;<br/>- elif test -f ../../../../config.sh; then TOP=../../../..;<br/>- else<br/>- echo &quot;Can&#39;t find config.sh.&quot;; exit 1<br/>- fi<br/>- . $TOP/config.sh<br/>- ;;<br/>-esac<br/>-<br/>-case &quot;X$1&quot; in<br/>-Xoptimize=*|X&quot;optimize=*&quot;)<br/>- eval &quot;$1&quot;<br/>- shift<br/>- ;;<br/>-esac<br/>-<br/>-also=&#39;: &#39;<br/>-case $# in<br/>-1) also=&#39;echo 1&gt;&amp;2 &quot; CCCMD = &quot;&#39;<br/>-esac<br/>-<br/>-case $# in<br/>-0) set *.c; echo &quot;The current C flags are:&quot; ;;<br/>-esac<br/>-<br/>-set `echo &quot;$* &quot; | sed -e &#39;s/\.[oc] / /g&#39; -e &#39;s/\.obj / /g&#39; -e &quot;s/\\$obj_ext / /g&quot;`<br/>-<br/>-for file do<br/>-<br/>- case &quot;$#&quot; in<br/>- 1) ;;<br/>- *) echo $n &quot; $file.c $c&quot; ;;<br/>- esac<br/>-<br/>- : allow variables like str_cflags to be evaluated<br/>-<br/>- eval &#39;eval ${&#39;&quot;${file}_cflags&quot;&#39;-&quot;&quot;}&#39;<br/>-<br/>- : or customize here<br/>-<br/>- case &quot;$file&quot; in<br/>- a2p) ;;<br/>- a2py) ;;<br/>- hash) ;;<br/>- str) ;;<br/>- util) ;;<br/>- walk) ;;<br/>- *) ;;<br/>- esac<br/>-<br/>- ccflags=&quot;`echo $ccflags | sed -e &#39;s/-DMULTIPLICITY//&#39;`&quot;<br/>-<br/>- echo &quot;$cc -c $ccflags $optimize&quot;<br/>- eval &quot;$also &quot;&#39;&quot;$cc -c $ccflags $optimize&quot;&#39;<br/>-<br/>- . $TOP/config.sh<br/>-<br/>-done<br/>-!NO!SUBS!<br/>-chmod 755 cflags<br/>-$eunicefix cflags<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37154.html Tue, 21 May 2013 05:56:16 +0000 [perl.git] branch smoke-me/nicholas/x2p-depend-later, deleted. v5.19.0-108-g8ca91d3 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/x2p-depend-later has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=8ca91d39a4a96434bc909d710b033c8505e2cde3&gt;<br/><br/> was 8ca91d39a4a96434bc909d710b033c8505e2cde3<br/><br/>-----------------------------------------------------------------------<br/>8ca91d39a4a96434bc909d710b033c8505e2cde3 Simplify x2p&#39;s Makefile.<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37153.html Tue, 21 May 2013 05:56:03 +0000 [perl.git] branch khw-ebcdic, created. v5.19.0-259-g846bc9b by Karl Williamson In perl.git, the branch khw-ebcdic has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/846bc9bf1b056b943f4da698643a26146d7bb790?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at 846bc9bf1b056b943f4da698643a26146d7bb790 (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit 846bc9bf1b056b943f4da698643a26146d7bb790<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon May 20 22:20:29 2013 -0600<br/><br/> lib/locale.t: Generalize to work on non-ASCII<br/><br/>M lib/locale.t<br/><br/>commit a6dc0886bc6232d9d0b71d2d562277b2feb15093<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon May 20 22:01:02 2013 -0600<br/><br/> ext/XS-APItest/t/hash.t: Generalize to run on non-ASCII platforms<br/><br/>M ext/XS-APItest/t/hash.t<br/><br/>commit 8332e10343f90f7c48aea19765c817b13b41a6cd<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon May 20 21:59:48 2013 -0600<br/><br/> dist/Storable/t/code.t: Fixes to run under EBCDIC<br/><br/>M dist/Storable/t/code.t<br/><br/>commit 95da796bec07d59e19022d1d28039bc22d11ae2f<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon May 20 21:58:26 2013 -0600<br/><br/> XXX CPAN, incomplete cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm: Generalize for non-ASCII platforms<br/><br/>M cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm<br/><br/>commit 5687c8ae95323d058890af5f2e1086e34420a618<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon May 20 21:54:01 2013 -0600<br/><br/> t/lib/feature/implicit: Generalize for non-ASCII platforms<br/><br/>M t/lib/feature/implicit<br/><br/>commit d504de60a392b1d23273aa424aeefef3375c2d09<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat May 4 13:29:15 2013 -0600<br/><br/> pp.c, regexec.c: Declare buffers large enough<br/> <br/> These three buffers are not declared with the proper size. There is<br/> a #define to use in these declarations, so use it. These matter only on<br/> EBCDIC platforms, where the one in pp.c prior to this commit could cause<br/> a buffer overrun there.<br/> <br/> The others shouldn&#39;t because what is being used is known (smaller) size.<br/><br/>M pp.c<br/>M regcomp.c<br/>M regexec.c<br/><br/>commit 34e1a92649a6ee5a3400a7c9d8b2ee46078505b3<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat May 4 13:27:19 2013 -0600<br/><br/> pp.c: Don&#39;tdeclare array to large<br/> <br/> There is an existing #define that gives the correct size for this<br/> buffer. No need to calculate it (which actually gives a larger than<br/> needed value).<br/><br/>M pp.c<br/><br/>commit 3a45f684f9156aa1689875849cc594d9643513b5<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 23 18:58:54 2013 -0600<br/><br/> XXX experimental pp_pack.c: &#39;u&#39;<br/><br/>M pp_pack.c<br/><br/>commit 7e2040ce5c9cb40813f58c7ef58b54f9636582ce<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Feb 25 17:25:08 2013 -0700<br/><br/> XXX CPAN Normalize<br/> <br/> This converts Unicode::Normalize to use the native tables that are used<br/> by Perl starting in XXX, while using the Unicode-ordered ones that were<br/> used before then.<br/> <br/> Another alternative would be to have mktables generate just these tables<br/> in Unicode ordering.<br/><br/>M cpan/Unicode-Normalize/Normalize.xs<br/><br/>commit 42944d11d58338d83121e6124e0298671f7465b2<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Feb 25 17:22:55 2013 -0700<br/><br/> XXX CPAN prob wrong Collate<br/> <br/> This changes to implicity usenative code points. This is likely wrong,<br/> as the module comes with its own data, that are probably in terms of<br/> Unicode<br/><br/>M cpan/Unicode-Collate/Collate.xs<br/><br/>commit be3ff53cae307da719e6dbba0521f5e2d2269eec<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 27 22:14:02 2013 -0600<br/><br/> utf8.c: Remove wrapper functions.<br/> <br/> Now that the Unicode data is stored in native character set order, it is<br/> rare to need to work with the Unicode order. Traditionally, the real<br/> work was done in functions that worked with the Unicode order, and<br/> wrapper functions (or macros) were used to translate to/from native.<br/> <br/> There are two groups of functions: one that translates from code point<br/> to UTF-8, and the other group goes the opposite direction.<br/> <br/> This commit changes the base function that translates from UTF-8 to code<br/> point to output native instead of Unicode. Those extremely rare<br/> instances where Unicode output is needed instead will have to hand-wrap<br/> calls to this function with a translation macro, as now described in the<br/> API pod. Prior to this, it was the other way, the native was wrapped,<br/> and the rare, strict Unicode wasn&#39;t. This eliminates a layer of<br/> function call overhead for a common case.<br/> <br/> The base function that translates from code point to UTF-8 retains its<br/> Unicode input, as that is more natural to process. However, it is<br/> de-emphasized in the pod, with the functionality description moved to<br/> the pod for a native input wrapper function. And, those wrappers are<br/> now macros in all cases; previously there was function call overhead<br/> sometimes. (Equivalent exported functions are retained, however, for XS<br/> code that uses the Perl_foo() form.)<br/> <br/> I had hoped to rebase this commit, squashing it with an earlier commit<br/> in this series, eliminating the use of a temporary function name change,<br/> but the work involved turns out to be large, with no real payoff.<br/><br/>M embed.fnc<br/>M embed.h<br/>M mathoms.c<br/>M proto.h<br/>M utf8.c<br/>M utf8.h<br/><br/>commit 533300b0d2ec1d67073a6ddc120ee9a77daa34ea<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 30 09:13:35 2013 -0600<br/><br/> perlapi vis utf8.c: Nits<br/><br/>M utf8.c<br/><br/>commit 9de633f190be2dad88cb009787ad64815ae211fe<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 30 08:04:45 2013 -0600<br/><br/> utf8.c: Move 2 functions to earlier in file<br/> <br/> This moves these two functions to be adjacent to the function they each<br/> call, thus keeping like things together.<br/><br/>M utf8.c<br/><br/>commit f3605b1fe8d59ef71f121517234da460de0d8d45<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 20 17:04:08 2013 -0600<br/><br/> gv.c: Add comment<br/><br/>M gv.c<br/><br/>commit bb386848fb07eb968f88c153affdb433e65774f9<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Apr 19 13:58:12 2013 -0600<br/><br/> t/op/coreamp.t: Generalize for non-ASCII platfomrs<br/><br/>M t/op/coreamp.t<br/><br/>commit 741da65799930958059e70b7fabafc607de9dbe7<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Apr 19 13:19:44 2013 -0600<br/><br/> XXX temporary lib/warnings.pm: Add debugging info<br/><br/>M lib/warnings.pm<br/><br/>commit 702f6b5da738d682d938bd1970d2fb48a10e0f5a<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Apr 19 13:18:20 2013 -0600<br/><br/> regcomp.c: Add missing (parens) to expression<br/> <br/> A pair of parentheses were missing leading to this &#39;if&#39; not acting as<br/> intended.<br/><br/>M regcomp.c<br/><br/>commit fcbc87b965557d975f89d20692217eafad00076e<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Apr 17 21:49:10 2013 -0600<br/><br/> t/re/re_tests: Some tests are platform-specific<br/><br/>M t/re/re_tests<br/><br/>commit d5cdc6dec1420fe8aed92974d7ffe973480446bd<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Apr 17 21:47:41 2013 -0600<br/><br/> t/re/regexp.t: Add ability to skip depending on platform<br/> <br/> This adds the capability to specify that a test is to be done only on an<br/> ASCII platform, or only on an EBCDIC.<br/><br/>M t/re/regexp.t<br/><br/>commit 1bcd758400a5a2b7bf1179bbcd4693d17e409aad<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Apr 17 08:22:36 2013 -0600<br/><br/> t/io/crlf.t: Generalize for non-ASCII platforms<br/><br/>M t/io/crlf.t<br/><br/>commit 0563bec690cb5abe77f2e1e36e9887590b520b84<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 16 20:15:08 2013 -0600<br/><br/> unicode_constants.h: regened for ebcdic<br/><br/>M unicode_constants.h<br/><br/>commit 65475008b11479112c919973a5691217139d3bec<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 16 15:49:06 2013 -0600<br/><br/> XXX finish up t/re/regexp.t: Generalize for non-ASCII platforms<br/> <br/> This adds code to the processing of the tests in t/re/re_tests to<br/> automatically convert from unicode to native character sets<br/> <br/> Add comment about circular tests<br/> XXX better commit message<br/><br/>M t/re/regexp.t<br/><br/>commit fe3d822aa365b4797cf124ffde55be1f1ff89896<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 16 12:13:07 2013 -0600<br/><br/> ext/B/t/b.t: Generalize for non-ASCII platforms<br/><br/>M ext/B/t/b.t<br/><br/>commit 5defc07f4405765741d6d9e2c94f94a49f2d42f2<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 16 12:02:26 2013 -0600<br/><br/> dist/Safe/t/safeutf8.t: Generalize to non-ASCII platform<br/><br/>M dist/Safe/t/safeutf8.t<br/><br/>commit fdef3f7077faa72228e58ba44b97f82aa3de362f<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 16 11:50:04 2013 -0600<br/><br/> t/op/warn.t: Generalize for non-ASCII platforms<br/><br/>M t/op/warn.t<br/><br/>commit 628e13aaa6992585f9dafd96f1877f3da2dc20cf<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 16 10:18:02 2013 -0600<br/><br/> re/reg_email.t: Generalize for non-ASCII platforms<br/> <br/> This replaces all the hard-coded hex character values. It uses the new<br/> (?[ ]) notation. I checked that the compiled regex matches the exact<br/> same code points as before these changes.<br/><br/>M t/re/reg_email.t<br/><br/>commit 9b580692be38f2db9fc7117f85750ea83268eb29<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 16 09:03:47 2013 -0600<br/><br/> dist/ExtUtils-Install/t/InstallWithMM.t: Skip if EBCDIC<br/> <br/> Because is uses JSON<br/><br/>M dist/ExtUtils-Install/t/InstallWithMM.t<br/><br/>commit 2aef090608ada5704da20d43994c6941f652b685<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Apr 14 21:31:04 2013 -0600<br/><br/> XXX: t/lib/warnings/utf8: Experiment with malformed utf8<br/><br/>M t/lib/warnings/utf8<br/><br/>commit cb9a8eed5bf9dec65fe715e0dda7ab4a0e089e79<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 22:04:50 2013 -0600<br/><br/> XXX skip cpan tests<br/><br/>M t/TEST<br/><br/>commit 4489f3f5ffc31e4eb866518ddc564090fe497145<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 16:19:20 2013 -0600<br/><br/> ext/XS-APItest/t/svpeek.t: Generalize for non-ASCII platforms<br/><br/>M ext/XS-APItest/t/svpeek.t<br/><br/>commit 2cf059823672a6faa9e0a8a3cf631e35be604032<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 16:14:35 2013 -0600<br/><br/> ext/XS-APItest/t/svpv_magic.t: Generalize for non-ASCII platforms<br/><br/>M ext/XS-APItest/t/svpv_magic.t<br/><br/>commit 5953fbd2c6e85dc8d5620e495c93cd5f7c466489<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 15:54:37 2013 -0600<br/><br/> lib/DBM_Filter/t/encode.t: Generalize for non-ASCII platforms<br/><br/>M lib/DBM_Filter/t/encode.t<br/><br/>commit 648c06a431fc120aff99feb7fcab25d676490ca4<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 15:48:06 2013 -0600<br/><br/> XXX finish up lib/dumpvar.pl: Generalize for EBCDIC<br/> <br/> Has octal constants<br/><br/>M lib/dumpvar.pl<br/><br/>commit a7b5a6c7a84ca7a20fbf1aac804fa28d0514bc6a<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 15:35:52 2013 -0600<br/><br/> XXX finish up lib/utf8.t: Generalize for non-ASCII platforms<br/> <br/> This includes choosing a different code point that has 3 bytes in both<br/> UTF-8 and UTF-EBCDIC, so that the pos numbers work for both.<br/><br/>M lib/utf8.t<br/><br/>commit 452c48fd89a0a2bede8d3a6685b9b142930dfd6a<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 15:16:44 2013 -0600<br/><br/> t/uni/parser.t: Generalize for non-ASCII platforms<br/><br/>M t/uni/parser.t<br/><br/>commit df4e0817b6f574e096c1062534436a900b3cc2f7<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 14:41:46 2013 -0600<br/><br/> t/uni/method.t: Generalize for non-ASCII platforms<br/> <br/> I couldn&#39;t figure out a way to not use the hard-coded values<br/><br/>M t/uni/method.t<br/><br/>commit c7c2ed39a8bfd40a040e4a5bad72da2bf4bb9f18<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 14:26:09 2013 -0600<br/><br/> t/op/magic.t: Generalize for non-ASCII platforms<br/><br/>M t/op/magic.t<br/><br/>commit 18562296e0468f8dc1598420fa95c2dfb754cd61<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 13:36:41 2013 -0600<br/><br/> t/io/through.t: Generalize for non-ASCII platforms<br/> <br/> This uses hard-coded values for EBCDIC because of the shell issues<br/><br/>M t/io/through.t<br/><br/>commit ab569bc79b233f2a5971df237e32c7a9c6123449<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 13:16:00 2013 -0600<br/><br/> toke.c: Fix EBCDIC bugs with single char variable names<br/> <br/> Latin1 variable single character variable names should all be legal,<br/> but the test was not for non-ASCII, it was for variant characters. On<br/> EBCDIC platforms, this isn&#39;t the same as non-ASCII.<br/> <br/> The legal control character variable names are not the same as the C0<br/> and DEL controls, but are \001 \037 minus those that traditionally match<br/> \s on ASCII platforms, plus \c?.<br/><br/>M toke.c<br/><br/>commit 643081f8b54c4cd3c641e942ca0cddcdb1460bce<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 12:55:09 2013 -0600<br/><br/> toke.c: An EBCDIC fix<br/> <br/> toCTRL(0..31) yields a printing character. This is different from<br/> toCTRL(control) on EBCDIC machines.<br/><br/>M toke.c<br/><br/>commit 0378d3b35a8ad68ba56471f293873c5397e159d0<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 12:52:17 2013 -0600<br/><br/> XXX \c must be followed by printable<br/> <br/> This should be revised and included in 5.18, 5.19 depending on RFC outcome.<br/><br/>M dquote_static.c<br/><br/>commit d85d5c77618888b8f58da715d40d0f3535a3cbe0<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 11:41:04 2013 -0600<br/><br/> XXX temp toCTRL<br/><br/>M dquote_static.c<br/>M ext/B/B.pm<br/>M handy.h<br/>M pod/perlebcdic.pod<br/>M t/op/chars.t<br/><br/>commit 8381ec4d6e99cba0e8a72df7a8e129e91e8295cb<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 09:18:41 2013 -0600<br/><br/> perlio.c: Generalize for EBCDIC<br/> <br/> This code had the hex constants for CARRIAGE RETURN and LINE FEED<br/> hard-coded in. It appears to me from the comments that &#39;\r&#39; and &#39;\n&#39;<br/> are not suitable to use instead. This commit changes the constants to<br/> use the native values instead.<br/><br/>M perlio.c<br/><br/>commit 79eead4d9b5bbcc20673938b26a1fb3a2b16f667<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 13 09:51:34 2013 -0600<br/><br/> unicode_constants.h: Add #defines for CR, LF<br/><br/>M regen/unicode_constants.pl<br/>M unicode_constants.h<br/><br/>commit 38ae23e772528ca2869e8f7b93b5ae0ab40e4d92<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Apr 7 10:45:14 2013 -0600<br/><br/> t/op/goto.t: Generalize for EBCDIC<br/><br/>M t/op/goto.t<br/><br/>commit e146b0dbd1f5f932486cdc890710133a2e66cf51<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Apr 3 20:15:17 2013 -0600<br/><br/> t/re/pat.t: Generalize for EBCDIC<br/><br/>M t/re/pat.t<br/><br/>commit 0b621743b4fcbd468f5e73627b785100a70a572b<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Apr 3 21:56:02 2013 -0600<br/><br/> XXX t/op/pack.t: Generalize for EBCDIC<br/> <br/> One unknown what to do: uuencode<br/><br/>M t/op/pack.t<br/><br/>commit 3775709fb496701f650a063940c9cade6e8139d6<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 6 12:56:52 2013 -0600<br/><br/> regcomp.c: In EBCDIC [i-j] exclude also ASCII<br/> <br/> i and j are not adjacent in EBCDIC. This excluded any alphabetic<br/> characters between them, but allowed other ascii ones.<br/><br/>M regcomp.c<br/>M t/re/pat_advanced.t<br/><br/>commit 495e427b992031dc2dd9a11718650e96fc37ed91<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 6 12:54:42 2013 -0600<br/><br/> utf8.c: Don&#39;t use slower general-purpose function<br/> <br/> There is a macro that accomplishes the same task for a two byte UTF-8<br/> encoded character, and avoids the overhead of the general purpose<br/> function call.<br/><br/>M utf8.c<br/><br/>commit 4185b06c5b546f9c8e1797fc418c0aff0735d34e<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 6 12:53:07 2013 -0600<br/><br/> utf8.c: Don&#39;t do ++ in macro parameter<br/> <br/> The formal parameter gets evaluated multiple times on an EBCDIC<br/> platform, thus incrementing more than the intended once.<br/><br/>M utf8.c<br/><br/>commit 81fa4afc35b316a131dbe3f8ccef9367ac36dbb0<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 6 12:50:48 2013 -0600<br/><br/> utf8.c: Use macro instead of duplicating code<br/> <br/> There is a macro that accomplishes this task, and is easier to read.<br/><br/>M utf8.c<br/><br/>commit bfde7995312c3e67800ffa98c16d657dcd416d13<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 6 10:15:05 2013 -0600<br/><br/> t/io/bom.t: Fix to run under EBCDIC<br/><br/>M t/io/bom.t<br/><br/>commit cbc28442dcf478f48e4e9ed88d2b27c465997c1d<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Apr 5 23:34:50 2013 -0600<br/><br/> t/uni/overload.t: EBCDIC fixes<br/><br/>M t/uni/overload.t<br/><br/>commit ad84b647dd681b26395d363e2e3fd07145606777<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Apr 5 23:34:13 2013 -0600<br/><br/> t/uni/method.t: EBCDIC fixes<br/><br/>M t/uni/method.t<br/><br/>commit 7a939faff39c91bebe09b58c5c1d9b1a917b91b7<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Apr 5 23:33:28 2013 -0600<br/><br/> t/op/utf8magic.t: EBCDIC fixes<br/><br/>M t/op/utf8magic.t<br/><br/>commit 757f0cbdd73d9e804476dadcf92e1be37714b718<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Apr 5 23:32:57 2013 -0600<br/><br/> t/op/evalbytes.t: EBCDIC fixes<br/><br/>M t/op/evalbytes.t<br/><br/>commit a993fdd206819d4466d33c5cf597e872a18a03b2<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Apr 5 13:27:42 2013 -0600<br/><br/> t/op/length.t: EBCDIC fixes<br/><br/>M t/op/length.t<br/><br/>commit 9e1198f03a7491f8e935fc00dc97d7427db0dd7f<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 6 13:01:54 2013 -0600<br/><br/> t/op/utfhash.t: XXX Add debug<br/><br/>M t/op/utfhash.t<br/><br/>commit 9ca4e3deae9c1c2f0d30602376fb70e12325049e<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Apr 5 12:21:21 2013 -0600<br/><br/> Data-Dumper/Dumper.pm: Fix for EBCDIC<br/><br/>M dist/Data-Dumper/Dumper.pm<br/><br/>commit 2ccb29bebaec4ca9e7794ccb22c5771911c5f5cb<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Apr 5 12:15:58 2013 -0600<br/><br/> Dumper.xs: Don&#39;t translate character twice<br/> <br/> utf8_to_uvchr() already returns the native code point; no need to<br/> convert again. This code is only executed on Perls before 5.15<br/><br/>M dist/Data-Dumper/Dumper.xs<br/><br/>commit 7db978d1bf537773b8d2e7486cc9d4568b83ab7c<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 6 20:39:22 2013 -0600<br/><br/> dist/IO/t/io_utf8argv.t: Generalize and enable EBCDIC<br/> <br/> Infrastructure now exists to have this test run on EBCDIC platforms.<br/><br/>M dist/IO/t/io_utf8argv.t<br/><br/>commit 56f7ad754b3d81fa4ff93d86a9f0bd651c72776d<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Apr 3 21:59:16 2013 -0600<br/><br/> utf8.h: Clarify comments<br/><br/>M utf8.h<br/><br/>commit 8a1d8f33d96cafcbb30cd54943693a830febc13e<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Apr 3 19:06:52 2013 -0600<br/><br/> XXX CPAN cpan/Test/lib/Test.pm: Fixes for EBCDIC<br/><br/>M cpan/Test/lib/Test.pm<br/><br/>commit 9b41ed73a7a62d5d00151947f65f4ba485d5bc15<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Apr 1 22:29:16 2013 -0600<br/><br/> t/re/pat_re_eval.t: Some EBCDIC fixes<br/><br/>M t/re/pat_re_eval.t<br/><br/>commit 36d11ade774a8c0fc533611d350d7146a01bbf9e<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 2 07:11:19 2013 -0600<br/><br/> t/test.pl: Add fcn for UTF-EBCDIC conversion<br/> <br/> This adds the function byte_utf8a_to_utf8n(). This takes the bytes that<br/> form a UTF-8 string and convert them to the bytes that form that string<br/> on the native platform.<br/><br/>M t/test.pl<br/><br/>commit a799971fe1c6e7bff08c43f33e06895e94d907b7<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Apr 1 22:28:43 2013 -0600<br/><br/> dist/Storable/t/utf8.t: Fix to run under EBCDIC<br/><br/>M dist/Storable/t/utf8.t<br/><br/>commit 26a42ea23cb343422db87e43b794ceedc79a2f61<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Apr 1 22:28:08 2013 -0600<br/><br/> t/uni/variables.t: Fix to run under EBCDIC<br/><br/>M t/uni/variables.t<br/><br/>commit 0adf4cea5ffcb8c5ab198b0f4ba7c9f9d75f48aa<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Apr 1 21:08:20 2013 -0600<br/><br/> t/op/split.t: EBCDIC fixes<br/><br/>M t/op/split.t<br/><br/>commit 889fd63aca87c233c2fb86bc65190dac78811d2e<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Apr 1 20:43:03 2013 -0600<br/><br/> re/pat_advanced.t: EBCDIC fixes<br/> <br/> This includes not skipping some EBCDIC that formerly was, since we now<br/> have testing infrastructure that makes this easy.<br/><br/>M t/re/pat_advanced.t<br/><br/>commit fdc687c32a839c9d9e0af167c8f0a202f342ac62<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Apr 1 20:01:04 2013 -0600<br/><br/> t/io/utf8.t: EBCDIC fixes<br/><br/>M t/io/utf8.t<br/><br/>commit c5982cbc7cbbbaf78b56676eb4d9e06b057c4777<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 30 21:13:38 2013 -0600<br/><br/> Unicode::UCD.pm: Nits<br/><br/>M lib/Unicode/UCD.pm<br/><br/>commit 52bdcb2ae24b0782fd67797389b1733ea75bf528<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 30 12:32:09 2013 -0600<br/><br/> t/uni/fold.t: Generalize for non-ASCII platforms<br/><br/>M t/uni/fold.t<br/><br/>commit 379d0ee3921e7734ab2811a627d222e91ca3938f<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Mar 29 15:22:28 2013 -0600<br/><br/> XXX t/op/tiehandle.t: skip for now; deep recursion<br/><br/>M t/op/tiehandle.t<br/><br/>commit 7b1392dec926c9b4a78468c2687ef8b4e102b410<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Mar 29 14:56:16 2013 -0600<br/><br/> XXX better commit msg utf8.c: Avoid unnecessary UTF-8 conversions<br/> <br/> This changes the code so that converting to UTF-8 is avoided unless<br/> necessary. For such inputs, the conversion back from UTF-8 is also<br/> avoided. The cost of doing this is that the first swatches are combined<br/> into one that contains the values for all characters 0-255, instead of<br/> having multiple swatches. That means when first calculating the swatch<br/> it calculates all 256, instead of 128 (160 on EBCDIC).<br/> <br/> This also fixes an EBCDIC bug in which characters in this range were<br/> being translated twice.<br/><br/>M utf8.c<br/><br/>commit ca2a982ec84b76af5c17ec23d698447223ce05b9<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Mar 29 13:34:59 2013 -0600<br/><br/> utf8.c: No need to check for UTF-8 malformations<br/> <br/> This function assumes that the input is well-formed UTF-8, even though<br/> until this commit, the preferatory comments didn&#39;t say so. The API does<br/> not pass the buffer length, so there is no way it could check for<br/> reading off the end of the buffer. One code path already calls<br/> valid_utf8_to_uvchr(); this changes the remaining code path to correspond.<br/><br/>M utf8.c<br/><br/>commit 2fe237b2ead3b7d5b182fd37360bea811b1d9032<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Mar 28 17:19:16 2013 -0600<br/><br/> XXX enable _invlist_dump;<br/><br/>M embed.fnc<br/>M embed.h<br/>M proto.h<br/><br/>commit c6c6c4f2e9be23671adc0baa37efa3c4b3879137<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Mar 8 11:01:32 2013 -0700<br/><br/> XXX EBCDIC header files<br/><br/>M charclass_invlists.h<br/>M l1_char_class_tab.h<br/>M regcharclass.h<br/>M unicode_constants.h<br/><br/>commit d65c5d77246f968588b4acc36613dfa7f308b4d2<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Mar 15 12:26:15 2013 -0600<br/><br/> hints/os390.sh: Suppress bogus compiler message<br/><br/>M hints/os390.sh<br/><br/>commit 2d8ce2d001f8e1248a85a08097f36511cbf664aa<br/>Author: John Goodyear &lt;johngood@us.ibm.com&gt;<br/>Date: Sat Mar 2 12:31:25 2013 -0700<br/><br/> XXX Temporary for z/OS long long support<br/><br/>M Configure<br/>M hints/os390.sh<br/><br/>commit 0fc51098579d6bac233ec614ec09995fb534916a<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 27 18:17:28 2013 -0600<br/><br/> Add test that to/from native character set works<br/> <br/> For non-ASCII systems, there are character set translation tables. This<br/> makes sure the two accessible ones are inverses of each other. If not,<br/> nothing can be expected to work right.<br/><br/>M MANIFEST<br/>A t/base/translate.t<br/><br/>commit 7f2184e8086d3861c31310d4e4709120193fcab6<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 27 16:55:55 2013 -0600<br/><br/> lib/feature/bundle: Fix some things to pass under EBCDIC<br/><br/>M t/lib/feature/bundle<br/><br/>commit d17548980042f02f823a2ffd9369a77b82ae60c7<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 27 16:08:04 2013 -0600<br/><br/> XS-APItest/t/fetch_pad_names.t: Skip if EBCDIC<br/> <br/> This could be ported, but there&#39;s a lot of stuff to convert; would need<br/> a function to convert byte strings that form legal UTF-8 into legal<br/> UTF-EBCDIC<br/><br/>M ext/XS-APItest/t/fetch_pad_names.t<br/><br/>commit bef44e0fe1a91c3785672bc55224555f6252962d<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 27 12:05:53 2013 -0600<br/><br/> XXX ext/XS-APItest/t/utf8.t: Fix so passes EBCDIC<br/> <br/> This involves skipping much of the tests. Reexamine later<br/><br/>M ext/XS-APItest/t/utf8.t<br/><br/>commit b3e5e5fdabbef83eae7f9a1152ce2ba585413328<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 27 11:27:06 2013 -0600<br/><br/> ext/re/t/re_funcs_u.t: Fix to work under EBCDIC<br/><br/>M ext/re/t/re_funcs_u.t<br/><br/>commit c9fd381b09cd9c8b8d9a2b2a86266f4482fa92a0<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 27 11:11:22 2013 -0600<br/><br/> XXX dist/IO/t/io_utf8argv.t: Temporarily skip if EBCDIC<br/><br/>M dist/IO/t/io_utf8argv.t<br/><br/>commit 8e11c594ca00985d49ed968778d40a02be9d4d06<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 27 10:33:44 2013 -0600<br/><br/> t/op/print.t: Skip an EBCDIC test<br/> <br/> This could be written (the values would probably change depending on the<br/> code page), but the code that would get exercised is unlikely to vary<br/> depending on character set.<br/><br/>M t/op/print.t<br/><br/>commit 1335f8cffc805cd1204c49f52acdeabbebdbb50c<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Mar 26 15:44:59 2013 -0600<br/><br/> XXX t/TEST: Avoid SIGPIPEs<br/><br/>M t/TEST<br/><br/>commit 5e656ef84e65173fb1fc92c6b9eaa82b2e96753d<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Mar 26 15:49:08 2013 -0600<br/><br/> XXX Temporarily test normalization<br/><br/>M cpan/Unicode-Normalize/t/fcdc.t<br/>M cpan/Unicode-Normalize/t/form.t<br/>M cpan/Unicode-Normalize/t/func.t<br/>M cpan/Unicode-Normalize/t/illegal.t<br/>M cpan/Unicode-Normalize/t/norm.t<br/>M cpan/Unicode-Normalize/t/null.t<br/>M cpan/Unicode-Normalize/t/partial1.t<br/>M cpan/Unicode-Normalize/t/partial2.t<br/>M cpan/Unicode-Normalize/t/proto.t<br/>M cpan/Unicode-Normalize/t/split.t<br/>M cpan/Unicode-Normalize/t/test.t<br/>M cpan/Unicode-Normalize/t/tie.t<br/><br/>commit f7a65aef1d3fea33341fa48a94aedb39b4aa433b<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Mar 26 14:06:50 2013 -0600<br/><br/> op/index.t: Fix tests for EBCDIC<br/> <br/> Commit 8a38a836 erroneously translates literals into the native<br/> encoding, causing a double translation, which is garbage.<br/><br/>M t/op/index.t<br/><br/>commit aa5a298fc0c028ca817ac17398af90f9cf26d576<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 25 20:43:38 2013 -0600<br/><br/> op/chop.t: Fix for EBCDIC<br/> <br/> One test is skipped because the code point is not representable on<br/> EBCDIC platforms. Another test is modified to work on EBCDIC.<br/><br/>M t/op/chop.t<br/><br/>commit 9f67212afd517b5aa1d73da530a436c5595c8a10<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 25 19:56:50 2013 -0600<br/><br/> t/op/lc.t: Fix to work under EBCDIC<br/> <br/> This had code that attempted this, but it was wrong. The conversion to<br/> EBCDIC must be done before the \U, or similar.<br/><br/>M t/op/lc.t<br/><br/>commit f2b728509d8a135907c2dd9caebcdb7d351fea8a<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 25 15:33:55 2013 -0600<br/><br/> Skip some tests under EBCDIC<br/> <br/> EBCDIC won&#39;t work on these because of inherent differences from ASCII<br/><br/>M t/porting/customized.t<br/>M t/porting/manifest.t<br/><br/>commit 389a512f74d39be53b8aace59a683b86e952a7a9<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 25 15:04:14 2013 -0600<br/><br/> porting/bincompat.t: Skip under EBCDIC<br/> <br/> because the sorting order is different<br/><br/>M t/porting/bincompat.t<br/><br/>commit bf4b2050d3001fdb6517d7b01b186f99b753aad9<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 25 14:59:50 2013 -0600<br/><br/> t/re/regex_sets.t: So will pass under EBCDIC<br/><br/>M t/re/regex_sets.t<br/><br/>commit cbe575d208c24dc43daae745a57ce2e5a1e781d8<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 25 13:09:09 2013 -0600<br/><br/> XXX fix \x{too large}<br/><br/>M dist/IO/IO.xs<br/>M doop.c<br/>M inline.h<br/>M pp.c<br/>M pp_pack.c<br/>M regcomp.c<br/>M sv.c<br/>M toke.c<br/>M utf8.c<br/>M utf8.h<br/><br/>commit aa34f711a9e967761fba3b60b7da3067db7f5e53<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Mar 24 13:16:08 2013 -0600<br/><br/> utf8.c: Fix so UTF-16 to UTF-8 conversion works under EBCDIC<br/><br/>M utf8.c<br/><br/>commit 9e8c1573cf235325af4671ed4f9d047ab1fed0cf<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Mar 24 13:14:34 2013 -0600<br/><br/> utf8.h, utfebcdic.h: Add #define<br/><br/>M utf8.h<br/>M utfebcdic.h<br/><br/>commit 3fb2a0221fcad500af19b4ee8d97bacd0203c7d8<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 20 22:15:58 2013 -0600<br/><br/> lib/Unicode/UCD.t: Allow to run under EBCDIC,<br/><br/>M lib/Unicode/UCD.t<br/><br/>commit b5f3c1728ff65d98c6816b4074eb48d99b50ff94<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Mar 19 15:27:31 2013 -0600<br/><br/> t/op/quotemeta.t: EBCDIC fixes<br/><br/>M t/op/quotemeta.t<br/><br/>commit 5d172959135cac438bb816215bb3022cc30a8910<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Mar 19 11:32:55 2013 -0600<br/><br/> t/re/fold_grind.t: Fixes for EBCDIC<br/><br/>M t/re/fold_grind.t<br/><br/>commit 9632f23ce8177ed543b40c62bf9cc1176dcfa66b<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Mar 19 11:21:09 2013 -0600<br/><br/> t/lib/charnames/alias: Fix some EBCDIC problems<br/><br/>M t/lib/charnames/alias<br/><br/>commit 629212b42c92dd6fce6f201c3e9b730194a658cc<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Mar 19 11:20:24 2013 -0600<br/><br/> t/uni/class.t: Make work on EBCDIC<br/><br/>M t/uni/class.t<br/><br/>commit 7a4fb27b9214b51d0f4990183ee2cf4c992eb8b9<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Mar 19 11:01:57 2013 -0600<br/><br/> feature/unicode_strings.t: Fix to work on EBCDIC<br/><br/>M lib/feature/unicode_strings.t<br/><br/>commit 0090870daba8fec137c44459b98348d9dd7b844f<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Mar 19 10:10:46 2013 -0600<br/><br/> XXX rebase regen/regcharclass.pl: make more EBCDIC friendly<br/> <br/> XXX regen/regcharclass.pl: maybe temp comment out utf8_char<br/> One of the possible inputs to this process is a string. This clarifies<br/> that it must be specified in Unicode characters, and adds code to<br/> translate it to native, if necessary.<br/><br/>M regen/regcharclass.pl<br/>M regen/regcharclass_multi_char_folds.pl<br/><br/>commit 9595023f46e4c1f2bb1dc71807f6e7222737106f<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Mar 19 10:09:53 2013 -0600<br/><br/> XXX temporarily skip some folding tests<br/><br/>M regen/regcharclass.pl<br/>M t/re/fold_grind.t<br/>M t/re/reg_fold.t<br/><br/>commit 5d8179efd6dd1ada662f63aff81c348d9e7404b3<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 18 22:00:29 2013 -0600<br/><br/> XXX temp skip perl5db.t<br/><br/>M lib/perl5db.t<br/><br/>commit 35801f5e596e3cba174dba96ccfe696adb4a2d87<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 18 11:45:06 2013 -0600<br/><br/> pp.c: White-space only<br/> <br/> Make a ternary operation more clear<br/><br/>M pp.c<br/><br/>commit f98569b84642c0645365db18f2d454df149f5e7e<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 18 11:43:42 2013 -0600<br/><br/> Fix valid_utf8_to_uvchr() for EBCDIC<br/><br/>M utf8.c<br/><br/>commit faaf8fbd9dea6941c340b198a832ff4ad9809127<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Mar 17 21:42:20 2013 -0600<br/><br/> t/test.pl: Add comment about EBCDIC<br/><br/>M t/test.pl<br/><br/>commit 8034a4ee3a99a75e5d6e2b904cfe87347573f540<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Mar 17 17:39:33 2013 -0600<br/><br/> XXX makedepend.SH: Why does 255 work and 250 not?<br/><br/>M makedepend.SH<br/><br/>commit 4b3174531d11ec8f151d48c54f2b3f16e46029e7<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 16 22:48:22 2013 -0600<br/><br/> XXX regen/mk_PL_charclass.pl: Make EBCDIC friendly<br/> <br/> need more of a commit message<br/><br/>M regen/mk_PL_charclass.pl<br/><br/>commit 97393aeb62a0fc1e71f9bc0e5b0ee4d8db751abb<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 16 22:44:44 2013 -0600<br/><br/> XXX make various things more EBCDIC friendly<br/> <br/> Adds trailing white space errors<br/> Need to know what to do about ^A meaning 0x1, and M-foo meaning meta<br/><br/>M lib/DB.pm<br/>M lib/dumpvar.pl<br/>M lib/perl5db.pl<br/>M lib/sigtrap.pm<br/><br/>commit d24dc6ea3aa4066b6c891112c12b89ecd6d34be3<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 16 22:41:15 2013 -0600<br/><br/> XXX: Fixup commit message.<br/> <br/> Fix UTF8_ACUUMULATE, utf8.c<br/><br/>M utf8.c<br/>M utf8.h<br/><br/>commit 639ac22b318504dadb87825bee930535ca40d879<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 16 16:52:45 2013 -0600<br/><br/> regcomp.c: Fix bug in EBCDIC<br/> <br/> The POSIXA and NPOSIXA regnodes need to set the bits on only the ASCII<br/> code points, but under EBCDIC those code points are not 0-127.<br/><br/>M regcomp.c<br/><br/>commit 90d102f1dc5d5313967eb2edaea6cb6a7317a4a7<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Mar 15 11:57:24 2013 -0600<br/><br/> re/charset.t: Allow to work on EBCDIC<br/> <br/> This just converts the hard-coded character numbers to native, so will<br/> work on any platform.<br/><br/>M t/re/charset.t<br/><br/>commit 0e6de6e038bf2d3c68f7dd807ee9d1bff3ad1f5c<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Mar 15 11:50:35 2013 -0600<br/><br/> XS-APItest/t/handy.t: Change output message<br/> <br/> On EBCDIC platforms, the output is not in terms of \N{U+}; change text<br/> to \x{ }<br/><br/>M ext/XS-APItest/t/handy.t<br/><br/>commit cc8d0fe963f61b877d8dede3ca7bd74ab7cca986<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 13 21:44:16 2013 -0600<br/><br/> XXX Dumper.xs: Don&#39;t know why this stopped compiling<br/><br/>M dist/Data-Dumper/Dumper.xs<br/><br/>commit 3cd919847e9441ed6f25c795c604b7a7e37611ae<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 13 16:20:23 2013 -0600<br/><br/> toke.c: Simplify some code<br/> <br/> We don&#39;t have to test separately for lower vs uppercase here, as<br/> upper/lower case A-Z and a-z are not intermixed in the gaps in A-Z and<br/> a-z under EBCDIC.<br/><br/>M toke.c<br/><br/>commit e6ffc398630b03bb517436da4fb7869a0bff2e9a<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 13 16:18:12 2013 -0600<br/><br/> genpacksizetables.pl: Correct comment typo<br/><br/>M genpacksizetables.pl<br/><br/>commit 87f6869b82bf13bc69b3e6a5ff5221d647b8a326<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 13 16:17:39 2013 -0600<br/><br/> APItest/t/handy.t: Make EBCDIC-friendly<br/><br/>M ext/XS-APItest/t/handy.t<br/><br/>commit d7d680934c3482d5a942214ef3e9dd9ea72ab24e<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 13 16:16:14 2013 -0600<br/><br/> Data-Dumper: Make EBCDIC-friendly<br/><br/>M dist/Data-Dumper/Dumper.xs<br/><br/>commit dd047fff6d2ce6cef14fcaa9b1a72f3ce01b7910<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 13 16:14:31 2013 -0600<br/><br/> sv.c: Make less ASCII-centric<br/><br/>M sv.c<br/><br/>commit 3a77e4cc7afebb7d89d71ac11adab5276eea1fa4<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 13 16:07:52 2013 -0600<br/><br/> charnames.t: Generalize for non-ASCII platforms<br/><br/>M lib/charnames.t<br/><br/>commit 166335409f79605895a4320207ff6d201bc41915<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 13 16:05:46 2013 -0600<br/><br/> dump.c: Make less ASCII-centric:<br/> <br/> This has the added advantage of being clearer as to what is going on.<br/><br/>M dump.c<br/><br/>commit 2674e33eadf621297298f4871fe14cb8aa7e1147<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 13 16:02:52 2013 -0600<br/><br/> hv.c: Stop being ASCII-centric<br/> <br/> This uses macros which work cross-platform. This has the added advantge<br/> that it is much clearer what is going on.<br/><br/>M hv.c<br/><br/>commit e512104c7b4e199f6e4188341dade85fbc93d9be<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 11 15:11:10 2013 -0600<br/><br/> Added Porting/reorder_charclass_invlists.pl<br/> <br/> This program is used too bootstrap perl onto a non-ASCII platform with<br/> no pre-existing perl.<br/><br/>M MANIFEST<br/>A Porting/reorder_charclass_invlists.pl<br/><br/>commit ddcc000109288b589aa01cc53e8f156c2f500cd5<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Mar 10 22:17:31 2013 -0600<br/><br/> t/base/lex.t: Use char suitable for both ASCII and EBCDIC<br/> <br/> \xE2 is &#39;S&#39; in EBCDIC, and so is going to be legal. \xDF is an alpha<br/> which has no ASCII equivalent in either character set<br/><br/>M t/base/lex.t<br/><br/>commit 1fb145e8b46f9968bf4056696dc90f1dc02acc28<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Mar 10 13:11:07 2013 -0600<br/><br/> XXX Temporary comment out ParseXS check<br/> <br/> this is to get things to compile for now<br/><br/>M dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm<br/><br/>commit 9c8e94cbdd0aad0bfa2aaccdb5c454a467e804a8<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Mar 10 11:34:10 2013 -0600<br/><br/> XXX Collate, Normalize: Allow to compile under EBCDIC<br/><br/>M cpan/Unicode-Collate/Collate.pm<br/>M cpan/Unicode-Collate/mkheader<br/>M cpan/Unicode-Normalize/Normalize.pm<br/>M cpan/Unicode-Normalize/mkheader<br/><br/>commit 8ddf498a22c5505bb57c1a24559001c50f390fc4<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 9 21:57:38 2013 -0700<br/><br/> XXX dquote_static.c: Silence wrong warning on EBCDIC<br/> <br/> Unsure of whether to add the 2nd !isCNTRL_L1 to silence return trip,<br/> which should be a separate commit anyway.<br/> <br/> This silences an inappropriate warning that doesn&#39;t happen on ASCII<br/> platforms. CTRL-T maps to 0x14 on both ASCII and EBCDIC platforms. But<br/> 0x14 is a C1 control on EBCDIC, a C0 on ASCII. Therefore the test that<br/> it&#39;s a control should include both C0 and C1, which isCNTRL_L1() does.<br/> <br/> Also has a white-space change, outdenting a line so it doesn&#39;t wrap in<br/> an 80 column window.<br/><br/>M dquote_static.c<br/><br/>commit a050b48625691fe374873eefcc5091f61f5c7cbe<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Mar 7 12:08:41 2013 -0700<br/><br/> utfebcdic.h: Change &#39;unsigned char&#39; to U8<br/> <br/> This is for consistency with the rest of Perl<br/><br/>M utfebcdic.h<br/><br/>commit e0bb2ed995a6f527260fcf400d616012af6f317a<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Mar 8 08:11:38 2013 -0700<br/><br/> regen/regcharclass.pl: Make more EBCDIC-friendly<br/> <br/> This commit changes the code generated by the macros so that they work<br/> right out-of-the-box on non-ASCII platforms for non-UTF-8 inputs. THEY<br/> ARE WRONG for UTF-8, but this is good enough to get perl bootstrapped<br/> onto the target platform, and regcharclass.pl can be run there,<br/> generating macros correct UTF-8.<br/><br/>M regcharclass.h<br/>M regen/regcharclass.pl<br/><br/>commit e8a285a85629d8e88427745d6145c2725918d8f2<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 6 21:30:01 2013 -0700<br/><br/> utfebcdic.h: Add (UV) cast<br/> <br/> The operand of this macro is implicitly a UV. Make sure that it is.<br/><br/>M utfebcdic.h<br/><br/>commit 291715559e38ab395a06eba0a51d6c9b8db2caa1<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 6 17:04:58 2013 -0700<br/><br/> handy.h: Allow bootstrapping to non-ASCII platform<br/> <br/> This adds a bunch of macros and moves things around to support<br/> conditional compilation when Configure is called with<br/> -DBOOTSTRAP_CHARSET. Doing so causes the usual macros that are<br/> table-driven to not be used, since the table may not be valid when<br/> bringing Perl up for the first time on a non-ASCII platform.<br/> <br/> This allows it to compile using the platform&#39;s native C library ctype<br/> functions, which should work enough to compile miniperl, and allow the<br/> table to be changed to be valid. Then Configure can be re-run to not<br/> bootstrap, and normal compilation can proceed<br/><br/>M handy.h<br/>M inline.h<br/><br/>commit 93a99031285bb0e86036e022ff8cecc07095a107<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 4 13:00:47 2013 -0700<br/><br/> toke.c: Remove EBCDIC dependency<br/><br/>M toke.c<br/><br/>commit b2743d186c3861b22a3f39aeccd1f3b39ee65e19<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 4 09:14:25 2013 -0700<br/><br/> toke.c: Remove character set dependency<br/> <br/> Instead of hard-coding the bit patterns that comprise the Byte Order<br/> Mark in the UTF-8 or UTF-EBCDIC encodings, use the generated ones for<br/> the current platform.<br/> <br/> This removes some EBCDIC-only code.<br/><br/>M toke.c<br/><br/>commit d471c933c260c794aa78693503b8df9380014490<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Mar 4 09:10:27 2013 -0700<br/><br/> unicode_constants.h: Add #defines for Byte Order Mark<br/> <br/> These will be used in future commits<br/><br/>M regen/unicode_constants.pl<br/>M unicode_constants.h<br/><br/>commit 11a2d037f2269bed17c51022580903d54cf081b1<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 2 15:04:18 2013 -0700<br/><br/> XXX: Find a cleaner way. Handle missing is_UTF8_CHAR_utf8_safe<br/> <br/> This macro may not be present, and is currently used exclusively in<br/> IS_UTF8_CHAR, which itself may be undefined, and code should cope with<br/> that. This is a work-around until a better solution is found.<br/><br/>M utf8.c<br/>M utf8.h<br/><br/>commit 32a6773f5f8fd714efe1f5ca1507f85199643d5d<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 2 14:09:04 2013 -0700<br/><br/> Add Porting tool for help with non-ASCII platforms<br/> <br/> Porting/reorder_l1_char_class_tab.pl is used to bootstrap Perl onto a<br/> non-ASCII platform with no working Perl.<br/><br/>M MANIFEST<br/>A Porting/reorder_l1_char_class_tab.pl<br/>M regen/mk_PL_charclass.pl<br/><br/>commit 5e9252212361bb7d6cd42d36cb7f58c234d787ef<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 2 13:06:58 2013 -0700<br/><br/> inline.h: Reorder functions<br/> <br/> The comment implied that the functions below it in the file were<br/> deprecated, but in fact only the next two functions were. This<br/> clarifies that and moves them so they are the final ones in the file<br/><br/>M inline.h<br/><br/>commit 188f5bf31aa2e84893702d6a60f2e9a91a3e26eb<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 2 12:33:42 2013 -0700<br/><br/> utfebcdic.h: Add comment<br/><br/>M utfebcdic.h<br/><br/>commit 68c325fca7682b5445033bbdc362be4c01a46e3c<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 2 12:12:11 2013 -0700<br/><br/> utf8.h: Clean up START_MARK definition and use<br/> <br/> The previous definition broke good encapsulation rules. UTF_START_MARK<br/> should return something that fits in a byte; it shouldn&#39;t be the caller<br/> that does this. So the mask is moved into the definition. This means<br/> it can apply only to the portion that creates something larger than a<br/> byte. Further, the EBCDIC version can be simplified, since 7 is the<br/> largest possible number of bytes in an EBCDIC UTF8 character.<br/><br/>M utf8.h<br/>M utfebcdic.h<br/><br/>commit 7cebc440be4825fe14c3719fc63e69e709c87507<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Mar 2 12:05:26 2013 -0700<br/><br/> utf8.h: Move #includes<br/> <br/> These two files were only being #included for non-ebcdic compiles; they<br/> should be included always.<br/><br/>M utf8.h<br/><br/>commit 4a14c233522a14c98d15725c68be8cd4e76078c4<br/>Author: John Goodyear &lt;johngood@us.ibm.com&gt;<br/>Date: Sat Mar 2 11:49:14 2013 -0700<br/><br/> utfebcdic.h: Remove extra parameter expansions<br/> <br/> These two macros were improperly expanding the parameters as well as<br/> defining the operation, leading to compile errors.<br/><br/>M utfebcdic.h<br/><br/>commit c730f0f9f7712dab040d06c2440ab21df8caef09<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Mar 1 08:28:52 2013 -0700<br/><br/> utf8.h: Simplify UTF8_EIGHT_BIT_foo on EBCDIC<br/> <br/> These macros were previously defined in terms of UTF8_TWO_BYTE_HI and<br/> UTF8_TWO_BYTE_LO. But the EIGHT_BIT versions can use the less general<br/> and simpler NATIVE_TO_LATN1 instead of NATIVE_TO_UNI because the input<br/> domain is restricted in the EIGHT_BIT. Note that on ASCII platforms,<br/> these both expand to the same thing, so the difference matters only on<br/> EBCDIC.<br/><br/>M utf8.h<br/><br/>commit 4b34d9ef26d69fb16ad6b431004a29dea0663a97<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Feb 28 09:25:27 2013 -0700<br/><br/> XXX temp: show makedepend cerr<br/><br/>M makedepend.SH<br/><br/>commit 71e3c75dd008d2c96e16b178a46e4c6cd9caf461<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Feb 27 21:59:11 2013 -0700<br/><br/> makedepend.SH: Split too long lines; properly join<br/> <br/> I had thought that a continuation introduced a space. But no,<br/> a continuation can happen in the middle of a token.<br/> <br/> And this splits lines that are getting very long to avoid preprocessor<br/> limitations.<br/><br/>M makedepend.SH<br/><br/>commit 2232c0495dfbefcfc270f6eadc9227b97f8f25de<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Feb 27 15:51:28 2013 -0700<br/><br/> makedepend.SH: White-space only<br/> <br/> Align continuation backslashes<br/><br/>M makedepend.SH<br/><br/>commit ce7db967db8f07ff8ffd4d6ad41d830e66c7dd8d<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Feb 27 14:39:28 2013 -0700<br/><br/> makedepend.SH: Remove some unnecessary white space<br/> <br/> Multi-line preprocessor directives are now joined into single lines.<br/> This can create lines too long for the preprocessor to handle. This<br/> commit removes blanks adjoining comments that get deleted. This makes<br/> things somewhat less likely to exceed the limit.<br/> <br/> This commit also fixes several [] which were meant to each match a tab<br/> or a blank, but editors converted the tabs to blanks<br/><br/>M makedepend.SH<br/><br/>commit 20ae44565cfddc53e64666e9d6083dcc14f10de2<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Feb 27 14:30:51 2013 -0700<br/><br/> makedepend.SH: Retain &#39;/**/&#39; comments<br/> <br/> These comments may actually be necessary.<br/><br/>M makedepend.SH<br/><br/>commit da1e0a6e6a890939c0a283151915338501dbfa7f<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Feb 27 08:38:19 2013 -0700<br/><br/> handy.h: Remove extraneous parens<br/><br/>M handy.h<br/><br/>commit 79fe62c06aa2a250afe112ca549562fed76db68a<br/>Author: Andy Dougherty &lt;doughera@lafayette.edu&gt;<br/>Date: Wed Feb 27 13:06:07 2013 -0500<br/><br/> Disable gcc-style function attributes on z/OS.<br/> <br/> John Goodyear &lt;johngood@us.ibm.com&gt; reports that the z/OS C compiler<br/> supports the attribute keyword, but not exactly the same as gcc.<br/> Instead of a &quot;warning&quot;, the compiler emits an &quot;INFORMATIONAL&quot; message<br/> that Configure fails to detect. Until Configure is fixed, just disable<br/> the attributes altogether.<br/> <br/> John Goodyear<br/><br/>M hints/os390.sh<br/><br/>commit 92eafeb88ec7b97340bcf80a0e71eef7221fb667<br/>Author: Andy Dougherty &lt;doughera@lafayette.edu&gt;<br/>Date: Wed Feb 27 09:12:13 2013 -0500<br/><br/> Change os390 custom cppstdin script to use fgrep.<br/> <br/> Grep appears to be limited to 2048 characters, and truncates<br/> the output for cppstin. Fgrep apparently doesn&#39;t have that limit.<br/> Thanks to John Goodyear &lt;johngood@us.ibm.com&gt; for reporting this.<br/><br/>M hints/os390.sh<br/><br/>commit ddb74c9c41a3de6d05f340deb054b40781256c14<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Feb 26 13:45:19 2013 -0700<br/><br/> utf8.c: Use more clearly named macro<br/> <br/> In the case of invariants these two macros should do the same thing,<br/> but it seems to me that the latter name more clearly indicates what is<br/> going on.<br/><br/>M utf8.c<br/><br/>commit c29e6931ed88b816c1ed584ceeca3e4d4d611a45<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Feb 26 13:35:12 2013 -0700<br/><br/> Add macro OFFUNISKIP<br/> <br/> This means use official Unicode code point numbering, not native. Doing<br/> this converts the existing UNISKIP calls in the code to refer to native<br/> code points, which is what they meant anyway. The terminology is<br/> somewhat ambiguous, but I don&#39;t think will cause real confusion.<br/> NATIVE_SKIP is also introduced for situations where it is important to<br/> be precise.<br/><br/>M toke.c<br/>M utf8.c<br/>M utf8.h<br/>M utfebcdic.h<br/><br/>commit 23137845176046d76a4531c841c934d6b0904b86<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Feb 26 13:22:19 2013 -0700<br/><br/> toke.c: white space only<br/><br/>M toke.c<br/><br/>commit 09452bcd9f3168f1a14c6e3eb0a4b12040428179<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Feb 17 14:00:13 2013 -0700<br/><br/> toke.c: Don&#39;t remap \N{} for EBCDIC<br/> <br/> Everything is now in native,<br/><br/>M toke.c<br/><br/>commit d34c3b4e4c355753450589c06260cdad77444e9d<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Feb 26 12:08:50 2013 -0700<br/><br/> utf8.c: Deprecate two functions<br/> <br/> This is to force any code that has been using these functions to change.<br/> Since the Unicode tables are now stored in native order, these functions<br/> should only rarely be needed.<br/> <br/> However, the functionality of these is needed, and in actuality, on<br/> ASCII platforms, the native functions are #defined to these. So what<br/> this commit does is rename the functions to something else, and create<br/> wrappers with the old names, so that anyone using them will get the<br/> deprecation.<br/><br/>M embed.fnc<br/>M embed.h<br/>M mathoms.c<br/>M proto.h<br/>M utf8.c<br/>M utf8.h<br/><br/>commit 9601f7fae768cd6a7f778f02d5f3c03b12bc6410<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Feb 26 11:26:09 2013 -0700<br/><br/> Deprecate uvuni_to_utf8()<br/> <br/> Code should almost never be dealing with non-native code points<br/><br/>M embed.fnc<br/>M embed.h<br/>M proto.h<br/>M utf8.c<br/>M utf8.h<br/><br/>commit f71011a407ce69d43e14ef407eea32b78f06c6c3<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Feb 26 11:02:33 2013 -0700<br/><br/> Deprecate utf8_to_uni_buf()<br/> <br/> Now that the tables are stored in native order, there is almost no need<br/> for code to be dealing in Unicode order.<br/><br/>M embed.fnc<br/>M proto.h<br/>M utf8.c<br/><br/>commit c2aba261eec2d814326299fe129bf749385d9e77<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Feb 26 09:00:18 2013 -0700<br/><br/> makedepend.SH: Comment out unnecessary code<br/> <br/> This causes problems currently for z/OS. But, since we don&#39;t know why<br/> it was there, I&#39;m leaving it in as a placeholder.<br/><br/>M makedepend.SH<br/><br/>commit 24cd120f481f22163ea7bcba6c55277a3354ce34<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Feb 25 20:26:44 2013 -0700<br/><br/> Deprecate valid_utf8_to_uvuni()<br/> <br/> Now that all the tables are stored in native format, there is very<br/> little reason to use this function; and those who do need this kind of<br/> functionality should be using the bottom level routine, so as to make it<br/> clear they are doing nonstandard stuff.<br/><br/>M embed.fnc<br/>M proto.h<br/>M utf8.c<br/><br/>commit 72fcfbd7276b6a257b19abfb54251de84caff9fa<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Feb 25 20:14:26 2013 -0700<br/><br/> utf8.c: Swap which fcn wraps the other<br/> <br/> This is in preparation for the current wrapee becoming deprecated<br/><br/>M embed.fnc<br/>M embed.h<br/>M proto.h<br/>M utf8.c<br/>M utf8.h<br/><br/>commit 40f2d4cdebbbfa0457287d529ca2d24930769501<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Feb 25 19:29:34 2013 -0700<br/><br/> utf8.c: Skip a no-op<br/> <br/> Since the value is invariant under both UTF-8 and not, we already have<br/> it in &#39;uv&#39;; no need to do anything else to get it<br/><br/>M utf8.c<br/><br/>commit 7d79ccbe4d2a031bea251f943aed70aaa9d0f9ff<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Feb 25 19:26:50 2013 -0700<br/><br/> utf8.c: Move comment to where makes more sense<br/><br/>M utf8.c<br/><br/>commit 60ad9ed5ad305d0456bd7c3cc05e7e7e86eaa7c8<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Feb 25 17:30:10 2013 -0700<br/><br/> APItest: Test native code points, instead of Unicode<br/><br/>M ext/XS-APItest/APItest.xs<br/>M ext/XS-APItest/t/utf8.t<br/><br/>commit b8fd38230f209eff3ab3d6122ac7228cfb0b5946<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Feb 25 17:12:53 2013 -0700<br/><br/> XXX CPAN Encode.xs<br/> <br/> Use core function if available. This will insulate this code from any<br/> future changes.<br/><br/>M cpan/Encode/Encode.xs<br/><br/>commit da724701c8aed26b50a05dd4cffd4d36cba89067<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Feb 25 17:04:24 2013 -0700<br/><br/> XXX CPAN and unsure Encode<br/><br/>M cpan/Encode/Encode.xs<br/>M cpan/Encode/Unicode/Unicode.xs<br/><br/>commit 83e59b9664c9fa2e9a695a2dfa3b96f078be25be<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Feb 25 17:00:47 2013 -0700<br/><br/> XXX CPAN Encode.xs: fix indent<br/><br/>M cpan/Encode/Encode.xs<br/><br/>commit 0c53257d6df6c5e66887e7ceef264d39cb618cff<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Feb 24 17:23:15 2013 -0700<br/><br/> Don&#39;t refer to U+XXXX when mean native<br/> <br/> These messages say the output number is Unicode, but it is really<br/> native, so change to saying is 0xXXXX.<br/><br/>M regen/regcharclass_multi_char_folds.pl<br/>M regexec.c<br/><br/>commit 9920d20eac0a278b79bad315b3d3d83e0ba023d2<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Feb 24 16:43:59 2013 -0700<br/><br/> Convert some uvuni() to uvchr()<br/> <br/> All the tables are now based on the native character set, so using<br/> uvuni() in almost all cases is wrong.<br/><br/>M cygwin/cygwin.c<br/>M doop.c<br/>M op.c<br/>M pp_pack.c<br/>M regcomp.c<br/>M regexec.c<br/>M toke.c<br/>M utf8.c<br/><br/>commit 403f02b0c88d069a668bd063d9d80545442010a0<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Feb 24 16:25:47 2013 -0700<br/><br/> handy.h: White space only<br/><br/>M handy.h<br/><br/>commit ecfe98a97b7cace5aadabb40e9903badaf1eb415<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Feb 24 16:19:49 2013 -0700<br/><br/> t/test.pl: Allow native/latin1 string conversions to work on utf8.<br/> <br/> These functions no longer have the hard-coded definitions in them,<br/> but now end up resolving to internal functions, so that new encodings<br/> could be added and these would automatically understand them.<br/> <br/> Instead of using tr///, these now go character by character and<br/> converting to/from ord, which is slower, but allows them to operate on<br/> utf8 strings.<br/> <br/> Peephole optimization should make these essentially no-ops on ascii<br/> platforms.<br/><br/>M t/test.pl<br/><br/>commit 159b69e84691d5f5240eb8efb1b4261f0617318f<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Feb 24 16:05:55 2013 -0700<br/><br/> t/test.pl: Simplify ord to/from native fcns<br/> <br/> This commit changes these functions from converting to/from a string to<br/> calling utf8:: functions which operate on ordinals instead.<br/><br/>M t/test.pl<br/><br/>commit 117ac6b127c015750e98cd9addaa4c4dcf85b294<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Feb 24 15:35:38 2013 -0700<br/><br/> Make casing tables native<br/> <br/> These are final tables that haven&#39;t been converted to native character<br/> set casing.<br/><br/>M perl.h<br/>M utfebcdic.h<br/><br/>commit f01ec5e8b3d43058dbcde14eb901b3f977f7d0f0<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Feb 24 15:32:30 2013 -0700<br/><br/> utfebcdic.h: Remove trailing spaces<br/><br/>M utfebcdic.h<br/><br/>commit 65b524a51ec4dc19af90afd51eb9cfa62989f606<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri Feb 22 18:55:26 2013 -0700<br/><br/> EBCDIC has the unicode bug too<br/> <br/> We have not had a working modern Perl on EBCDIC for some years. When I<br/> started out, comments and code led me to conclude erroneously that<br/> natively it supported semantics for all 256 characters 0-255. It turns<br/> out that I was wrong; it natively (at least on some platforms) has the<br/> same rules (essentially none) for the characters which don&#39;t correspond<br/> to ASCII onees, as the rules for these on ASCII platforms.<br/> <br/> A previous commit for 5.18 changed the docs about this issue. This<br/> current commit forces ASCII rules on EBCDIC platforms (even should there<br/> be one that natively uses all 256). To get all 256, the same things<br/> like &#39;use feature &quot;unicode_strings&quot;&#39; must now be done.<br/><br/>M handy.h<br/><br/>commit c9e5384f5bd88cd9d67de2639b342c92c229a6be<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Feb 21 13:47:52 2013 -0700<br/><br/> handy.h: Solve a failure to compile problem under EBCDIC<br/> <br/> handy.h is included in files that don&#39;t include perl.h, and hence not<br/> utf8.h. We can&#39;t rely therefore on the ASCII/EBCDIC conversion<br/> macros being available to us. The best way to cope is to use the native<br/> ctype functions. Most, but not all, of the macros in this commit<br/> currently resolve to use those native ones, but a future commit will<br/> change that.<br/><br/>M handy.h<br/><br/>commit a0ebfdcdb7af7c10e9db737a587c25e5f5c3cd17<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Feb 21 13:35:12 2013 -0700<br/><br/> handy.h: Simplify some macro definitions<br/> <br/> Now, only one of the macros relies on magic numbers (isPRINT), leading<br/> to clearer definitions.<br/><br/>M handy.h<br/><br/>commit 827a4d3c43097e2aa7766403efa63952c811dde9<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Feb 21 13:26:49 2013 -0700<br/><br/> handy.h: Combine macros that are same in ASCII, EBCDIC<br/> <br/> These 4 macros can have the same RHS for their ASCII and EBCDIC<br/> versions, so no need to duplicate their definitions<br/> <br/> This also enables the EBCDIC versions to not have undefined expansions<br/> when compiling without perl.h<br/><br/>M handy.h<br/><br/>commit c7667e4a7566f014564ffb25ab04f4553bde0621<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Feb 20 10:39:48 2013 -0700<br/><br/> Deprecate NATIVE_TO_NEED and ASCII_TO_NEED<br/> <br/> These macros are no longer called in the Perl core. This commit turns<br/> them into functions so that they can use gcc&#39;s deprecation facility.<br/> <br/> I believe these were defective right from the beginning, and I have<br/> struggled to understand what&#39;s going on. From the name, it appears<br/> NATIVE_TO_NEED taks a native byte and turns it into UTF-8 if the<br/> appropriate parameter indicates that. But that is impossible to do<br/> correctly from that API, as for variant characters, it needs to return<br/> two bytes. It could only work correctly if ch is an I8 byte, which<br/> isn&#39;t native, and hence the name would be wrong.<br/> <br/> Similar arguments for ASCII_TO_NEED.<br/> <br/> The function S_append_utf8_from_native_byte(const U8 byte, U8** dest)<br/> does what I think NATIVE_TO_NEED intended.<br/><br/>M embed.fnc<br/>M mathoms.c<br/>M proto.h<br/>M toke.c<br/>M utf8.h<br/>M utfebcdic.h<br/><br/>commit ae256637f5d9318c3ac4734682b4fa7f6b336b73<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Feb 20 10:26:43 2013 -0700<br/><br/> Remove remaining calls of NATIVE_TO_NEED<br/> <br/> These calls are just copying the input to the output byte by byte.<br/> There is no need to worry about UTF-8 or not, as the output is just an<br/> exact copy of the input<br/><br/>M toke.c<br/><br/>commit 95eef86603b7f99aa46e17584f860910e21b81c2<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Feb 20 08:12:15 2013 -0700<br/><br/> toke.c: Remove some NATIVE_TO_NEED calls<br/> <br/> I believe NATIVE_TO_NEED is defective, and will remove it in a future<br/> commit. But, just in case I&#39;m wrong, I&#39;m doing it in small steps so<br/> bisects will show the culprit. This removes the calls to it where the<br/> parameter is clearly invariant under UTF-8 and UTF-EBCDIC, and so the<br/> result can&#39;t be other than just the parameter.<br/><br/>M toke.c<br/><br/>commit 57daaa5e620c00830d2408f9c034a8faf0fe011d<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Feb 20 08:22:07 2013 -0700<br/><br/> toke.c: in [A-Za-z] use macros that exclude non-ASCII alphas<br/> <br/> This code is attempting to deal with the problem of holes in the ranges<br/> a-z and A-Z in EBCDIC. Prior to this patch, it accepeted things like A<br/> WITH GRAVE, etc, which shouldn&#39;t have the special processing to deal<br/> with the holes<br/><br/>M toke.c<br/><br/>commit 2449dee11c3c8809d0de13cf07f1a52bfaa20fd6<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Feb 19 15:13:19 2013 -0700<br/><br/> Use real illegal UTF-8 byte<br/> <br/> The code here was wrong in assuming that \xFF is not legal in UTF-8<br/> encoded strings. It currently doesn&#39;t work due to a bug, but that may<br/> eventually be fixed: [perl #116867]. The comments are also wrong that<br/> all bytes are legal in UTF-EBCDIC.<br/> <br/> It turns out that in well-formed UTF-8, the bytes C0 and C1 never appear<br/> (C2, C3, and C4 as well in UTF-EBCDIC), as they would be the start byte<br/> of an illegal overlong sequence.<br/> <br/> This creates a #define for an illegal byte using one of the real illegal<br/> ones, and changes the code to use that.<br/> <br/> No test is included due to #116867.<br/><br/>M op.c<br/>M toke.c<br/>M utf8.h<br/><br/>commit 49f04457f857b0a7dea565787d5f9fd6c98fceae<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Feb 17 13:50:45 2013 -0700<br/><br/> toke.c: Remove remapping for EBCDIC for octal<br/> <br/> The code prior to this commit converted something like \04 into its<br/> EBCDIC equivalent only in double-quoted strings. This was not done in<br/> patterns, and so gave inconsistent results. The correct thing to do<br/> should be to do the native thing, what someone who works on a platform<br/> would think \04 do. Platform independent characters are available<br/> through \N{}, either by name or by U+.<br/> <br/> The comment changed by this was wrong, as in some cases it was native,<br/> and in some cases Unicode.<br/><br/>M toke.c<br/><br/>commit 7324d3ae3f193aaf616ecfb70cb5a1e6abdc1ac3<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Feb 17 13:47:13 2013 -0700<br/><br/> Remove EBCDIC remappings<br/> <br/> Now that the tables are stored in native format, we shouldn&#39;t be doing<br/> remapping.<br/> <br/> Note that this assumes that the Latin1 casing tables are stored in<br/> native order; not all of this has been done yet.<br/><br/>M handy.h<br/>M perly.c<br/>M pp.c<br/>M regcomp.c<br/>M regexec.c<br/>M utf8.c<br/><br/>commit 2c2605c19d666c5fcc440eda6e9ab98d128246ec<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun Feb 17 12:46:05 2013 -0700<br/><br/> Add and use macro to return EBCDIC<br/> <br/> The conversion from UTF-8 to code point should generally be to the<br/> native code point. This adds a macro to do that, and converts the<br/> core calls to the existing macro to use the new one instead. The old<br/> macro is retained for possible backwards compatibility, though it<br/> probably should be deprecated.<br/><br/>M handy.h<br/>M pp.c<br/>M regcomp.c<br/>M regexec.c<br/>M toke.c<br/>M utf8.c<br/>M utf8.h<br/><br/>commit b126752ccd53766671f78385b34c24233d409556<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Feb 16 11:05:44 2013 -0700<br/><br/> charnames: Make work in EBCDIC<br/> <br/> Now that mktables generates native tables, the we need to make U+ mean<br/> Unicode instead of native.<br/><br/>M lib/_charnames.pm<br/>M lib/charnames.pm<br/><br/>commit e878b052a7a05c2dbdcc284bbca77d5de2ab6f8b<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Feb 16 09:35:56 2013 -0700<br/><br/> Unicode::UCD: Work on non-ASCII platforms<br/> <br/> Now that mktables generates native tables, it is a fairly simple matter<br/> to get Unicode::UCD to work on those platforms.<br/><br/>M lib/Unicode/UCD.pm<br/><br/>commit 29a1d721c61031f49dfc23652a58474aa3f35b03<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 27 17:01:24 2013 -0600<br/><br/> Unicode::UCD: Typo in comment<br/><br/>M lib/Unicode/UCD.pm<br/><br/>commit bcb619e5ae6cd4c19e03073386cc4223d5b1a503<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Feb 14 22:16:38 2013 -0700<br/><br/> mktables: Generate native code-point tables<br/> <br/> The output tables for mktables are now in the platform&#39;s native<br/> character set. This means there is no change for ASCII platforms, but<br/> is a change for EBCDIC ones.<br/> <br/> Since we currently don&#39;t have any EBCDIC test platforms, I tested this<br/> by faking it out to generate EBCDIC data, and then eye-balled the<br/> results.<br/> <br/> Code that didn&#39;t realize there was a potential difference between EBCDIC<br/> and non-EBCDIC platforms will now start to work; code that tried to do<br/> the right thing under these circumstances will no longer work. Fixing<br/> that comes in later commits.<br/><br/>M lib/unicore/mktables<br/><br/>commit 017a0259eea89468d5fc62ac98b0579d8e70ba04<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 2 21:36:28 2013 -0600<br/><br/> mktables: Move table creation code<br/> <br/> This code is moved later in the process. This is in preparation for<br/> mktables generating tables in the native character set. By moving it to<br/> later, the translation to native has already been done, and special<br/> coding need not be done.<br/> <br/> This also caught 7 code points that were omitted somehow in the previous<br/> logic<br/><br/>M lib/unicore/mktables<br/><br/>commit 487a62930f60cdaa7547343a0f9bd31a4ae86760<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Feb 14 10:50:00 2013 -0700<br/><br/> Fix some EBCDIC problems<br/> <br/> These spots have native code points, so should be using the macros for<br/> native code points, instead of Unicode ones.<br/><br/>M regcomp.c<br/>M sv.c<br/>M toke.c<br/><br/>commit 843dd8d84cc5c52873823eb655e03eede7b56190<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Feb 13 22:10:19 2013 -0700<br/><br/> Remove unnecessary temp variable in converting to UTF-8<br/> <br/> These areas of code included a temporary that is unnecessary.<br/><br/>M inline.h<br/>M regcomp.c<br/>M sv.c<br/><br/>commit b20fa569455dea2165f2a6f4ac9dcaf39ee0b2c1<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Feb 13 22:00:55 2013 -0700<br/><br/> utf8.h: Correct macros for EBCDIC<br/> <br/> These macros were incorrect for EBCDIC. The 3 step process given in<br/> utfebcdic.h wasn&#39;t being followed.<br/><br/>M utf8.h<br/><br/>commit 085ad129ba1ecbd24afcbfd889f21298734f5e3f<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Feb 9 21:23:30 2013 -0700<br/><br/> Extract common code to an inline function<br/> <br/> This fairly short paradigm is repeated in several places; a later commit<br/> will improve it.<br/><br/>M embed.fnc<br/>M embed.h<br/>M inline.h<br/>M pp_pack.c<br/>M proto.h<br/>M sv.c<br/>M toke.c<br/>M utf8.c<br/><br/>commit fd2cfe7a5ab723a07bc3ee2addeda8bb10300b13<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Feb 7 21:35:57 2013 -0700<br/><br/> Don&#39;t use EBCDIC macro for a C language escape<br/> <br/> C recognizes &#39;\a&#39; (for BEL); just use that instead of a look-up.<br/> <br/> regen/unicode_constants.pl could be used to generate the character for<br/> the ESC (set in surrounding code), but I didn&#39;t do that because of<br/> potential bootstrapping problems when porting to an EBCDIC platform<br/> without a working perl. (The other characters generated in that .pl are<br/> less likely to cause problems when compiling perl.)<br/><br/>M regcomp.c<br/>M toke.c<br/><br/>commit 46dd7864d20ae39cffefd28d831e57b1b97abe48<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Feb 7 19:53:38 2013 -0700<br/><br/> Use byte domain EBCDIC/LATIN1 macro where appropriate<br/> <br/> The macros like NATIVE_TO_UNI will work on EBCDIC, but operate on the<br/> whole Unicode range. In the locations affected by this commit, it is<br/> known that the domain is limited to a single byte, so the simpler ones<br/> whose names contain LATIN1 may be used.<br/> <br/> On ASCII platforms, all the macros are null, so there is no effective<br/> change.<br/><br/>M handy.h<br/>M regcomp.c<br/>M utf8.c<br/><br/>commit b64046a6a258ffd6b77e5b8b96c32d931543b2e4<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Feb 7 14:31:09 2013 -0700<br/><br/> Use new clearer named #defines<br/> <br/> This converts several areas of code to use the more clearly named macros<br/> introduced in a recent commit<br/><br/>M op.c<br/>M toke.c<br/>M utf8.c<br/>M utf8.h<br/>M utfebcdic.h<br/><br/>commit 5a52ceee75ccfd0b5284d20d366b0bc1891ba0fd<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Feb 7 13:52:31 2013 -0700<br/><br/> utf8.h, utfebcdic.h: Create less confusing #defines<br/> <br/> This commit creates macros whose names mean something to me, and I don&#39;t<br/> find confusing. The older names are retained for backwards<br/> compatibility. Future commits will fix bugs I introduced from<br/> misunderstanding the meaning of the older names.<br/> <br/> The older names are now #defined in terms of the newer ones, and moved<br/> so that they are only defined once, valid for both ASCII and EBCDIC<br/> platforms.<br/><br/>M utf8.h<br/>M utfebcdic.h<br/><br/>commit bfeedb6c9f82b70b938f5d5f1e75ea85c750e048<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon Feb 4 14:22:02 2013 -0700<br/><br/> pp_ctl.c: Use isCNTRL instead of hard-coded mask<br/> <br/> This is clearer and portable to EBCDIC.<br/><br/>M pp_ctl.c<br/><br/>commit 47dffce247050957a8af0b64468bd67d44777786<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Feb 26 13:51:05 2013 -0700<br/><br/> utf8.c: is_utf8_char_slow() should use native length<br/> <br/> What is passed is the actual length of the native utf8 character. What<br/> this was calculating was the length it would be if it were a Unicode<br/> character, and then compares, apples to oranges.<br/><br/>M utf8.c<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37152.html Tue, 21 May 2013 04:24:24 +0000 [perl.git] branch smoke-me/nicholas/x2p-depend-later, updated. v5.19.0-108-g8ca91d3 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/x2p-depend-later has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/8ca91d39a4a96434bc909d710b033c8505e2cde3?hp=9e7945ee50c30a17a84968fb0c7e5c38223af6f9&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 8ca91d39a4a96434bc909d710b033c8505e2cde3<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 21:48:12 2013 +0200<br/><br/> Simplify x2p&#39;s Makefile.<br/> <br/> Eliminate plexe and plc, which relate to tests for the compiler and were<br/> added as part of commit 52cebf5efc9883c7 in May 1988. The compiler was<br/> removed by commit de1254415ffeb03b in Sept 2006.<br/> <br/> The files a2p.man and s2p.man were removed with Perl 5.000.<br/> The macros &#39;public&#39;, &#39;private&#39; and &#39;util&#39; mirror the structure of the top<br/> level Makefile.SH. However, x2p only ever used &#39;public&#39;, so simplify things<br/> by inlining the value of &#39;public&#39; in the only place that uses it.<br/> &#39;addedbyconf&#39; now only contains the value of &#39;plextract&#39;, so use the latter<br/> directly in the one place that had used &#39;addedbyconf&#39;.<br/><br/>M x2p/Makefile.SH<br/><br/>commit e1da83eac92e1d2253d6b03218386b36cb4bb0af<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 21:34:21 2013 +0200<br/><br/> Remove rules to delete *.loadmap and *.prelmap files, generated on VM/ESA<br/> <br/> These rules to clean up properly on VM/ESA were added in Oct 1998 by<br/> perforce changes 1961, 1962 and 1963 in the confperl branch. VM/ESA support<br/> was removed by commit 043fec90e88a2e23 in Aug 2012.<br/><br/>M Cross/Makefile-cross-SH<br/>M Makefile.SH<br/>M x2p/Makefile.SH<br/><br/>commit 6105164f37e277ea0eb5dec4a432b86b49489be1<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 21:26:59 2013 +0200<br/><br/> Add x2p/Makefile.SH to the *.SH files processed by the top level Makefile.<br/> <br/> This makes the top level Makefile responsible for deleting x2p/Makefile.<br/> With this, we can eliminate the &#39;sh&#39; and &#39;shextract&#39; from x2p&#39;s Makefile.<br/><br/>M Makefile.SH<br/>M x2p/Makefile.SH<br/><br/>commit 655e5c9e391de4eef96d3ad88908a53cddbf53e3<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 21:17:31 2013 +0200<br/><br/> Remove the now unused &#39;shlist&#39; Makefile targets.<br/><br/>M Makefile.SH<br/>M x2p/Makefile.SH<br/><br/>commit 9719c95bf27185afc59c14150d4f052f92217540<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 20:57:37 2013 +0200<br/><br/> Programmatically generate dependencies for all *.SH files.<br/> <br/> Previously dependencies for Makefile, config.h and makedepend were<br/> explicitly coded into verbatim sections of Makefile.SH, with most of the<br/> others being generated by makedepend.SH<br/><br/>M Makefile.SH<br/>M makedepend.SH<br/><br/>commit fc40bd89f80e1d94b62f08a3ab57f39ea3333029<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 20:25:47 2013 +0200<br/><br/> Add runtests.SH to the code that generates the targets sh and shextract.<br/> <br/> The generated Makefile is functionally identical.<br/><br/>M Makefile.SH<br/><br/>commit c0d271fb2cf4e67f892e8f1b575439d13b73a01f<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 17:14:50 2013 +0200<br/><br/> Eliminate x2p/cflags.SH. x2p&#39;s Makefile can use ../cflags<br/> <br/> x2p/Makefile is only used on *nix, so this should not present a problem.<br/><br/>M MANIFEST<br/>M Porting/exec-bit.txt<br/>M x2p/Makefile.SH<br/>D x2p/cflags.SH<br/><br/>commit 3ae7e562a2ff05c27052670c20b7ba3b7005bf7b<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 19:40:46 2013 +0200<br/><br/> Pass in to makedepend the name(s) of files that all objects depend on.<br/><br/>M Makefile.SH<br/>M makedepend.SH<br/>M x2p/Makefile.SH<br/><br/>commit 0ff64a71c493f41b23ddd052a465c3d40c3264f2<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 16:54:40 2013 +0200<br/><br/> In the Makefile, generate the value of shextract programmatically.<br/> <br/> shextract lists the files generated by shell scripts named *.SH which need<br/> deleting. Instead of maintaining it by hand, generate it in Makefile.SH from<br/> the list of *.SH files.<br/> <br/> This indirectly eliminates the last reference to F&lt;makedir&gt;. makedir.SH<br/> was eliminated by commit ebca06e95b02d1a8 and the reference to makedir.SH in<br/> Makefile.SH eliminated by commit 847471027aa42997 (both Sept 2009), but<br/> that commit missed that the reference to makedir a few lines later was<br/> related.<br/><br/>M Makefile.SH<br/><br/>commit 417de989d3cb17f83d8a6af00ff4b171a8682c8c<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 13:01:22 2013 +0200<br/><br/> Defer running makedepend in x2p/ until it&#39;s needed.<br/> <br/> We can run makedepend in x2p/ as part of the regular build process, which<br/> means that it can run as part of a parallel make. This gets a slight<br/> speedup (0.2s on this system), and increases flexibility on how x2p/Makefile<br/> is generated.<br/><br/>M Makefile.SH<br/><br/>commit 2fea0471858664126bb4c23b75f6bf15c262cd8b<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 12:49:44 2013 +0200<br/><br/> Add x2p/makefile to the dependencies for targets within x2p/<br/> <br/> This will give us more flexibility in when and how we generate it.<br/> <br/> [x2p/makefile is x2p/GNUmakefile on OS X]<br/><br/>M Makefile.SH<br/><br/>commit d730c2986a70e4fa953cb2f352b7b5ebf41ea580<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 15 12:33:05 2013 +0200<br/><br/> Remove vestigial *.SH code which can link the extracted file into ../<br/> <br/> 4 of the *.SH files have code which links the extracted file into the parent<br/> directory if the current directory ends SH. This code dates from Perl 1.<br/> It seems that the intent was that the *.SH files could live in a SH/<br/> directory, but that feature was neither used or mentioned in the<br/> documentation in Perl 1, and hasn&#39;t been used since.<br/><br/>M Cross/Makefile-cross-SH<br/>M Makefile.SH<br/>M makedepend.SH<br/>M x2p/Makefile.SH<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> Cross/Makefile-cross-SH | 7 ---<br/> MANIFEST | 1 -<br/> Makefile.SH | 68 ++++++++++++++++---------------<br/> Porting/exec-bit.txt | 1 -<br/> makedepend.SH | 39 +----------------<br/> x2p/Makefile.SH | 35 ++-------------<br/> x2p/cflags.SH | 104 -----------------------------------------------<br/> 7 files changed, 43 insertions(+), 212 deletions(-)<br/> delete mode 100755 x2p/cflags.SH<br/><br/>diff --git a/Cross/Makefile-cross-SH b/Cross/Makefile-cross-SH<br/>index e5a14b4..e83cd4c 100644<br/>--- a/Cross/Makefile-cross-SH<br/>+++ b/Cross/Makefile-cross-SH<br/>@@ -957,7 +957,6 @@ _mopup:<br/> -@test -f vms/README_vms.pod &amp;&amp; rm -f vms/README_vms.pod<br/> -rm -f perl.exp ext.libs extra.pods uni.data opmini.o<br/> -rm -f perl.export perl.dll perl.libexp perl.map perl.def<br/>- -rm -f perl.loadmap miniperl.loadmap perl.prelmap miniperl.prelmap<br/> -rm -f perl.third lib*.so.perl.third perl.3log t/perl.third t/perl.3log<br/> -rm -f perl.pixie lib*.so.perl.pixie lib*.so.Addrs<br/> -rm -f perl.Addrs perl.Counts t/perl.Addrs t/perl.Counts *perl.xok<br/>@@ -1281,12 +1280,6 @@ ctags:<br/> !NO!SUBS!<br/> <br/> $eunicefix $Makefile<br/>-case `pwd` in<br/>-*SH)<br/>- $rm -f ../$Makefile<br/>- $ln $Makefile ../$Makefile<br/>- ;;<br/>-esac<br/> $rm -f $firstmakefile<br/> <br/> # Now do any special processing required before building.<br/>diff --git a/MANIFEST b/MANIFEST<br/>index 7115372..5916b98 100644<br/>--- a/MANIFEST<br/>+++ b/MANIFEST<br/>@@ -5493,7 +5493,6 @@ x2p/a2p.h Global declarations<br/> x2p/a2p.pod Pod for awk to perl translator<br/> x2p/a2p.y A yacc grammar for awk<br/> x2p/a2py.c Awk compiler, sort of<br/>-x2p/cflags.SH A script that emits C compilation flags per file<br/> x2p/EXTERN.h Same as above<br/> x2p/find2perl.PL A find to perl translator<br/> x2p/hash.c Hashes again<br/>diff --git a/Makefile.SH b/Makefile.SH<br/>index ddb9be1..7502235 100755<br/>--- a/Makefile.SH<br/>+++ b/Makefile.SH<br/>@@ -443,16 +443,27 @@ xconfig.h: config_h.SH Cross/config-\$(CROSS_NAME).sh<br/> ;;<br/> esac<br/> <br/>+SH_to_target() {<br/>+ echo $@ | sed -e s/\\\.SH//g -e s/_/./g<br/>+}<br/>+<br/>+SH=&#39;Makefile.SH cflags.SH config_h.SH makedepend.SH myconfig.SH runtests.SH pod/Makefile.SH x2p/Makefile.SH&#39;<br/>+shextract=`SH_to_target $SH`<br/>+<br/> ## In the following dollars and backticks do not need the extra backslash.<br/>-$spitshell &gt;&gt;$Makefile &lt;&lt;&#39;!NO!SUBS!&#39;<br/>+$spitshell &gt;&gt;$Makefile &lt;&lt;!GROK!THIS!<br/> <br/>-private = preplibrary $(CONFIGPM) $(CONFIGPOD) lib/ExtUtils/Miniperl.pm git_version.h lib/buildcustomize.pl<br/>+private = preplibrary \$(CONFIGPM) \$(CONFIGPOD) lib/ExtUtils/Miniperl.pm git_version.h lib/buildcustomize.pl<br/> <br/> # Files to be built with variable substitution before miniperl<br/> # is available.<br/>-sh = Makefile.SH cflags.SH config_h.SH makedepend.SH myconfig.SH pod/Makefile.SH<br/>+sh = $SH<br/>+<br/>+shextract = $shextract<br/>+!GROK!THIS!<br/> <br/>-shextract = Makefile cflags config.h makedepend makedir myconfig pod/Makefile<br/>+## In the following dollars and backticks do not need the extra backslash.<br/>+$spitshell &gt;&gt;$Makefile &lt;&lt;&#39;!NO!SUBS!&#39;<br/> <br/> addedbyconf = UU $(shextract) pstruct<br/> <br/>@@ -589,18 +600,21 @@ perl$(OBJ_EXT): git_version.h<br/> case &quot;$usedl$static_cwd&quot; in<br/> defineundef)<br/> util_deps=&#39;$(MINIPERL_EXE) $(CONFIGPM) lib/auto/Cwd/Cwd$(DLSUFFIX) FORCE&#39;<br/>- x2p_deps=&#39;$(MINIPERL_EXE) $(CONFIGPM) $(dynamic_ext) FORCE&#39;<br/>+ x2p_deps=&quot;\$(MINIPERL_EXE) \$(CONFIGPM) \$(dynamic_ext) x2p/$firstmakefile FORCE&quot;<br/> ;;<br/> definedefine)<br/> util_deps=&#39;$(PERL_EXE) $(CONFIGPM) FORCE&#39;<br/>- x2p_deps=&#39;$(PERL_EXE) $(CONFIGPM) $(dynamic_ext) FORCE&#39;<br/>+ x2p_deps=&quot;\$(PERL_EXE) \$(CONFIGPM) \$(dynamic_ext) x2p/$firstmakefile FORCE&quot;<br/> ;;<br/> *) util_deps=&#39;$(PERL_EXE) $(CONFIGPM) FORCE&#39;<br/>- x2p_deps=&#39;$(PERL_EXE) $(CONFIGPM) FORCE&#39;<br/>+ x2p_deps=&quot;\$(PERL_EXE) \$(CONFIGPM) x2p/$firstmakefile FORCE&quot;<br/> ;;<br/> esac<br/> <br/> $spitshell &gt;&gt;$Makefile &lt;&lt;!GROK!THIS!<br/>+x2p/$firstmakefile: makedepend<br/>+ cd x2p; \$(MAKE) depend<br/>+<br/> translators: $x2p_deps<br/> @echo &quot; &quot;; echo &quot; Making x2p stuff&quot;; cd x2p; \$(LDLIBPTH) \$(MAKE) all<br/> <br/>@@ -1271,13 +1285,12 @@ _mopup:<br/> -@test -f vms/README_vms.pod &amp;&amp; rm -f vms/README_vms.pod<br/> -rm -f perl.exp ext.libs $(generated_pods) uni.data opmini.o perlmini.o pod/roffitall<br/> -rm -f perl.export perl.dll perl.libexp perl.map perl.def<br/>- -rm -f perl.loadmap miniperl.loadmap perl.prelmap miniperl.prelmap<br/> -rm -f perl.third lib*.so.perl.third perl.3log t/perl.third t/perl.3log<br/> -rm -f perl.pixie lib*.so.perl.pixie lib*.so.Addrs<br/> -rm -f perl.Addrs perl.Counts t/perl.Addrs t/perl.Counts *perl.xok<br/> -rm -f cygwin.c libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump<br/> -rm -f $(PERL_EXE) $(MINIPERL_EXE) $(LIBPERL) libperl.* microperl<br/>- -rm -f config.arch config.over $(DTRACE_H) runtests<br/>+ -rm -f config.arch config.over $(DTRACE_H)<br/> <br/> # Do not &#39;make _tidy&#39; directly.<br/> _tidy:<br/>@@ -1389,21 +1402,22 @@ MAKEDEPEND = Makefile makedepend<br/> <br/> $(FIRSTMAKEFILE): README $(MAKEDEPEND)<br/> $(MAKE) depend MAKEDEPEND=<br/>+!NO!SUBS!<br/> <br/>-config.h: config_h.SH config.sh<br/>- $(SHELL) config_h.SH<br/>+for f in $SH; do<br/>+ file=`SH_to_target $f`<br/>+ $spitshell &gt;&gt;$Makefile &lt;&lt;!GROK!THIS!<br/> <br/>-.PHONY: depend<br/>-depend: makedepend<br/>- sh ./makedepend MAKE=$(MAKE)<br/>- cd x2p; $(MAKE) depend<br/>+$file: $f config.sh<br/>+ \$(SHELL) $f<br/>+!GROK!THIS!<br/>+done<br/> <br/>-# Cannot postpone this until $firstmakefile is ready ;-)<br/>-makedepend: makedepend.SH config.sh<br/>- sh ./makedepend.SH<br/>+$spitshell &gt;&gt;$Makefile &lt;&lt;&#39;!NO!SUBS!&#39;<br/> <br/>-runtests: runtests.SH config.sh<br/>- sh ./runtests.SH<br/>+.PHONY: depend<br/>+depend: makedepend<br/>+ sh ./makedepend MAKE=$(MAKE) cflags<br/> <br/> .PHONY: test check test_prep test_prep_nodll test_prep_pre \<br/> test_prep_reonly test_tty test-tty test_notty test-notty \<br/>@@ -1576,7 +1590,7 @@ noknack: utilities<br/> nokfilenack: utilities<br/> $(RUN_PERL) -Ilib utils/perlbug -nok -s &#39;(UNINSTALLED)&#39; -F perl.nok -A<br/> <br/>-.PHONY: clist hlist shlist<br/>+.PHONY: clist hlist<br/> <br/> clist: $(c)<br/> echo $(c) | tr &#39; &#39; $(TRNL) &gt;.clist<br/>@@ -1584,12 +1598,6 @@ clist: $(c)<br/> hlist: $(h)<br/> echo $(h) | tr &#39; &#39; $(TRNL) &gt;.hlist<br/> <br/>-shlist: $(sh)<br/>- echo $(sh) | tr &#39; &#39; $(TRNL) &gt;.shlist<br/>-<br/>-Makefile: Makefile.SH ./config.sh<br/>- $(SHELL) Makefile.SH<br/>-<br/> .PHONY: distcheck<br/> distcheck: FORCE<br/> perl &#39;-MExtUtils::Manifest=&amp;fullcheck&#39; -e &#39;fullcheck()&#39;<br/>@@ -1604,12 +1612,6 @@ ctags:<br/> !NO!SUBS!<br/> <br/> $eunicefix Makefile<br/>-case `pwd` in<br/>-*SH)<br/>- $rm -f ../Makefile<br/>- $ln Makefile ../Makefile<br/>- ;;<br/>-esac<br/> $rm -f $firstmakefile<br/> <br/> # Now do any special processing required before building.<br/>diff --git a/Porting/exec-bit.txt b/Porting/exec-bit.txt<br/>index e2f445b..0073e77 100644<br/>--- a/Porting/exec-bit.txt<br/>+++ b/Porting/exec-bit.txt<br/>@@ -27,7 +27,6 @@ runtests.SH<br/> t/TEST<br/> vms/ext/filespec.t<br/> x2p/Makefile.SH<br/>-x2p/cflags.SH<br/> Porting/Maintainers.pl<br/> Porting/add-package.pl<br/> Porting/bisect.pl<br/>diff --git a/makedepend.SH b/makedepend.SH<br/>index 5669b8d..f992af3 100755<br/>--- a/makedepend.SH<br/>+++ b/makedepend.SH<br/>@@ -39,7 +39,7 @@ mkdir .depending<br/> # This script should be called with <br/> # sh ./makedepend MAKE=$(MAKE)<br/> case &quot;$1&quot; in <br/>- MAKE=*) eval $1 ;;<br/>+ MAKE=*) eval $1; shift ;;<br/> esac<br/> <br/> export PATH || (echo &quot;OOPS, this isn&#39;t sh. Desperation time. I will feed myself to sh.&quot;; sh \$0; kill \$\$)<br/>@@ -206,35 +206,12 @@ for file in `$cat .clist`; do<br/> -e &#39;s|\.c\.c|.c|&#39; $uwinfix .cout .cerr| \<br/> $uniq | $sort | $uniq &gt;&gt; .deptmp<br/> fi<br/>- echo &quot;$filebase\$(OBJ_EXT): cflags&quot; &gt;&gt; .deptmp<br/>+ echo &quot;$filebase\$(OBJ_EXT): $@&quot; &gt;&gt; .deptmp<br/> done<br/> <br/> $sed &lt;$mf &gt;$mf.new -e &#39;1,/^# AUTOMATICALLY/!d&#39;<br/> <br/>-$MAKE shlist || ($echo &quot;Searching for .SH files...&quot;; \<br/>- $echo *.SH | $tr &#39; &#39; $trnl | $egrep -v &#39;\*&#39; &gt;.shlist)<br/>-<br/>-# Now extract the dependencies on makedepend.SH and Makefile.SH<br/>-# (they should reside in the main Makefile):<br/>-rm -f .shlist.old<br/>-mv .shlist .shlist.old<br/>-$egrep -v &#39;^makedepend\.SH&#39; &lt;.shlist.old &gt;.shlist<br/>-rm -f .shlist.old<br/>-mv .shlist .shlist.old<br/>-$egrep -v &#39;^Makefile\.SH&#39; &lt;.shlist.old &gt;.shlist<br/>-rm -f .shlist.old<br/>-mv .shlist .shlist.old<br/>-$egrep -v &#39;^perl_exp\.SH&#39; &lt;.shlist.old &gt;.shlist<br/>-rm -f .shlist.old<br/>-mv .shlist .shlist.old<br/>-$egrep -v &#39;^config_h\.SH&#39; &lt;.shlist.old &gt;.shlist<br/>-rm .shlist.old<br/>-<br/> if $test -s .deptmp; then<br/>- for file in `cat .shlist`; do<br/>- $echo `$expr X$file : &#39;X\(.*\).SH&#39;`: $file $TOP/config.sh \; \<br/>- $sh $file &gt;&gt; .deptmp<br/>- done<br/> $echo &quot;Updating $mf...&quot;<br/> $echo &quot;# If this runs make out of memory, delete /usr/include lines.&quot; \<br/> &gt;&gt; $mf.new<br/>@@ -262,10 +239,6 @@ else<br/> $sed -f .hsed &gt;&gt; $mf.new<br/> &lt;.deptmp $sed -n &#39;s|h:#include &quot;\(.*\)&quot;.*$|h: \1|p&#39; | \<br/> $sed -f .hsed &gt;&gt; $mf.new<br/>- for file in `$cat .shlist`; do<br/>- $echo `$expr X$file : &#39;X\(.*\).SH&#39;`: $file $TOP/config.sh \; \<br/>- $sh $file &gt;&gt; $mf.new<br/>- done<br/> fi<br/> $rm -f $mf.old<br/> $cp $mf $mf.old<br/>@@ -273,15 +246,9 @@ $rm -f $mf<br/> $cp $mf.new $mf<br/> $rm $mf.new<br/> $echo &quot;# WARNING: Put nothing here or make depend will gobble it up!&quot; &gt;&gt; $mf<br/>-$rm -rf .deptmp UU .shlist .clist .hlist .hsed .cout .cerr<br/>+$rm -rf .deptmp UU .clist .hlist .hsed .cout .cerr<br/> rmdir .depending<br/> <br/> !NO!SUBS!<br/> $eunicefix makedepend<br/> chmod +x makedepend<br/>-case `pwd` in<br/>-*SH)<br/>- $rm -f ../makedepend<br/>- ln makedepend ../makedepend<br/>- ;;<br/>-esac<br/>diff --git a/x2p/Makefile.SH b/x2p/Makefile.SH<br/>index 3f16623..ae017b6 100755<br/>--- a/x2p/Makefile.SH<br/>+++ b/x2p/Makefile.SH<br/>@@ -77,26 +77,10 @@ PERL = $perl<br/> cat &gt;&gt;Makefile &lt;&lt;&#39;!NO!SUBS!&#39;<br/> <br/> REALPERL = ../perl<br/>-CCCMD = `sh $(shellflags) cflags &quot;optimize=&#39;$(OPTIMIZE)&#39;&quot; $@`<br/>-<br/>-public = a2p$(EXE_EXT) s2p find2perl<br/>-<br/>-private = <br/>-<br/>-manpages = a2p.man s2p.man<br/>-<br/>-util =<br/>-<br/>-sh = Makefile.SH cflags.SH<br/>-shextract = Makefile cflags<br/>+CCCMD = `sh $(shellflags) ../cflags &quot;optimize=&#39;$(OPTIMIZE)&#39;&quot; $@`<br/> <br/> pl = find2perl.PL s2p.PL<br/> plextract = find2perl s2p<br/>-plexe = find2perl.exe s2p.exe<br/>-plc = find2perl.c s2p.c<br/>-plm = a2p.loadmap<br/>-<br/>-addedbyconf = $(shextract) $(plextract)<br/> <br/> h = EXTERN.h INTERN.h ../config.h ../handy.h hash.h a2p.h str.h util.h<br/> <br/>@@ -110,7 +94,7 @@ lintflags = -phbvxac<br/> .c$(OBJ_EXT):<br/> $(CCCMD) -DPERL_FOR_X2P $*.c<br/> <br/>-all: $(public) $(private) $(util)<br/>+all: a2p$(EXE_EXT) s2p find2perl<br/> @echo &quot; &quot;<br/> <br/> a2p$(EXE_EXT): $(obj) a2p$(OBJ_EXT)<br/>@@ -149,13 +133,13 @@ a2p$(OBJ_EXT): a2p.c a2py.c a2p.h EXTERN.h util.h INTERN.h \<br/> $(CCCMD) a2p.c<br/> <br/> clean:<br/>- rm -f a2p$(EXE_EXT) psed *$(OBJ_EXT) $(plexe) $(plc) $(plm)<br/>+ rm -f a2p$(EXE_EXT) psed *$(OBJ_EXT) $(plexe) $(plc)<br/> <br/> distclean: veryclean<br/> <br/> realclean: clean<br/> -rmdir .depending<br/>- rm -f core $(addedbyconf) all<br/>+ rm -f core $(plextract) all<br/> rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old makefile.old<br/> <br/> veryclean: realclean<br/>@@ -170,7 +154,7 @@ lint:<br/> lint $(lintflags) $(defs) $(c) &gt; a2p.fuzz<br/> <br/> depend: ../makedepend<br/>- sh ../makedepend MAKE=$(MAKE)<br/>+ sh ../makedepend MAKE=$(MAKE) ../cflags<br/> <br/> clist:<br/> echo $(c) | tr &#39; &#39; $(TRNL) &gt;.clist<br/>@@ -178,9 +162,6 @@ clist:<br/> hlist:<br/> echo $(h) | tr &#39; &#39; $(TRNL) &gt;.hlist<br/> <br/>-shlist:<br/>- echo $(sh) | tr &#39; &#39; $(TRNL) &gt;.shlist<br/>-<br/> $(plextract):<br/> $(RUN) $(PERL) -I../lib $@.PL<br/> <br/>@@ -194,10 +175,4 @@ $(obj):<br/> makedepend: depend<br/> !NO!SUBS!<br/> $eunicefix Makefile<br/>-case `pwd` in<br/>-*SH)<br/>- $rm -f ../Makefile<br/>- $ln Makefile ../Makefile<br/>- ;;<br/>-esac<br/> rm -f $firstmakefile<br/>diff --git a/x2p/cflags.SH b/x2p/cflags.SH<br/>deleted file mode 100755<br/>index caeb336..0000000<br/>--- a/x2p/cflags.SH<br/>+++ /dev/null<br/>@@ -1,104 +0,0 @@<br/>-#!/bin/sh<br/>-<br/>-case $PERL_CONFIG_SH in<br/>-&#39;&#39;)<br/>- if test -f config.sh; then TOP=.;<br/>- elif test -f ../config.sh; then TOP=..;<br/>- elif test -f ../../config.sh; then TOP=../..;<br/>- elif test -f ../../../config.sh; then TOP=../../..;<br/>- elif test -f ../../../../config.sh; then TOP=../../../..;<br/>- else<br/>- echo &quot;Can&#39;t find config.sh.&quot;; exit 1<br/>- fi<br/>- . $TOP/config.sh<br/>- ;;<br/>-esac<br/>-: This forces SH files to create target in same directory as SH file.<br/>-: This is so that make depend always knows where to find SH derivatives.<br/>-case &quot;$0&quot; in<br/>-*/cflags.SH) cd `expr X$0 : &#39;X\(.*\)/&#39;` ;;<br/>-cflags.SH) ;;<br/>-*) case `pwd` in<br/>- */x2p) ;;<br/>- *) if test -d x2p; then cd x2p<br/>- else echo &quot;Can&#39;t figure out where to write output.&quot;; exit 1<br/>- fi;;<br/>- esac;;<br/>-esac<br/>-echo &quot;Extracting x2p/cflags (with variable substitutions)&quot;<br/>-: This section of the file will have variable substitutions done on it.<br/>-: Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!.<br/>-: Protect any dollar signs and backticks that you do not want interpreted<br/>-: by putting a backslash in front. You may delete these comments.<br/>-rm -f cflags<br/>-$spitshell &gt;cflags &lt;&lt;!GROK!THIS!<br/>-!GROK!THIS!<br/>-<br/>-: In the following dollars and backticks do not need the extra backslash.<br/>-$spitshell &gt;&gt;cflags &lt;&lt;&#39;!NO!SUBS!&#39;<br/>-case $PERL_CONFIG_SH in<br/>-&#39;&#39;)<br/>- if test -f config.sh; then TOP=.;<br/>- elif test -f ../config.sh; then TOP=..;<br/>- elif test -f ../../config.sh; then TOP=../..;<br/>- elif test -f ../../../config.sh; then TOP=../../..;<br/>- elif test -f ../../../../config.sh; then TOP=../../../..;<br/>- else<br/>- echo &quot;Can&#39;t find config.sh.&quot;; exit 1<br/>- fi<br/>- . $TOP/config.sh<br/>- ;;<br/>-esac<br/>-<br/>-case &quot;X$1&quot; in<br/>-Xoptimize=*|X&quot;optimize=*&quot;)<br/>- eval &quot;$1&quot;<br/>- shift<br/>- ;;<br/>-esac<br/>-<br/>-also=&#39;: &#39;<br/>-case $# in<br/>-1) also=&#39;echo 1&gt;&amp;2 &quot; CCCMD = &quot;&#39;<br/>-esac<br/>-<br/>-case $# in<br/>-0) set *.c; echo &quot;The current C flags are:&quot; ;;<br/>-esac<br/>-<br/>-set `echo &quot;$* &quot; | sed -e &#39;s/\.[oc] / /g&#39; -e &#39;s/\.obj / /g&#39; -e &quot;s/\\$obj_ext / /g&quot;`<br/>-<br/>-for file do<br/>-<br/>- case &quot;$#&quot; in<br/>- 1) ;;<br/>- *) echo $n &quot; $file.c $c&quot; ;;<br/>- esac<br/>-<br/>- : allow variables like str_cflags to be evaluated<br/>-<br/>- eval &#39;eval ${&#39;&quot;${file}_cflags&quot;&#39;-&quot;&quot;}&#39;<br/>-<br/>- : or customize here<br/>-<br/>- case &quot;$file&quot; in<br/>- a2p) ;;<br/>- a2py) ;;<br/>- hash) ;;<br/>- str) ;;<br/>- util) ;;<br/>- walk) ;;<br/>- *) ;;<br/>- esac<br/>-<br/>- ccflags=&quot;`echo $ccflags | sed -e &#39;s/-DMULTIPLICITY//&#39;`&quot;<br/>-<br/>- echo &quot;$cc -c $ccflags $optimize&quot;<br/>- eval &quot;$also &quot;&#39;&quot;$cc -c $ccflags $optimize&quot;&#39;<br/>-<br/>- . $TOP/config.sh<br/>-<br/>-done<br/>-!NO!SUBS!<br/>-chmod 755 cflags<br/>-$eunicefix cflags<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37151.html Mon, 20 May 2013 20:19:58 +0000 [perl.git] branch smoke-me/nicholas/x2p-depend-later, created. v5.19.0-96-g9e7945e by Nicholas Clark In perl.git, the branch smoke-me/nicholas/x2p-depend-later has been created<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/9e7945ee50c30a17a84968fb0c7e5c38223af6f9?hp=0000000000000000000000000000000000000000&gt;<br/><br/> at 9e7945ee50c30a17a84968fb0c7e5c38223af6f9 (commit)<br/><br/>- Log -----------------------------------------------------------------<br/>commit 9e7945ee50c30a17a84968fb0c7e5c38223af6f9<br/>Merge: 39ecab1 7df6ffa<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 20 21:42:33 2013 +0200<br/><br/> Merge the pack refactoring to blead.<br/><br/>commit 7df6ffa3fb2efaa96f5e6001f1cc311ad9f8b185<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 20 21:40:27 2013 +0200<br/><br/> Notes in perldelta for the tiny XS-visible changes of the pack refactoring.<br/><br/>M pod/perldelta.pod<br/><br/>commit 228e69a781c23b2599bbd89f1de29c212f10ea31<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 8 10:40:07 2013 +0200<br/><br/> Annotate the &quot;cold&quot; paths in pp_pack.c with UNLIKELY().<br/> <br/> The usual case is nice regular bytes in the host&#39;s nice regular order.<br/><br/>M pp_pack.c<br/><br/>commit 545872c5eddf1f00b9826a3d8d682387f1c5049d<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 18:25:53 2013 +0200<br/><br/> Eliminate the implementations of [hv]to[vh][ls] for mixed-endian systems.<br/> <br/> As pp_pack.c has had mixed-endian support removed, there is little point in<br/> keeping code in perl.h and util.c only needed for architectures that cannot<br/> be built.<br/><br/>M perl.h<br/>M util.c<br/><br/>commit 1cb43330cc18f2eee5ab1eb58e65991407f4b243<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 18:17:39 2013 +0200<br/><br/> Eliminate Perl_my_swabn(), as it is now unused.<br/> <br/> It is not marked as part of the API, and no code on CPAN is using it.<br/><br/>M embed.fnc<br/>M embed.h<br/>M proto.h<br/>M util.c<br/><br/>commit 3a88beaa68dbb5bad93145daa0c829e0aeb40adb<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 17:39:42 2013 +0200<br/><br/> When endian-swapping in pack, simply copy the bytes in reverse order.<br/> <br/> This should restore support for big endian Crays. It doesn&#39;t support<br/> mixed-endian systems.<br/><br/>M embed.fnc<br/>M pp_pack.c<br/>M proto.h<br/><br/>commit aaec8192358ffb8080ad85754ea9aeca93b06c8b<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 16:22:08 2013 +0200<br/><br/> Pass &#39;needs_swap&#39; as a parameter to SHIFT_BYTES.<br/> <br/> It feels wrong to have it as an implicit parameter sucked in via the textual<br/> expansion of the macro. Whilst it can be derived from the parameter<br/> &#39;datumtype&#39;, it seems that the C compiler generates a lot less efficient code<br/> that way.<br/><br/>M pp_pack.c<br/><br/>commit 20aa3a3813ca2068a61ea9582e99df57cc735e62<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 15:15:54 2013 +0200<br/><br/> When endian-swapping in unpack, simply copy the bytes in reverse order.<br/> <br/> It is considerably simpler to re-order the bytes before reading them into<br/> the variable of the desired type, than to read into the variable and then<br/> need a specialised &quot;reverse this integer&quot; function for each size of integer.<br/> <br/> This should restore support for big endian Crays. It doesn&#39;t support<br/> mixed-endian systems. Support for mixed-endian systems can be restored (if<br/> needed) by re-ordering the bytes correctly at the locations which currently<br/> only know how to reverse the bytes.<br/><br/>M pp_pack.c<br/><br/>commit cd7e75121be11e7979933a8f7a47cd842a685157<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 12:23:00 2013 +0200<br/><br/> Fold the implementation of DO_BO_UNPACK into SHIFT_BYTES(), its only user.<br/><br/>M pp_pack.c<br/><br/>commit 7285e3f43c94010f09aa1b7a3ccbdbe7de1aa3e8<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 11:53:17 2013 +0200<br/><br/> Re-implement SHIFT16 and SHIFT32 as wrappers to SHIFT_BYTES.<br/><br/>M pp_pack.c<br/><br/>commit e396d2357dcec18c01b1cc78d9edc80a3aa4066d<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 10:08:53 2013 +0200<br/><br/> Refactor the two uses of SHIFT{16,32} not followed by DO_BO_UNPACK().<br/> <br/> There is one place where SHIFT16() is not immediately followed by<br/> DO_BO_UNPACK() (&#39;n!&#39; and &#39;v!&#39;), and one place where SHIFT32() is not<br/> immediately followed by DO_BO_UNPACK() (&#39;N!&#39; and &#39;V!&#39;). Every other use of<br/> either macro is followed by DO_BO_UNPACK(). For the two locations that don&#39;t<br/> have DO_BO_UNPACK(), the modifiers &#39;&lt;&#39; and &#39;&gt;&#39; are illegal, hence<br/> DO_BO_UNPACK() will always be a no-op. Hence add DO_BO_UNPACK() to both<br/> (which permits refactoring to simplify things), and add assert()s that the<br/> assumptions are true.<br/><br/>M pp_pack.c<br/><br/>commit 2b4ad5699f46c7f63185ad4e7d1f61e16aaa73f6<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 09:25:39 2013 +0200<br/><br/> Remove the now unused &#39;type&#39; argument from the macros DO_BO_(UN)?PACK.<br/><br/>M pp_pack.c<br/><br/>commit e8966daba327099373354b8935491872e853160e<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 20:40:34 2013 +0200<br/><br/> As DO_BO_(UN)?PACK are now implemented with my_swabn(), simplify &#39;J&#39; and &#39;j&#39;.<br/> <br/> The conditionally compiled code to figure out the correct named integer<br/> size for UVs and IVs is no longer needed, as my_swabn() will swap UVs and<br/> IVs, whatever their length.<br/><br/>M pp_pack.c<br/>M t/porting/diag.t<br/><br/>commit 0c0fa9f456cec3d6fd9e033a5024063564ee1ca7<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 19:58:10 2013 +0200<br/><br/> Merge the identical definitions of DO_BO_UNPACK and DO_BO_PACK.<br/> <br/> Delete the now-unused mixed-endian definitions of DO_BO_UNPACK and<br/> DO_BO_PACK, and the macro BO_CANT_DOIT, as they were the last two things<br/> using it.<br/><br/>M pp_pack.c<br/><br/>commit a1219b5e0bb6c311848c834f67e70ff7a19c6bf4<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 19:41:10 2013 +0200<br/><br/> Swap byte order in DO_BO_(UN)?PACK based on a variable needs_swap.<br/> <br/> Add the macro NEEDS_SWAP to initialise needs_swap based on<br/> TYPE_ENDIANNESS(datumtype). This makes the two definitions of DO_BO_UNPACK<br/> identical, and the two definitions of DO_BO_PACK identical.<br/> <br/> This also makes building pp_pack.c on a mixed endian byteorder architecture<br/> a compile time error. The commit adds pointers on where to add code to<br/> re-instate support for such architectures.<br/><br/>M pp_pack.c<br/><br/>commit e8fda8c499f46bb801215ff1dbea51c1f3007a6c<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 18:43:26 2013 +0200<br/><br/> DO_BO_{UN,}PACK can use my_swabn() directly.<br/> <br/> This removes the only users of my_{be,le,h}to{be,le,h}n, so remove the<br/> definitions for those macros.<br/><br/>M perl.h<br/>M pp_pack.c<br/><br/>commit 7e38f754fea50c46f3571cd67982e061b3cf8304<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 18:05:24 2013 +0200<br/><br/> Use DO_BO_{UN,}PACK in place of DO_BO_UNPACK_{N,PC}<br/> <br/> Also, eliminate the intermediate macros DO_BO_PACK_PTR and DO_BO_UNPACK_PTR.<br/><br/>M pp_pack.c<br/><br/>commit 79be8fb4ac8fa99573841ce07cea480399422f8f<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 17:16:18 2013 +0200<br/><br/> Eliminate my_{hto[bl]e,[bl]etoh}{16,32,64,s,i,l} as nothing now uses them.<br/><br/>M embed.fnc<br/>M embed.h<br/>M perl.h<br/>M proto.h<br/>M util.c<br/><br/>commit 68a0946fb4222dd6bcf5c2881bf6cd64c2c2e5ef<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 16:54:12 2013 +0200<br/><br/> In pp_pack.c, refactor DO_BO_(UN)?PACK to use my_letohn etc<br/> <br/> Previously they were using a my_letoh* function for the appropriate size.<br/> <br/> This commit probably breaks fixed 16 and 32 bit templates on big endian<br/> Crays where sizeof(short) and sizeof(int) are 8. A future commit will<br/> restore support. (Although it&#39;s not clear whether such Crays can still<br/> build blead cleanly, as we&#39;ve not had any feedback since Boeing<br/> decommissioned their Cray.)<br/><br/>M pp_pack.c<br/><br/>commit 86c6fce076648c5abe5ab491fec9d3142d93bde1<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 16:36:09 2013 +0200<br/><br/> In pp_pack.c, refactor DO_BO_(UN)?PACK_PTR to use my_letohn etc<br/> <br/> Previously they were casting the pointer to an integer value, calling<br/> a my_letoh* function for the appropriate size, and casting the return value<br/> back to a pointer.<br/><br/>M pp_pack.c<br/><br/>commit df609c5f9dbf07fc7a18075911f5eaefdeea3ffd<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 16:22:01 2013 +0200<br/><br/> In pp_pack.c, refactor DO_BO_(UN)?PACK_N to use sizeof() on the variable.<br/> <br/> Previously they were using sizeof() on the type argument passed to the<br/> macro. This change makes their implementation more like DO_BO_(UN)?PACK<br/> and DO_BO_(UN)?PACK_PTR.<br/><br/>M pp_pack.c<br/><br/>commit 3cc90e2e712615f2081743c38153954d60e3f0df<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 15:46:02 2013 +0200<br/><br/> Refactor macros in pp_pack.c, removing support for mixed-endian byte orders.<br/> <br/> The byte-order handling can be simplified considerably if we don&#39;t have to<br/> support mixed-endian systems. It&#39;s not clear whether Perl 5.000 even<br/> compiled on PDP-11s, let alone more recent versions.<br/> <br/> Support probably can be added back at the end of the refactoring, if someone<br/> has time and a PDP-11 to test on, but for the intermediate stages it is a<br/> lot easier not to need to think about such platforms.<br/><br/>M pp_pack.c<br/><br/>commit 691a44df41bbec11b634fc7bbf78a6eeb1f768a3<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 14:40:04 2013 +0200<br/><br/> Eliminate the conditionally-compiled fallback functions for htonl etc.<br/> <br/> These are now only being used for mixed-endian platforms which do not<br/> provide their own htnol (etc) functions. Given that the fallbacks have been<br/> buggy since they were added in Perl 3.0, it&#39;s safe to conclude that no<br/> mixed-endian platforms were ever using these functions.<br/> <br/> It&#39;s also unclear why these functions were ever marked as &#39;A&#39;, part of the<br/> API. XS code can&#39;t call them directly, as it can&#39;t rely on them being<br/> compiled. Unsurprisingly, no code on CPAN references them.<br/><br/>M embed.fnc<br/>M embed.h<br/>M perl.h<br/>M proto.h<br/>M util.c<br/><br/>commit 66bb80e4324617840aa70c8af410bf76eedcbea1<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 13:28:20 2013 +0200<br/><br/> Remove buggy loop-based byte swapping code.<br/> <br/> The irony is that the union-based code special-cased for little endian<br/> systems actually works everywhere, even on mixed-endian systems.<br/><br/>M pod/perldiag.pod<br/>M util.c<br/><br/>commit 36bb5e1d607385b423cc4360bce20f3043900790<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 08:20:57 2013 +0200<br/><br/> Update the Win32 miniperl conditional compilation, for the htonl etc changes.<br/> <br/> As of commit 19253ae62cd13079 (Oct 2012), miniperl on Win32 avoids using<br/> Winsock. The win32_* wrappers for htonl etc had used the pre-processor<br/> macro MYSWAP to conditionally compile in the correct code. However, MYSWAP<br/> was defined as a side effect of using the htonl etc wrappers in util.c,<br/> which are no longer needed. Hence use the WIN32_NO_SOCKETS macro directly<br/> in win32sck.c for the correct conditional compilation.<br/><br/>M win32/win32sck.c<br/><br/>commit e4b03fedd1c92616345d5428c7b0d2981b0e00d8<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sat May 4 22:50:12 2013 +0200<br/><br/> Fallbacks for ntohl, ntohs, htonl and htons for little endian systems.<br/> <br/> The host byteorder agnostic functions in util.c are now only used on mixed<br/> endian systems.<br/><br/>M perl.h<br/><br/>commit 8e2d7c446d5ab31e6c8e661a3c17f0f0b199d525<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sat May 4 22:03:59 2013 +0200<br/><br/> Provide ntohl, ntohs, htonl and htons no-op macros on big endian systems.<br/> <br/> This means that there are always macros or functions for ntohl, ntohs,<br/> htonl and htons available, so eliminate use of HAS_NTOHL etc, and<br/> unconditionally compile the code that it was protecting. However, as code<br/> on CPAN is using these guard macros, define all of them in perl.h<br/> <br/> (Technically the 4 are not quite no-ops, as they truncate their values to<br/> 32 or 16 bits, to be consistent with the implementations for platforms which<br/> need re-ordering.)<br/><br/>M perl.h<br/>M pp_pack.c<br/>M pp_sys.c<br/><br/>commit 260c6fee6deba90b42b0734fbdea2fea1d69c9bc<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sat May 4 21:30:27 2013 +0200<br/><br/> Provide vtohl, vtohs, htovl and htovs no-op macros on little endian systems.<br/> <br/> This means that there are always macros or functions for vtohl, vtohs,<br/> htovl and htovs available, so eliminate HAS_VTOHL etc, and unconditionally<br/> compile the code that it was protecting. grep.cpan.me shows that no code on<br/> CPAN uses any of these macros.<br/> <br/> (Technically the 4 are not quite no-ops, as they truncate their values to<br/> 32 or 16 bits, to be consistent with the implementations for platforms which<br/> need re-ordering.)<br/><br/>M perl.h<br/>M pp_pack.c<br/>M util.c<br/><br/>commit 5ae724797a32a9a98d51759460d87f419fdd5a45<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sat May 4 21:07:14 2013 +0200<br/><br/> vtohl, vtohs, htovl and htovs are no-ops on 64 bit little endian systems.<br/> <br/> Previously they were implemented as function calls on 64 bit little endian<br/> systems. Bit endian systems implemented them as byte-swapping macros. 32<br/> little endian system didn&#39;t implement them at all. 32 and 64 bit little<br/> endian systems now behave identically.<br/><br/>M perl.h<br/><br/>commit fcdf154797de71462d8c8f5606482a86ed73943a<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Fri May 3 17:06:01 2013 +0200<br/><br/> Eliminate the definitions for DO_BO_PACK_P and DO_BO_UNPACK_P.<br/> <br/> Commit 07409e015252427f in April 2005 replaced all the uses of these two<br/> macros with DO_BO_PACK_PC and DO_BO_UNPACK_PC.<br/><br/>M pp_pack.c<br/><br/>commit f8e5a5db38586c726249f161f1fbb581d1738ca2<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Fri May 3 15:52:38 2013 +0200<br/><br/> Eliminate pre-5.9.x conditional code for PERL_PACK_CAN_SHRIEKSIGN<br/> <br/> PERL_PACK_CAN_SHRIEKSIGN has been unconditionally defined for versions 5.9.x<br/> and greater, and undefined for 5.8.x. As we are never going to need to<br/> port changes back to maint-5.8 any more, eliminate all the 5.8.x related code<br/> and the macro that supports it.<br/><br/>M packsizetables.c<br/>M pp_pack.c<br/>M regen/genpacksizetables.pl<br/><br/>commit 5fa237154915dfcb787e0c5403e6260482a5fb3e<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Fri May 3 15:26:34 2013 +0200<br/><br/> Eliminate pre-5.9.x conditional code for PERL_PACK_CAN_BYTEORDER<br/> <br/> PERL_PACK_CAN_BYTEORDER has been unconditionally defined for versions 5.9.x<br/> and greater, and undefined for 5.8.x. As we are never going to need to<br/> port changes back to maint-5.8 any more, eliminate all the 5.8.x related code,<br/> and the macro that supports it.<br/><br/>M pp_pack.c<br/><br/>commit 39ecab1c690aee1a1fdeefb6c706448af5d2981f<br/>Merge: 6d5abc6 843b375<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 20 21:12:01 2013 +0200<br/><br/> Merge the reworking of how genpacksizetables.pl is used.<br/><br/>commit 843b37592a564e2e84c28a00619ac6c132c6dbc9<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 12:06:39 2013 +0200<br/><br/> Add regen/genpacksizetables.pl to t/porting/regen.t<br/><br/>M t/porting/regen.t<br/><br/>commit e3f061af802f7db7c760d810c495d83763fff668<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 11:54:19 2013 +0200<br/><br/> Move genpacksizetables.pl to regen/genpacksizetables.pl<br/><br/>M MANIFEST<br/>D genpacksizetables.pl<br/>M packsizetables.c<br/>A regen/genpacksizetables.pl<br/><br/>commit 6b05cb8115fc15fed0e6bf162a9cc797222572ee<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 11:47:30 2013 +0200<br/><br/> Refactor genpacksizetables.pl to use regen/regen_lib.pl<br/><br/>M genpacksizetables.pl<br/>M packsizetables.c<br/><br/>commit 298bc19c0935302faa4957de141245bb64c6b2df<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 11:23:11 2013 +0200<br/><br/> Extract the generated packprops array into packsizetables.c.<br/> <br/> The C source is the output from genpacksizetables.pl<br/> Previously it was pasted into pp_pack.c<br/> <br/> LocalWords: packprops<br/><br/>M MANIFEST<br/>A packsizetables.c<br/>M pp_pack.c<br/><br/>commit e2add64b70b6d5c55a6598257032bf0777c5976c<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 11:08:05 2013 +0200<br/><br/> Propagate a change from commit 1651fc447620d361 into genpacksizetables.pl.<br/> <br/> pp_pack.c contains a table generated by genpacksizetables.pl, pasted into the<br/> C source. The C source was updated by commit 1651fc447620d361 in April 2007,<br/> but the table used to generate the code was not.<br/><br/>M genpacksizetables.pl<br/><br/>commit d8a3828919c2d8a9e1344ba4d05795d37ed9cdb6<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 13 16:18:12 2013 -0600<br/><br/> genpacksizetables.pl: Correct comment typo<br/><br/>M genpacksizetables.pl<br/><br/>commit 6d5abc62848da0e110869e2b13c68bf498ff3a90<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed Mar 6 16:27:08 2013 +0100<br/><br/> Change LIKELY() and UNLIKELY() to cast their first argument to a bool.<br/> <br/> This avoids problems such as pointers being compared with the literal value 1.<br/> Suggested by Zefram.<br/> <br/> Note that this is technically a change of behaviour, as the macro EXPECT(),<br/> which they are both both wrappers for, returns its value, so they will now<br/> be returning TRUE or FALSE, rather than the actual value passed to them.<br/> However, all uses in the core and on CPAN are only within if() statements, so<br/> this should not make any difference in practice.<br/><br/>M perl.h<br/><br/>commit b2bf251fd850e281217ec1d042c1839e3ed4a09c<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat May 18 14:05:00 2013 -0600<br/><br/> handy.h: Change the error return of two macros<br/> <br/> These two undocumented macros returned the REPLACEMENT CHARACTER if the<br/> input was outside the Latin1 range. This was contrary to all other<br/> similar macros, which return their input if it is invalid. It caused<br/> warnings in some (dumber than average) compilers.<br/> <br/> These macros are undocumented; this changes the behavior only of illegal<br/> inputs to them.<br/><br/>M handy.h<br/><br/>commit cfe934daf72e37a0980ac3183d678e49a26726b3<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat May 18 13:55:50 2013 -0600<br/><br/> regcomp.c: Add comment<br/><br/>M regcomp.c<br/><br/>commit 4f48919406dde7316da0835587373a50763e73ae<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat May 18 13:06:47 2013 -0600<br/><br/> utf8.c: White space only.<br/> <br/> Indent in newly formed block<br/><br/>M utf8.c<br/><br/>commit a3f3bf18711ca1acde9e5a41d4c7b1f3adc4afd1<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat May 18 13:09:05 2013 -0600<br/><br/> fold_grind.t: Add tests<br/> <br/> fold-grind stresses the /i regex handling by reading the Unicode folding<br/> rules and creating tests for problematic cases, as well as some<br/> non-problematic ones.<br/> <br/> Because of the large number of tests generated, it otherwise avoids<br/> tests that it doesn&#39;t think are problematic.<br/> <br/> Problematic cases include those whose folds cross the ordinal 127/128 or<br/> 255/256 boundaries, along with other considerations.<br/> <br/> Until this commit, fold_grind failed to realize that even if the pair of<br/> characters currently being tested don&#39;t cross those boundaries, if their<br/> eventual folds do, this could be problematic. Suppose X and Y are both<br/> on the same side of the boundaries, and both fold to Z which is on<br/> another side. Then X and Y should be equivalent under /i even if the<br/> fold to Z is prohibited because of /aa or /l. fold_grind was<br/> overzealous in pruning such tests.<br/> <br/> The previous patch fixed bugs in handling such cases; and this patch<br/> fixes the tests to look for similar things that might possibly arise in<br/> the future.<br/> <br/> Interestingly, this bug came to light during porting to an EBCDIC<br/> platform. The reason is that because of the different collation order,<br/> fold_grind chose one of the buggy cases to test as one its<br/> non-problematic tests.<br/><br/>M t/re/fold_grind.t<br/><br/>commit 1ca267a56acf698557ec1deec44af651acc88696<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat May 18 08:25:16 2013 -0600<br/><br/> Fix multi-char fold edge case<br/> <br/> use locale;<br/> fc(&quot;\N{LATIN CAPITAL LETTER SHARP S}&quot;)<br/> eq 2 x fc(&quot;\N{LATIN SMALL LETTER LONG S}&quot;)<br/> <br/> should return true, as the SHARP S folds to two &#39;s&#39;s in a row, and the<br/> LONG S is an antique variant of &#39;s&#39;, and folds to s. Until this commit,<br/> the expression was false.<br/> <br/> Similarly, the following should match, but didn&#39;t until this commit:<br/> <br/> &quot;\N{LATIN SMALL LETTER SHARP S}&quot; =~ /\N{LATIN SMALL LETTER LONG S}{2}/iaa<br/> <br/> The reason these didn&#39;t work properly is that in both cases the actual<br/> fold to &#39;s&#39; is disallowed. In the first case because of locale; and in<br/> the second because of /aa. And the code wasn&#39;t smart enough to realize<br/> that these were legal.<br/> <br/> The fix is to special case these so that the fold of sharp s (both<br/> capital and small) is two LONG S&#39;s under /aa; as is the fold of the<br/> capital sharp s under locale. The latter is user-visible, and the<br/> documentation of fc() now points that out. I believe this is such an<br/> edge case that no mention of it need be done in perldelta.<br/><br/>M lib/locale.t<br/>M pod/perlfunc.pod<br/>M regcharclass.h<br/>M regcomp.c<br/>M regen/regcharclass_multi_char_folds.pl<br/>M t/uni/fold.t<br/>M utf8.c<br/><br/>commit 519101418837cf0edacb710b2b38b42dad6e47c1<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Fri May 17 23:07:05 2013 -0600<br/><br/> Expand flags parameter from boolean in _to_fold_latin1<br/> <br/> This will be used in future commits to pass more flags.<br/><br/>M embed.fnc<br/>M proto.h<br/>M regcomp.c<br/>M regexec.c<br/>M utf8.c<br/><br/>commit f2e063754de41c901afa81619aeace2fb9d03f9c<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu May 16 21:37:43 2013 -0600<br/><br/> unicode_constants.h: Add some #defines<br/> <br/> These will be used in future commits<br/><br/>M regen/unicode_constants.pl<br/>M unicode_constants.h<br/><br/>commit a4f12ed78e91a49ab4fec1f1e637d980366cbc1a<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed May 15 20:55:27 2013 -0600<br/><br/> utf8.c: Replace two macro calls with equiv single<br/> <br/> UTF8_IS_ABOVE_LATIN1() is equivalent to<br/> (! UTF8_IS_INVARIANT &amp;&amp; !UTF8_IS_DOWNGRADEABLE_START)<br/> <br/> So we can use just it, for clearer code with fewer branches.<br/><br/>M utf8.c<br/><br/>commit 33bdd83dc2db4d07c1540394340770a6a07e793e<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat May 11 16:00:02 2013 -0600<br/><br/> lib/charnames.t: Fix wrongly complemented test<br/> <br/> The &#39;if&#39; test should be the opposite of what it is. I believe I had it<br/> this way for forcing the branch to be taken during testing, and forgot<br/> to restore it. It only matters if Perl is compiled with early Unicodes,<br/> or on a non-ASCII platform.<br/><br/>M lib/charnames.t<br/><br/>commit 91638220a6a521d89235c0a8e51d53f96e0e67c8<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu May 9 20:48:40 2013 -0600<br/><br/> t/re/fold_grind.t: White space only<br/> <br/> Commit 3345a47950127cf99a197eba4dce9c91f7bc9139 created a new<br/> block; but didn&#39;t indent it. This commit does.<br/><br/>M t/re/fold_grind.t<br/><br/>commit 58a428bba943d9d3e6057e7ea3202ea3562c557a<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue May 7 10:04:40 2013 -0600<br/><br/> perlapi: Move &#39;experimental&#39; warning to front of entries<br/> <br/> In a long multi-paragraph entry, the fact that the described function is<br/> considered experimental may be lost, as it comes at the end. This just<br/> moves it to the front.<br/><br/>M autodoc.pl<br/><br/>commit fdfb35c800b283d7f03f2b03dc5a1adb81a4a6e4<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue May 7 10:01:58 2013 -0600<br/><br/> regcomp.c: Remove always-true test<br/> <br/> In this code, j is guaranteed to be above 255, so no need to test for<br/> that.<br/><br/>M regcomp.c<br/><br/>commit ff5deb98f57138ca084471a3abb7b702b1347af8<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun May 5 18:26:39 2013 -0600<br/><br/> regcomp.c: White-space only<br/> <br/> The previous commit allows us to outdent a largish block, reflowing<br/> things to fit into the extra available width, and saving a few vertical<br/> pixels.<br/><br/>M regcomp.c<br/><br/>commit b35bbc3f802dc4b4abbbc28ed19bc5108f2b7ef1<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sun May 5 10:40:56 2013 -0600<br/><br/> regcomp.c: Reorder two &#39;if&#39;s so shorter branches are first<br/> <br/> This makes it easier to understand what is going on<br/><br/>M regcomp.c<br/><br/>commit b9cc4f69dc87bbd21b54bb9a4466203cf97afacc<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat May 4 22:22:53 2013 -0600<br/><br/> perllocale: Update to mention fc(), \F<br/><br/>M pod/perllocale.pod<br/><br/>commit d3cb55c1b8a3b80c74a4fde3bd7b67b7af31baea<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat May 4 21:23:05 2013 -0600<br/><br/> regcomp.c: Clarify comment<br/><br/>M regcomp.c<br/><br/>commit a78bc3c6c5c9dd76fdfbdae88ef4e89136aff637<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat May 4 20:23:14 2013 -0600<br/><br/> pp.c: Eliminate custom macro and use Copy() instead<br/> <br/> I think it&#39;s clearer to use Copy. When I wrote this custom macro, we<br/> didn&#39;t have the infrastructure to generate a UTF-8 encoded string at<br/> compile time.<br/><br/>M pp.c<br/>M regen/unicode_constants.pl<br/>M unicode_constants.h<br/><br/>commit a96bc63507f57f3547f982d5e9a8b95f68e87e3b<br/>Author: Dagfinn Ilmari Manns&Atilde;&yen;ker &lt;ilmari@ilmari.org&gt;<br/>Date: Sat May 4 20:18:35 2013 -0600<br/><br/> perl #117865] [PATCH] Eliminate useless variable and sizeof(char)<br/> <br/> bufsiz is always just set from bsiz (via a useless multiplication by<br/> sizeof(char), which is by definition 1), so instead of trying to keep<br/> them in sync, just get rid of bufsiz use bsiz directly# Please enter the commit message for your changes. Lines starting<br/><br/>M util.c<br/><br/>commit 7ccde1209c3d4319a2e0ab9a4528f6abc8eec0d2<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat May 4 16:09:39 2013 -0600<br/><br/> op.c: Don&#39;t fold constant fc() in locale<br/> <br/> We do compile time folding of calls to ops with constant parameters.<br/> This should be skipped if the op&#39;s result depends on locale, and it is<br/> being called from within the scope of &#39;use locale&#39;, as the result is not<br/> known until runtime. fc() was folding anyway.<br/> <br/> There is no test, as this only shows up when run in a locale that it<br/> makes a difference in, and there is no guarantee that such a locale<br/> would occur on any computer, and it is a real pain to go searching<br/> through the computer&#39;s available locales for such a one for just this<br/> error.<br/><br/>M op.c<br/><br/>commit 8c869419331313c43ddda5b1eecd01939b013125<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 30 08:42:08 2013 -0600<br/><br/> autodoc.pl: Don&#39;t list undocumented deprecated fcns in API<br/> <br/> autodoc creates a list of all the undocumented functions that are part<br/> of the API. It omits ones that are experimental and whose API may<br/> change; and now it omits ones that are deprecated (and whose API is<br/> planned to change to be non-existent)<br/><br/>M autodoc.pl<br/><br/>commit d4e99c76278c7e400307b1a7ceeb3b27676dfd3d<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Tue Apr 30 08:39:44 2013 -0600<br/><br/> autodoc.pl: Add note for deprecated functions<br/> <br/> This causes each deprecated function to have a prominent note to that<br/> effect in its API documentation.<br/><br/>M autodoc.pl<br/>M mg.c<br/>M utf8.c<br/><br/>commit 6ef8d77a18f45460857e0866d103b834ec25d432<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Sat Apr 27 08:59:19 2013 -0600<br/><br/> embed.fnc: Slight clarification in comments<br/><br/>M embed.fnc<br/><br/>commit 2e1414cec3028c7f6c19d1229a4b9a460267fb15<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Mon May 20 10:39:56 2013 -0600<br/><br/> Add tests for case-change macros API<br/><br/>M ext/XS-APItest/APItest.pm<br/>M ext/XS-APItest/APItest.xs<br/>M ext/XS-APItest/t/handy.t<br/><br/>commit d22b930b662c8c65d2e856c42f4a59454444a111<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Apr 25 10:07:47 2013 -0600<br/><br/> Use new case changing macros<br/> <br/> The previous commit added macros to do some case changing. This<br/> commit uses them in the core, where appropriate.<br/><br/>M ext/File-Glob/bsd_glob.c<br/>M pp.c<br/>M utf8.c<br/>M utf8.h<br/><br/>commit 25200305a51f99449a69c43f5d279893ab5a0188<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Apr 25 10:05:22 2013 -0600<br/><br/> handy.h: Add some macro definitions<br/> <br/> These macros fill in all the missing case changing operations. They<br/> were omitted before because they are identical in their input domains to<br/> other operations. But by adding them here, that detail no longer need be<br/> known by the callers. toFOLD_LC is not documented, as is subject to<br/> change<br/><br/>M handy.h<br/><br/>commit 22e255cb04e4d885f89e7fa81ad967031dd8c193<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Thu Apr 25 08:41:13 2013 -0600<br/><br/> pp.c: Nit in comment<br/><br/>M pp.c<br/><br/>commit fa2b1084e3c2ca84300c9da8bdd7f808b78d35bf<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Apr 24 15:39:08 2013 -0600<br/><br/> perlclib.pod: Update character class macro descriptions<br/> <br/> Much has changed since this pod was last updated.<br/><br/>M pod/perlclib.pod<br/><br/>commit 5b2821400d3dea1b132a955e865a58e89133c569<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Apr 24 15:36:07 2013 -0600<br/><br/> perlclib.pod: Fix too long verbatim lines<br/><br/>M pod/perlclib.pod<br/>M t/porting/known_pod_issues.dat<br/><br/>commit 1f607577c172af48670c82975935160a27e002b9<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Apr 24 21:18:14 2013 -0600<br/><br/> perlapi: Add docs for some case-changing macros; clarify others<br/> <br/> The case changing macros are now almost all documented. The exception<br/> is toUPPER_LC, which may change in 5.19<br/> <br/> In addition the functions in utf8.c that these macros call now refer to<br/> them instead of having their own documentation. People should really be<br/> using the macros instead of calling the functions directly. I&#39;m not<br/> deprecating the functions because I can&#39;t foresee the need to change<br/> them, so code that uses them should continue to be ok.<br/><br/>M handy.h<br/>M utf8.c<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37150.html Mon, 20 May 2013 20:19:55 +0000 [perl.git] branch smoke-me/nicholas/x2p-depend-later, deleted. v5.18.0-RC3-17-g12bc250 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/x2p-depend-later has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=12bc250a20b24833ce9d3178f1cdaa914d233bc7&gt;<br/><br/> was 12bc250a20b24833ce9d3178f1cdaa914d233bc7<br/><br/>-----------------------------------------------------------------------<br/>12bc250a20b24833ce9d3178f1cdaa914d233bc7 Simplify x2p&#39;s Makefile.<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37149.html Mon, 20 May 2013 20:19:50 +0000 [perl.git] branch smoke-me/nicholas/genpacksizetables, deleted. v5.17.11-146-gbe30ec3 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/genpacksizetables has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=be30ec3cf98529429db8e80b068b3f3479644d7d&gt;<br/><br/> was be30ec3cf98529429db8e80b068b3f3479644d7d<br/><br/>-----------------------------------------------------------------------<br/>be30ec3cf98529429db8e80b068b3f3479644d7d Annotate the &quot;cold&quot; paths in pp_pack.c with UNLIKELY().<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37148.html Mon, 20 May 2013 19:50:36 +0000 [perl.git] branch blead, updated. v5.19.0-96-g9e7945e by Nicholas Clark In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/9e7945ee50c30a17a84968fb0c7e5c38223af6f9?hp=39ecab1c690aee1a1fdeefb6c706448af5d2981f&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 9e7945ee50c30a17a84968fb0c7e5c38223af6f9<br/>Merge: 39ecab1 7df6ffa<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 20 21:42:33 2013 +0200<br/><br/> Merge the pack refactoring to blead.<br/><br/>commit 7df6ffa3fb2efaa96f5e6001f1cc311ad9f8b185<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 20 21:40:27 2013 +0200<br/><br/> Notes in perldelta for the tiny XS-visible changes of the pack refactoring.<br/><br/>M pod/perldelta.pod<br/><br/>commit 228e69a781c23b2599bbd89f1de29c212f10ea31<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Wed May 8 10:40:07 2013 +0200<br/><br/> Annotate the &quot;cold&quot; paths in pp_pack.c with UNLIKELY().<br/> <br/> The usual case is nice regular bytes in the host&#39;s nice regular order.<br/><br/>M pp_pack.c<br/><br/>commit 545872c5eddf1f00b9826a3d8d682387f1c5049d<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 18:25:53 2013 +0200<br/><br/> Eliminate the implementations of [hv]to[vh][ls] for mixed-endian systems.<br/> <br/> As pp_pack.c has had mixed-endian support removed, there is little point in<br/> keeping code in perl.h and util.c only needed for architectures that cannot<br/> be built.<br/><br/>M perl.h<br/>M util.c<br/><br/>commit 1cb43330cc18f2eee5ab1eb58e65991407f4b243<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 18:17:39 2013 +0200<br/><br/> Eliminate Perl_my_swabn(), as it is now unused.<br/> <br/> It is not marked as part of the API, and no code on CPAN is using it.<br/><br/>M embed.fnc<br/>M embed.h<br/>M proto.h<br/>M util.c<br/><br/>commit 3a88beaa68dbb5bad93145daa0c829e0aeb40adb<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 17:39:42 2013 +0200<br/><br/> When endian-swapping in pack, simply copy the bytes in reverse order.<br/> <br/> This should restore support for big endian Crays. It doesn&#39;t support<br/> mixed-endian systems.<br/><br/>M embed.fnc<br/>M pp_pack.c<br/>M proto.h<br/><br/>commit aaec8192358ffb8080ad85754ea9aeca93b06c8b<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 16:22:08 2013 +0200<br/><br/> Pass &#39;needs_swap&#39; as a parameter to SHIFT_BYTES.<br/> <br/> It feels wrong to have it as an implicit parameter sucked in via the textual<br/> expansion of the macro. Whilst it can be derived from the parameter<br/> &#39;datumtype&#39;, it seems that the C compiler generates a lot less efficient code<br/> that way.<br/><br/>M pp_pack.c<br/><br/>commit 20aa3a3813ca2068a61ea9582e99df57cc735e62<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 15:15:54 2013 +0200<br/><br/> When endian-swapping in unpack, simply copy the bytes in reverse order.<br/> <br/> It is considerably simpler to re-order the bytes before reading them into<br/> the variable of the desired type, than to read into the variable and then<br/> need a specialised &quot;reverse this integer&quot; function for each size of integer.<br/> <br/> This should restore support for big endian Crays. It doesn&#39;t support<br/> mixed-endian systems. Support for mixed-endian systems can be restored (if<br/> needed) by re-ordering the bytes correctly at the locations which currently<br/> only know how to reverse the bytes.<br/><br/>M pp_pack.c<br/><br/>commit cd7e75121be11e7979933a8f7a47cd842a685157<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 12:23:00 2013 +0200<br/><br/> Fold the implementation of DO_BO_UNPACK into SHIFT_BYTES(), its only user.<br/><br/>M pp_pack.c<br/><br/>commit 7285e3f43c94010f09aa1b7a3ccbdbe7de1aa3e8<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 11:53:17 2013 +0200<br/><br/> Re-implement SHIFT16 and SHIFT32 as wrappers to SHIFT_BYTES.<br/><br/>M pp_pack.c<br/><br/>commit e396d2357dcec18c01b1cc78d9edc80a3aa4066d<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 10:08:53 2013 +0200<br/><br/> Refactor the two uses of SHIFT{16,32} not followed by DO_BO_UNPACK().<br/> <br/> There is one place where SHIFT16() is not immediately followed by<br/> DO_BO_UNPACK() (&#39;n!&#39; and &#39;v!&#39;), and one place where SHIFT32() is not<br/> immediately followed by DO_BO_UNPACK() (&#39;N!&#39; and &#39;V!&#39;). Every other use of<br/> either macro is followed by DO_BO_UNPACK(). For the two locations that don&#39;t<br/> have DO_BO_UNPACK(), the modifiers &#39;&lt;&#39; and &#39;&gt;&#39; are illegal, hence<br/> DO_BO_UNPACK() will always be a no-op. Hence add DO_BO_UNPACK() to both<br/> (which permits refactoring to simplify things), and add assert()s that the<br/> assumptions are true.<br/><br/>M pp_pack.c<br/><br/>commit 2b4ad5699f46c7f63185ad4e7d1f61e16aaa73f6<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Tue May 7 09:25:39 2013 +0200<br/><br/> Remove the now unused &#39;type&#39; argument from the macros DO_BO_(UN)?PACK.<br/><br/>M pp_pack.c<br/><br/>commit e8966daba327099373354b8935491872e853160e<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 20:40:34 2013 +0200<br/><br/> As DO_BO_(UN)?PACK are now implemented with my_swabn(), simplify &#39;J&#39; and &#39;j&#39;.<br/> <br/> The conditionally compiled code to figure out the correct named integer<br/> size for UVs and IVs is no longer needed, as my_swabn() will swap UVs and<br/> IVs, whatever their length.<br/><br/>M pp_pack.c<br/>M t/porting/diag.t<br/><br/>commit 0c0fa9f456cec3d6fd9e033a5024063564ee1ca7<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 19:58:10 2013 +0200<br/><br/> Merge the identical definitions of DO_BO_UNPACK and DO_BO_PACK.<br/> <br/> Delete the now-unused mixed-endian definitions of DO_BO_UNPACK and<br/> DO_BO_PACK, and the macro BO_CANT_DOIT, as they were the last two things<br/> using it.<br/><br/>M pp_pack.c<br/><br/>commit a1219b5e0bb6c311848c834f67e70ff7a19c6bf4<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 19:41:10 2013 +0200<br/><br/> Swap byte order in DO_BO_(UN)?PACK based on a variable needs_swap.<br/> <br/> Add the macro NEEDS_SWAP to initialise needs_swap based on<br/> TYPE_ENDIANNESS(datumtype). This makes the two definitions of DO_BO_UNPACK<br/> identical, and the two definitions of DO_BO_PACK identical.<br/> <br/> This also makes building pp_pack.c on a mixed endian byteorder architecture<br/> a compile time error. The commit adds pointers on where to add code to<br/> re-instate support for such architectures.<br/><br/>M pp_pack.c<br/><br/>commit e8fda8c499f46bb801215ff1dbea51c1f3007a6c<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 18:43:26 2013 +0200<br/><br/> DO_BO_{UN,}PACK can use my_swabn() directly.<br/> <br/> This removes the only users of my_{be,le,h}to{be,le,h}n, so remove the<br/> definitions for those macros.<br/><br/>M perl.h<br/>M pp_pack.c<br/><br/>commit 7e38f754fea50c46f3571cd67982e061b3cf8304<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 18:05:24 2013 +0200<br/><br/> Use DO_BO_{UN,}PACK in place of DO_BO_UNPACK_{N,PC}<br/> <br/> Also, eliminate the intermediate macros DO_BO_PACK_PTR and DO_BO_UNPACK_PTR.<br/><br/>M pp_pack.c<br/><br/>commit 79be8fb4ac8fa99573841ce07cea480399422f8f<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 17:16:18 2013 +0200<br/><br/> Eliminate my_{hto[bl]e,[bl]etoh}{16,32,64,s,i,l} as nothing now uses them.<br/><br/>M embed.fnc<br/>M embed.h<br/>M perl.h<br/>M proto.h<br/>M util.c<br/><br/>commit 68a0946fb4222dd6bcf5c2881bf6cd64c2c2e5ef<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 16:54:12 2013 +0200<br/><br/> In pp_pack.c, refactor DO_BO_(UN)?PACK to use my_letohn etc<br/> <br/> Previously they were using a my_letoh* function for the appropriate size.<br/> <br/> This commit probably breaks fixed 16 and 32 bit templates on big endian<br/> Crays where sizeof(short) and sizeof(int) are 8. A future commit will<br/> restore support. (Although it&#39;s not clear whether such Crays can still<br/> build blead cleanly, as we&#39;ve not had any feedback since Boeing<br/> decommissioned their Cray.)<br/><br/>M pp_pack.c<br/><br/>commit 86c6fce076648c5abe5ab491fec9d3142d93bde1<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 16:36:09 2013 +0200<br/><br/> In pp_pack.c, refactor DO_BO_(UN)?PACK_PTR to use my_letohn etc<br/> <br/> Previously they were casting the pointer to an integer value, calling<br/> a my_letoh* function for the appropriate size, and casting the return value<br/> back to a pointer.<br/><br/>M pp_pack.c<br/><br/>commit df609c5f9dbf07fc7a18075911f5eaefdeea3ffd<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 16:22:01 2013 +0200<br/><br/> In pp_pack.c, refactor DO_BO_(UN)?PACK_N to use sizeof() on the variable.<br/> <br/> Previously they were using sizeof() on the type argument passed to the<br/> macro. This change makes their implementation more like DO_BO_(UN)?PACK<br/> and DO_BO_(UN)?PACK_PTR.<br/><br/>M pp_pack.c<br/><br/>commit 3cc90e2e712615f2081743c38153954d60e3f0df<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 15:46:02 2013 +0200<br/><br/> Refactor macros in pp_pack.c, removing support for mixed-endian byte orders.<br/> <br/> The byte-order handling can be simplified considerably if we don&#39;t have to<br/> support mixed-endian systems. It&#39;s not clear whether Perl 5.000 even<br/> compiled on PDP-11s, let alone more recent versions.<br/> <br/> Support probably can be added back at the end of the refactoring, if someone<br/> has time and a PDP-11 to test on, but for the intermediate stages it is a<br/> lot easier not to need to think about such platforms.<br/><br/>M pp_pack.c<br/><br/>commit 691a44df41bbec11b634fc7bbf78a6eeb1f768a3<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 14:40:04 2013 +0200<br/><br/> Eliminate the conditionally-compiled fallback functions for htonl etc.<br/> <br/> These are now only being used for mixed-endian platforms which do not<br/> provide their own htnol (etc) functions. Given that the fallbacks have been<br/> buggy since they were added in Perl 3.0, it&#39;s safe to conclude that no<br/> mixed-endian platforms were ever using these functions.<br/> <br/> It&#39;s also unclear why these functions were ever marked as &#39;A&#39;, part of the<br/> API. XS code can&#39;t call them directly, as it can&#39;t rely on them being<br/> compiled. Unsurprisingly, no code on CPAN references them.<br/><br/>M embed.fnc<br/>M embed.h<br/>M perl.h<br/>M proto.h<br/>M util.c<br/><br/>commit 66bb80e4324617840aa70c8af410bf76eedcbea1<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 13:28:20 2013 +0200<br/><br/> Remove buggy loop-based byte swapping code.<br/> <br/> The irony is that the union-based code special-cased for little endian<br/> systems actually works everywhere, even on mixed-endian systems.<br/><br/>M pod/perldiag.pod<br/>M util.c<br/><br/>commit 36bb5e1d607385b423cc4360bce20f3043900790<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 6 08:20:57 2013 +0200<br/><br/> Update the Win32 miniperl conditional compilation, for the htonl etc changes.<br/> <br/> As of commit 19253ae62cd13079 (Oct 2012), miniperl on Win32 avoids using<br/> Winsock. The win32_* wrappers for htonl etc had used the pre-processor<br/> macro MYSWAP to conditionally compile in the correct code. However, MYSWAP<br/> was defined as a side effect of using the htonl etc wrappers in util.c,<br/> which are no longer needed. Hence use the WIN32_NO_SOCKETS macro directly<br/> in win32sck.c for the correct conditional compilation.<br/><br/>M win32/win32sck.c<br/><br/>commit e4b03fedd1c92616345d5428c7b0d2981b0e00d8<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sat May 4 22:50:12 2013 +0200<br/><br/> Fallbacks for ntohl, ntohs, htonl and htons for little endian systems.<br/> <br/> The host byteorder agnostic functions in util.c are now only used on mixed<br/> endian systems.<br/><br/>M perl.h<br/><br/>commit 8e2d7c446d5ab31e6c8e661a3c17f0f0b199d525<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sat May 4 22:03:59 2013 +0200<br/><br/> Provide ntohl, ntohs, htonl and htons no-op macros on big endian systems.<br/> <br/> This means that there are always macros or functions for ntohl, ntohs,<br/> htonl and htons available, so eliminate use of HAS_NTOHL etc, and<br/> unconditionally compile the code that it was protecting. However, as code<br/> on CPAN is using these guard macros, define all of them in perl.h<br/> <br/> (Technically the 4 are not quite no-ops, as they truncate their values to<br/> 32 or 16 bits, to be consistent with the implementations for platforms which<br/> need re-ordering.)<br/><br/>M perl.h<br/>M pp_pack.c<br/>M pp_sys.c<br/><br/>commit 260c6fee6deba90b42b0734fbdea2fea1d69c9bc<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sat May 4 21:30:27 2013 +0200<br/><br/> Provide vtohl, vtohs, htovl and htovs no-op macros on little endian systems.<br/> <br/> This means that there are always macros or functions for vtohl, vtohs,<br/> htovl and htovs available, so eliminate HAS_VTOHL etc, and unconditionally<br/> compile the code that it was protecting. grep.cpan.me shows that no code on<br/> CPAN uses any of these macros.<br/> <br/> (Technically the 4 are not quite no-ops, as they truncate their values to<br/> 32 or 16 bits, to be consistent with the implementations for platforms which<br/> need re-ordering.)<br/><br/>M perl.h<br/>M pp_pack.c<br/>M util.c<br/><br/>commit 5ae724797a32a9a98d51759460d87f419fdd5a45<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Sat May 4 21:07:14 2013 +0200<br/><br/> vtohl, vtohs, htovl and htovs are no-ops on 64 bit little endian systems.<br/> <br/> Previously they were implemented as function calls on 64 bit little endian<br/> systems. Bit endian systems implemented them as byte-swapping macros. 32<br/> little endian system didn&#39;t implement them at all. 32 and 64 bit little<br/> endian systems now behave identically.<br/><br/>M perl.h<br/><br/>commit fcdf154797de71462d8c8f5606482a86ed73943a<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Fri May 3 17:06:01 2013 +0200<br/><br/> Eliminate the definitions for DO_BO_PACK_P and DO_BO_UNPACK_P.<br/> <br/> Commit 07409e015252427f in April 2005 replaced all the uses of these two<br/> macros with DO_BO_PACK_PC and DO_BO_UNPACK_PC.<br/><br/>M pp_pack.c<br/><br/>commit f8e5a5db38586c726249f161f1fbb581d1738ca2<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Fri May 3 15:52:38 2013 +0200<br/><br/> Eliminate pre-5.9.x conditional code for PERL_PACK_CAN_SHRIEKSIGN<br/> <br/> PERL_PACK_CAN_SHRIEKSIGN has been unconditionally defined for versions 5.9.x<br/> and greater, and undefined for 5.8.x. As we are never going to need to<br/> port changes back to maint-5.8 any more, eliminate all the 5.8.x related code<br/> and the macro that supports it.<br/><br/>M packsizetables.c<br/>M pp_pack.c<br/>M regen/genpacksizetables.pl<br/><br/>commit 5fa237154915dfcb787e0c5403e6260482a5fb3e<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Fri May 3 15:26:34 2013 +0200<br/><br/> Eliminate pre-5.9.x conditional code for PERL_PACK_CAN_BYTEORDER<br/> <br/> PERL_PACK_CAN_BYTEORDER has been unconditionally defined for versions 5.9.x<br/> and greater, and undefined for 5.8.x. As we are never going to need to<br/> port changes back to maint-5.8 any more, eliminate all the 5.8.x related code,<br/> and the macro that supports it.<br/><br/>M pp_pack.c<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> embed.fnc | 86 +-------<br/> embed.h | 78 -------<br/> packsizetables.c | 32 ---<br/> perl.h | 279 +++++-------------------<br/> pod/perldelta.pod | 12 +-<br/> pod/perldiag.pod | 5 -<br/> pp_pack.c | 522 ++++++++++++-------------------------------<br/> pp_sys.c | 10 -<br/> proto.h | 93 +--------<br/> regen/genpacksizetables.pl | 8 +-<br/> t/porting/diag.t | 2 -<br/> util.c | 329 ----------------------------<br/> win32/win32sck.c | 20 +--<br/> 13 files changed, 227 insertions(+), 1249 deletions(-)<br/><br/>diff --git a/embed.fnc b/embed.fnc<br/>index 8b73d6d..0e2d854 100644<br/>--- a/embed.fnc<br/>+++ b/embed.fnc<br/>@@ -888,11 +888,6 @@ Ap |void |my_setenv |NULLOK const char* nam|NULLOK const char* val<br/> Apmb |I32 |my_stat<br/> pX |I32 |my_stat_flags |NULLOK const U32 flags<br/> Ap |char * |my_strftime |NN const char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst<br/>-#if defined(MYSWAP)<br/>-ApPR |short |my_swap |short s<br/>-ApPR |long |my_htonl |long l<br/>-ApPR |long |my_ntohl |long l<br/>-#endif<br/> : Used in pp_ctl.c<br/> p |void |my_unexec<br/> Apa |OP* |newANONLIST |NULLOK OP* o<br/>@@ -1902,7 +1897,8 @@ sR |const char *|get_num |NN const char *patptr|NN I32 *lenptr<br/> ns |bool |need_utf8 |NN const char *pat|NN const char *patend<br/> ns |char |first_symbol |NN const char *pat|NN const char *patend<br/> sR |char * |sv_exp_grow |NN SV *sv|STRLEN needed<br/>-snR |char * |bytes_to_uni |NN const U8 *start|STRLEN len|NN char *dest<br/>+snR |char * |bytes_to_uni |NN const U8 *start|STRLEN len|NN char *dest \<br/>+ |const bool needs_swap<br/> #endif<br/> <br/> #if defined(PERL_IN_PP_CTL_C)<br/>@@ -2463,84 +2459,6 @@ sMd |SV* |find_uninit_var|NULLOK const OP *const obase \<br/> |NULLOK const SV *const uninit_sv|bool top<br/> #endif<br/> <br/>-#ifdef PERL_NEED_MY_HTOLE16<br/>-np |U16 |my_htole16 |U16 n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_LETOH16<br/>-np |U16 |my_letoh16 |U16 n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_HTOBE16<br/>-np |U16 |my_htobe16 |U16 n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_BETOH16<br/>-np |U16 |my_betoh16 |U16 n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_HTOLE32<br/>-np |U32 |my_htole32 |U32 n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_LETOH32<br/>-np |U32 |my_letoh32 |U32 n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_HTOBE32<br/>-np |U32 |my_htobe32 |U32 n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_BETOH32<br/>-np |U32 |my_betoh32 |U32 n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_HTOLE64<br/>-np |U64 |my_htole64 |U64 n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_LETOH64<br/>-np |U64 |my_letoh64 |U64 n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_HTOBE64<br/>-np |U64 |my_htobe64 |U64 n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_BETOH64<br/>-np |U64 |my_betoh64 |U64 n<br/>-#endif<br/>-<br/>-#ifdef PERL_NEED_MY_HTOLES<br/>-np |short |my_htoles |short n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_LETOHS<br/>-np |short |my_letohs |short n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_HTOBES<br/>-np |short |my_htobes |short n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_BETOHS<br/>-np |short |my_betohs |short n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_HTOLEI<br/>-np |int |my_htolei |int n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_LETOHI<br/>-np |int |my_letohi |int n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_HTOBEI<br/>-np |int |my_htobei |int n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_BETOHI<br/>-np |int |my_betohi |int n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_HTOLEL<br/>-np |long |my_htolel |long n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_LETOHL<br/>-np |long |my_letohl |long n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_HTOBEL<br/>-np |long |my_htobel |long n<br/>-#endif<br/>-#ifdef PERL_NEED_MY_BETOHL<br/>-np |long |my_betohl |long n<br/>-#endif<br/>-<br/>-: I think that these are only used by the above, which are macros, and in turn<br/>-: currently they are only used in pp_pack.c, but this is in util.c<br/>-np |void |my_swabn |NN void* ptr|int n<br/>-<br/> Ap |GV* |gv_fetchpvn_flags|NN const char* name|STRLEN len|I32 flags|const svtype sv_type<br/> Ap |GV* |gv_fetchsv|NN SV *name|I32 flags|const svtype sv_type<br/> <br/>diff --git a/embed.h b/embed.h<br/>index 9054358..1f398d6 100644<br/>--- a/embed.h<br/>+++ b/embed.h<br/>@@ -774,11 +774,6 @@<br/> #define dump_mstats(a) Perl_dump_mstats(aTHX_ a)<br/> #define get_mstats(a,b,c) Perl_get_mstats(aTHX_ a,b,c)<br/> #endif<br/>-#if defined(MYSWAP)<br/>-#define my_htonl(a) Perl_my_htonl(aTHX_ a)<br/>-#define my_ntohl(a) Perl_my_ntohl(aTHX_ a)<br/>-#define my_swap(a) Perl_my_swap(aTHX_ a)<br/>-#endif<br/> #if defined(PERL_GLOBAL_STRUCT)<br/> #define GetVars() Perl_GetVars(aTHX)<br/> #define free_global_struct(a) Perl_free_global_struct(aTHX_ a)<br/>@@ -1174,7 +1169,6 @@<br/> #define my_clearenv() Perl_my_clearenv(aTHX)<br/> #define my_lstat_flags(a) Perl_my_lstat_flags(aTHX_ a)<br/> #define my_stat_flags(a) Perl_my_stat_flags(aTHX_ a)<br/>-#define my_swabn Perl_my_swabn<br/> #define my_unexec() Perl_my_unexec(aTHX)<br/> #define newATTRSUB_flags(a,b,c,d,e,f) Perl_newATTRSUB_flags(aTHX_ a,b,c,d,e,f)<br/> #define newSTUB(a,b) Perl_newSTUB(aTHX_ a,b)<br/>@@ -1701,78 +1695,6 @@<br/> #define xmldump_sub_perl(a,b) Perl_xmldump_sub_perl(aTHX_ a,b)<br/> #define xmldump_vindent(a,b,c,d) Perl_xmldump_vindent(aTHX_ a,b,c,d)<br/> # endif<br/>-# if defined(PERL_NEED_MY_BETOH16)<br/>-#define my_betoh16 Perl_my_betoh16<br/>-# endif<br/>-# if defined(PERL_NEED_MY_BETOH32)<br/>-#define my_betoh32 Perl_my_betoh32<br/>-# endif<br/>-# if defined(PERL_NEED_MY_BETOH64)<br/>-#define my_betoh64 Perl_my_betoh64<br/>-# endif<br/>-# if defined(PERL_NEED_MY_BETOHI)<br/>-#define my_betohi Perl_my_betohi<br/>-# endif<br/>-# if defined(PERL_NEED_MY_BETOHL)<br/>-#define my_betohl Perl_my_betohl<br/>-# endif<br/>-# if defined(PERL_NEED_MY_BETOHS)<br/>-#define my_betohs Perl_my_betohs<br/>-# endif<br/>-# if defined(PERL_NEED_MY_HTOBE16)<br/>-#define my_htobe16 Perl_my_htobe16<br/>-# endif<br/>-# if defined(PERL_NEED_MY_HTOBE32)<br/>-#define my_htobe32 Perl_my_htobe32<br/>-# endif<br/>-# if defined(PERL_NEED_MY_HTOBE64)<br/>-#define my_htobe64 Perl_my_htobe64<br/>-# endif<br/>-# if defined(PERL_NEED_MY_HTOBEI)<br/>-#define my_htobei Perl_my_htobei<br/>-# endif<br/>-# if defined(PERL_NEED_MY_HTOBEL)<br/>-#define my_htobel Perl_my_htobel<br/>-# endif<br/>-# if defined(PERL_NEED_MY_HTOBES)<br/>-#define my_htobes Perl_my_htobes<br/>-# endif<br/>-# if defined(PERL_NEED_MY_HTOLE16)<br/>-#define my_htole16 Perl_my_htole16<br/>-# endif<br/>-# if defined(PERL_NEED_MY_HTOLE32)<br/>-#define my_htole32 Perl_my_htole32<br/>-# endif<br/>-# if defined(PERL_NEED_MY_HTOLE64)<br/>-#define my_htole64 Perl_my_htole64<br/>-# endif<br/>-# if defined(PERL_NEED_MY_HTOLEI)<br/>-#define my_htolei Perl_my_htolei<br/>-# endif<br/>-# if defined(PERL_NEED_MY_HTOLEL)<br/>-#define my_htolel Perl_my_htolel<br/>-# endif<br/>-# if defined(PERL_NEED_MY_HTOLES)<br/>-#define my_htoles Perl_my_htoles<br/>-# endif<br/>-# if defined(PERL_NEED_MY_LETOH16)<br/>-#define my_letoh16 Perl_my_letoh16<br/>-# endif<br/>-# if defined(PERL_NEED_MY_LETOH32)<br/>-#define my_letoh32 Perl_my_letoh32<br/>-# endif<br/>-# if defined(PERL_NEED_MY_LETOH64)<br/>-#define my_letoh64 Perl_my_letoh64<br/>-# endif<br/>-# if defined(PERL_NEED_MY_LETOHI)<br/>-#define my_letohi Perl_my_letohi<br/>-# endif<br/>-# if defined(PERL_NEED_MY_LETOHL)<br/>-#define my_letohl Perl_my_letohl<br/>-# endif<br/>-# if defined(PERL_NEED_MY_LETOHS)<br/>-#define my_letohs Perl_my_letohs<br/>-# endif<br/> # if defined(PERL_USES_PL_PIDSTATUS) &amp;&amp; defined(PERL_IN_UTIL_C)<br/> #define pidgone(a,b) S_pidgone(aTHX_ a,b)<br/> # endif<br/>diff --git a/packsizetables.c b/packsizetables.c<br/>index afeb210..8c57d41 100644<br/>--- a/packsizetables.c<br/>+++ b/packsizetables.c<br/>@@ -88,38 +88,22 @@ STATIC const packprops_t packprops[512] = {<br/> 0, 0,<br/> /* L */ sizeof(unsigned long),<br/> 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/> /* N */ SIZE32,<br/>-#else<br/>- 0,<br/>-#endif<br/> 0, 0, 0, 0,<br/> /* S */ sizeof(unsigned short),<br/> 0, 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/> /* V */ SIZE32,<br/>-#else<br/>- 0,<br/>-#endif<br/> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/> 0, 0,<br/> /* i */ sizeof(int),<br/> 0, 0,<br/> /* l */ sizeof(long),<br/> 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/> /* n */ SIZE16,<br/>-#else<br/>- 0,<br/>-#endif<br/> 0, 0, 0, 0,<br/> /* s */ sizeof(short),<br/> 0, 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/> /* v */ SIZE16,<br/>-#else<br/>- 0,<br/>-#endif<br/> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>@@ -213,19 +197,11 @@ STATIC const packprops_t packprops[512] = {<br/> 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/> /* l */ sizeof(long),<br/> 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/> /* n */ SIZE16,<br/>-#else<br/>- 0,<br/>-#endif<br/> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/> /* s */ sizeof(short),<br/> 0, 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/> /* v */ SIZE16,<br/>-#else<br/>- 0,<br/>-#endif<br/> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/> 0, 0, 0,<br/>@@ -233,19 +209,11 @@ STATIC const packprops_t packprops[512] = {<br/> 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/> /* L */ sizeof(unsigned long),<br/> 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/> /* N */ SIZE32,<br/>-#else<br/>- 0,<br/>-#endif<br/> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/> /* S */ sizeof(unsigned short),<br/> 0, 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/> /* V */ SIZE32,<br/>-#else<br/>- 0,<br/>-#endif<br/> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0<br/> };<br/>diff --git a/perl.h b/perl.h<br/>index dc5e411..87e7f0f 100644<br/>--- a/perl.h<br/>+++ b/perl.h<br/>@@ -743,15 +743,6 @@ EXTERN_C int syscall(int, ...);<br/> EXTERN_C int usleep(unsigned int);<br/> #endif<br/> <br/>-/* Funky places that do not have socket stuff. */<br/>-#if defined(__LIBCATAMOUNT__)<br/>-# define MYSWAP<br/>-#endif<br/>-<br/>-#ifdef PERL_MICRO /* Last chance to export Perl_my_swap */<br/>-# define MYSWAP<br/>-#endif<br/>-<br/> #ifdef PERL_CORE<br/> <br/> /* macros for correct constant construction */<br/>@@ -804,189 +795,6 @@ EXTERN_C int usleep(unsigned int);<br/> (((U64)(x) &amp; U64_CONST(0xff00000000000000)) &gt;&gt; 56) ))<br/> # endif<br/> <br/>-/*----------------------------------------------------------------------------*/<br/>-# if BYTEORDER == 0x1234 || BYTEORDER == 0x12345678 /* little-endian */<br/>-/*----------------------------------------------------------------------------*/<br/>-# define my_htole16(x) (x)<br/>-# define my_letoh16(x) (x)<br/>-# define my_htole32(x) (x)<br/>-# define my_letoh32(x) (x)<br/>-# define my_htobe16(x) _swab_16_(x)<br/>-# define my_betoh16(x) _swab_16_(x)<br/>-# define my_htobe32(x) _swab_32_(x)<br/>-# define my_betoh32(x) _swab_32_(x)<br/>-# ifdef HAS_QUAD<br/>-# define my_htole64(x) (x)<br/>-# define my_letoh64(x) (x)<br/>-# define my_htobe64(x) _swab_64_(x)<br/>-# define my_betoh64(x) _swab_64_(x)<br/>-# endif<br/>-# define my_htoles(x) (x)<br/>-# define my_letohs(x) (x)<br/>-# define my_htolei(x) (x)<br/>-# define my_letohi(x) (x)<br/>-# define my_htolel(x) (x)<br/>-# define my_letohl(x) (x)<br/>-# if SHORTSIZE == 1<br/>-# define my_htobes(x) (x)<br/>-# define my_betohs(x) (x)<br/>-# elif SHORTSIZE == 2<br/>-# define my_htobes(x) _swab_16_(x)<br/>-# define my_betohs(x) _swab_16_(x)<br/>-# elif SHORTSIZE == 4<br/>-# define my_htobes(x) _swab_32_(x)<br/>-# define my_betohs(x) _swab_32_(x)<br/>-# elif SHORTSIZE == 8<br/>-# define my_htobes(x) _swab_64_(x)<br/>-# define my_betohs(x) _swab_64_(x)<br/>-# else<br/>-# define PERL_NEED_MY_HTOBES<br/>-# define PERL_NEED_MY_BETOHS<br/>-# endif<br/>-# if INTSIZE == 1<br/>-# define my_htobei(x) (x)<br/>-# define my_betohi(x) (x)<br/>-# elif INTSIZE == 2<br/>-# define my_htobei(x) _swab_16_(x)<br/>-# define my_betohi(x) _swab_16_(x)<br/>-# elif INTSIZE == 4<br/>-# define my_htobei(x) _swab_32_(x)<br/>-# define my_betohi(x) _swab_32_(x)<br/>-# elif INTSIZE == 8<br/>-# define my_htobei(x) _swab_64_(x)<br/>-# define my_betohi(x) _swab_64_(x)<br/>-# else<br/>-# define PERL_NEED_MY_HTOBEI<br/>-# define PERL_NEED_MY_BETOHI<br/>-# endif<br/>-# if LONGSIZE == 1<br/>-# define my_htobel(x) (x)<br/>-# define my_betohl(x) (x)<br/>-# elif LONGSIZE == 2<br/>-# define my_htobel(x) _swab_16_(x)<br/>-# define my_betohl(x) _swab_16_(x)<br/>-# elif LONGSIZE == 4<br/>-# define my_htobel(x) _swab_32_(x)<br/>-# define my_betohl(x) _swab_32_(x)<br/>-# elif LONGSIZE == 8<br/>-# define my_htobel(x) _swab_64_(x)<br/>-# define my_betohl(x) _swab_64_(x)<br/>-# else<br/>-# define PERL_NEED_MY_HTOBEL<br/>-# define PERL_NEED_MY_BETOHL<br/>-# endif<br/>-# define my_htolen(p,n) NOOP<br/>-# define my_letohn(p,n) NOOP<br/>-# define my_htoben(p,n) my_swabn(p,n)<br/>-# define my_betohn(p,n) my_swabn(p,n)<br/>-/*----------------------------------------------------------------------------*/<br/>-# elif BYTEORDER == 0x4321 || BYTEORDER == 0x87654321 /* big-endian */<br/>-/*----------------------------------------------------------------------------*/<br/>-# define my_htobe16(x) (x)<br/>-# define my_betoh16(x) (x)<br/>-# define my_htobe32(x) (x)<br/>-# define my_betoh32(x) (x)<br/>-# define my_htole16(x) _swab_16_(x)<br/>-# define my_letoh16(x) _swab_16_(x)<br/>-# define my_htole32(x) _swab_32_(x)<br/>-# define my_letoh32(x) _swab_32_(x)<br/>-# ifdef HAS_QUAD<br/>-# define my_htobe64(x) (x)<br/>-# define my_betoh64(x) (x)<br/>-# define my_htole64(x) _swab_64_(x)<br/>-# define my_letoh64(x) _swab_64_(x)<br/>-# endif<br/>-# define my_htobes(x) (x)<br/>-# define my_betohs(x) (x)<br/>-# define my_htobei(x) (x)<br/>-# define my_betohi(x) (x)<br/>-# define my_htobel(x) (x)<br/>-# define my_betohl(x) (x)<br/>-# if SHORTSIZE == 1<br/>-# define my_htoles(x) (x)<br/>-# define my_letohs(x) (x)<br/>-# elif SHORTSIZE == 2<br/>-# define my_htoles(x) _swab_16_(x)<br/>-# define my_letohs(x) _swab_16_(x)<br/>-# elif SHORTSIZE == 4<br/>-# define my_htoles(x) _swab_32_(x)<br/>-# define my_letohs(x) _swab_32_(x)<br/>-# elif SHORTSIZE == 8<br/>-# define my_htoles(x) _swab_64_(x)<br/>-# define my_letohs(x) _swab_64_(x)<br/>-# else<br/>-# define PERL_NEED_MY_HTOLES<br/>-# define PERL_NEED_MY_LETOHS<br/>-# endif<br/>-# if INTSIZE == 1<br/>-# define my_htolei(x) (x)<br/>-# define my_letohi(x) (x)<br/>-# elif INTSIZE == 2<br/>-# define my_htolei(x) _swab_16_(x)<br/>-# define my_letohi(x) _swab_16_(x)<br/>-# elif INTSIZE == 4<br/>-# define my_htolei(x) _swab_32_(x)<br/>-# define my_letohi(x) _swab_32_(x)<br/>-# elif INTSIZE == 8<br/>-# define my_htolei(x) _swab_64_(x)<br/>-# define my_letohi(x) _swab_64_(x)<br/>-# else<br/>-# define PERL_NEED_MY_HTOLEI<br/>-# define PERL_NEED_MY_LETOHI<br/>-# endif<br/>-# if LONGSIZE == 1<br/>-# define my_htolel(x) (x)<br/>-# define my_letohl(x) (x)<br/>-# elif LONGSIZE == 2<br/>-# define my_htolel(x) _swab_16_(x)<br/>-# define my_letohl(x) _swab_16_(x)<br/>-# elif LONGSIZE == 4<br/>-# define my_htolel(x) _swab_32_(x)<br/>-# define my_letohl(x) _swab_32_(x)<br/>-# elif LONGSIZE == 8<br/>-# define my_htolel(x) _swab_64_(x)<br/>-# define my_letohl(x) _swab_64_(x)<br/>-# else<br/>-# define PERL_NEED_MY_HTOLEL<br/>-# define PERL_NEED_MY_LETOHL<br/>-# endif<br/>-# define my_htolen(p,n) my_swabn(p,n)<br/>-# define my_letohn(p,n) my_swabn(p,n)<br/>-# define my_htoben(p,n) NOOP<br/>-# define my_betohn(p,n) NOOP<br/>-/*----------------------------------------------------------------------------*/<br/>-# else /* all other byte-orders */<br/>-/*----------------------------------------------------------------------------*/<br/>-# define PERL_NEED_MY_HTOLE16<br/>-# define PERL_NEED_MY_LETOH16<br/>-# define PERL_NEED_MY_HTOBE16<br/>-# define PERL_NEED_MY_BETOH16<br/>-# define PERL_NEED_MY_HTOLE32<br/>-# define PERL_NEED_MY_LETOH32<br/>-# define PERL_NEED_MY_HTOBE32<br/>-# define PERL_NEED_MY_BETOH32<br/>-# ifdef HAS_QUAD<br/>-# define PERL_NEED_MY_HTOLE64<br/>-# define PERL_NEED_MY_LETOH64<br/>-# define PERL_NEED_MY_HTOBE64<br/>-# define PERL_NEED_MY_BETOH64<br/>-# endif<br/>-# define PERL_NEED_MY_HTOLES<br/>-# define PERL_NEED_MY_LETOHS<br/>-# define PERL_NEED_MY_HTOBES<br/>-# define PERL_NEED_MY_BETOHS<br/>-# define PERL_NEED_MY_HTOLEI<br/>-# define PERL_NEED_MY_LETOHI<br/>-# define PERL_NEED_MY_HTOBEI<br/>-# define PERL_NEED_MY_BETOHI<br/>-# define PERL_NEED_MY_HTOLEL<br/>-# define PERL_NEED_MY_LETOHL<br/>-# define PERL_NEED_MY_HTOBEL<br/>-# define PERL_NEED_MY_BETOHL<br/>-/*----------------------------------------------------------------------------*/<br/>-# endif /* end of byte-order macros */<br/>-/*----------------------------------------------------------------------------*/<br/>-<br/> /* The old value was hard coded at 1008. (4096-16) seems to be a bit faster,<br/> at least on FreeBSD. YMMV, so experiment. */<br/> #ifndef PERL_ARENA_SIZE<br/>@@ -3537,36 +3345,70 @@ struct ptr_tbl {<br/> #define HAS_NTOHS<br/> #endif<br/> #ifndef HAS_HTONL<br/>-#if (BYTEORDER &amp; 0xffff) != 0x4321<br/> #define HAS_HTONS<br/> #define HAS_HTONL<br/> #define HAS_NTOHS<br/> #define HAS_NTOHL<br/>-#define MYSWAP<br/>-#define htons my_swap<br/>-#define htonl my_htonl<br/>-#define ntohs my_swap<br/>-#define ntohl my_ntohl<br/>-#endif<br/>-#else<br/>-#if (BYTEORDER &amp; 0xffff) == 0x4321<br/>-#undef HAS_HTONS<br/>-#undef HAS_HTONL<br/>-#undef HAS_NTOHS<br/>-#undef HAS_NTOHL<br/>-#endif<br/>+# if (BYTEORDER &amp; 0xffff) == 0x4321<br/>+/* Big endian system, so ntohl, ntohs, htonl and htons do not need to<br/>+ re-order their values. However, to behave identically to the alternative<br/>+ implementations, they should truncate to the correct size. */<br/>+# define ntohl(x) ((x)&amp;0xFFFFFFFF)<br/>+# define htonl(x) ntohl(x)<br/>+# define ntohs(x) ((x)&amp;0xFFFF)<br/>+# define htons(x) ntohs(x)<br/>+# elif BYTEORDER == 0x1234 || BYTEORDER == 0x12345678<br/>+<br/>+/* Note that we can&#39;t straight out declare our own htonl and htons because<br/>+ the Win32 build process forcibly undefines HAS_HTONL etc for its miniperl,<br/>+ to avoid the overhead of initialising the socket subsystem, but the headers<br/>+ that *declare* the various functions are still seen. If we declare our own<br/>+ htonl etc they will clash with the declarations in the Win32 headers. */<br/>+<br/>+PERL_STATIC_INLINE U32<br/>+my_swap32(const U32 x) {<br/>+ return ((x &amp; 0xFF) &lt;&lt; 24) | ((x &gt;&gt; 24) &amp; 0xFF) <br/>+ | ((x &amp; 0x0000FF00) &lt;&lt; 8) | ((x &amp; 0x00FF0000) &gt;&gt; 8);<br/>+}<br/>+<br/>+PERL_STATIC_INLINE U16<br/>+my_swap16(const U16 x) {<br/>+ return ((x &amp; 0xFF) &lt;&lt; 8) | ((x &gt;&gt; 8) &amp; 0xFF);<br/>+}<br/>+<br/>+# define htonl(x) my_swap32(x)<br/>+# define ntohl(x) my_swap32(x)<br/>+# define ntohs(x) my_swap16(x)<br/>+# define htons(x) my_swap16(x)<br/>+# else<br/>+# error &quot;Unsupported byteorder&quot;<br/>+/* The C pre-processor doesn&#39;t let us return the value of BYTEORDER as part of<br/>+ the error message. Please check the value of the macro BYTEORDER, as defined<br/>+ in config.h. The values of BYTEORDER we expect are<br/>+<br/>+ big endian little endian<br/>+ 32 bit 0x4321 0x1234<br/>+ 64 bit 0x87654321 0x12345678<br/>+<br/>+ If you have a system with a different byte order, please see<br/>+ pod/perlhack.pod for how to submit a patch to add supporting code.<br/>+*/<br/>+# endif<br/> #endif<br/> <br/> /*<br/> * Little-endian byte order functions - &#39;v&#39; for &#39;VAX&#39;, or &#39;reVerse&#39;.<br/> * -DWS<br/> */<br/>-#if BYTEORDER != 0x1234<br/>-# define HAS_VTOHL<br/>-# define HAS_VTOHS<br/>-# define HAS_HTOVL<br/>-# define HAS_HTOVS<br/>-# if BYTEORDER == 0x4321 || BYTEORDER == 0x87654321<br/>+#if BYTEORDER == 0x1234 || BYTEORDER == 0x12345678<br/>+/* Little endian system, so vtohl, vtohs, htovl and htovs do not need to<br/>+ re-order their values. However, to behave identically to the alternative<br/>+ implementations, they should truncate to the correct size. */<br/>+# define vtohl(x) ((x)&amp;0xFFFFFFFF)<br/>+# define vtohs(x) ((x)&amp;0xFFFF)<br/>+# define htovl(x) vtohl(x)<br/>+# define htovs(x) vtohs(x)<br/>+#elif BYTEORDER == 0x4321 || BYTEORDER == 0x87654321<br/> # define vtohl(x) ((((x)&amp;0xFF)&lt;&lt;24) \<br/> +(((x)&gt;&gt;24)&amp;0xFF) \<br/> +(((x)&amp;0x0000FF00)&lt;&lt;8) \<br/>@@ -3574,14 +3416,11 @@ struct ptr_tbl {<br/> # define vtohs(x) ((((x)&amp;0xFF)&lt;&lt;8) + (((x)&gt;&gt;8)&amp;0xFF))<br/> # define htovl(x) vtohl(x)<br/> # define htovs(x) vtohs(x)<br/>-# endif<br/>- /* otherwise default to functions in util.c */<br/>-#ifndef htovs<br/>-short htovs(short n);<br/>-short vtohs(short n);<br/>-long htovl(long n);<br/>-long vtohl(long n);<br/>-#endif<br/>+#else<br/>+# error &quot;Unsupported byteorder&quot;<br/>+/* If you have need for current perl on PDP-11 or similar, and can help test<br/>+ that blead keeps working on a mixed-endian system, then see<br/>+ pod/perlhack.pod for how to submit patches to things working again. */<br/> #endif<br/> <br/> /* *MAX Plus 1. A floating point value.<br/>diff --git a/pod/perldelta.pod b/pod/perldelta.pod<br/>index cb99f64..cb7ab03 100644<br/>--- a/pod/perldelta.pod<br/>+++ b/pod/perldelta.pod<br/>@@ -310,9 +310,12 @@ L&lt;/Modules and Pragmata&gt; section.<br/> <br/> =over 4<br/> <br/>-=item XXX-some-platform<br/>+=item Mixed-endian platforms<br/> <br/>-XXX<br/>+The code supporting C&lt;pack&gt; and C&lt;unpack&gt; operations on mixed endian<br/>+platforms has been removed. We believe that Perl has long been unable to<br/>+build on mixed endian architectures (such as PDP-11s), so we don&#39;t think<br/>+that this change will affect any platforms which are able to build v5.18.0.<br/> <br/> =back<br/> <br/>@@ -328,7 +331,10 @@ well.<br/> <br/> =item *<br/> <br/>-XXX<br/>+The functions C&lt;my_swap&gt;, C&lt;my_htonl&gt; and C&lt;my_ntohl&gt; have been removed.<br/>+It is unclear why these functions were ever marked as I&lt;A&gt;, part of the<br/>+API. XS code can&#39;t call them directly, as it can&#39;t rely on them being<br/>+compiled. Unsurprisingly, no code on CPAN references them.<br/> <br/> =back<br/> <br/>diff --git a/pod/perldiag.pod b/pod/perldiag.pod<br/>index 2dc5514..ec4812c 100644<br/>--- a/pod/perldiag.pod<br/>+++ b/pod/perldiag.pod<br/>@@ -5411,11 +5411,6 @@ problems when being input or output, which is likely where this message<br/> came from. If you really really know what you are doing you can turn<br/> off this warning by C&lt;no warnings &#39;surrogate&#39;;&gt;.<br/> <br/>-=item Unknown BYTEORDER<br/>-<br/>-(F) There are no byte-swapping functions for a machine with this byte<br/>-order.<br/>-<br/> =item Unknown charname &#39;%s&#39;<br/> <br/> (F) The name you used inside C&lt;\N{}&gt; is unknown to Perl. Check the<br/>diff --git a/pp_pack.c b/pp_pack.c<br/>index b41ec78..3cfc03c 100644<br/>--- a/pp_pack.c<br/>+++ b/pp_pack.c<br/>@@ -82,11 +82,6 @@ typedef union {<br/> } ld_bytes;<br/> #endif<br/> <br/>-#if PERL_VERSION &gt;= 9<br/>-# define PERL_PACK_CAN_BYTEORDER<br/>-# define PERL_PACK_CAN_SHRIEKSIGN<br/>-#endif<br/>-<br/> #ifndef CHAR_BIT<br/> # define CHAR_BIT 8<br/> #endif<br/>@@ -134,46 +129,50 @@ typedef union {<br/> # define OFF32(p) ((char *) (p))<br/> #endif<br/> <br/>-/* Only to be used inside a loop (see the break) */<br/>-#define SHIFT16(utf8, s, strend, p, datumtype) STMT_START { \<br/>- if (utf8) { \<br/>- if (!uni_to_bytes(aTHX_ &amp;(s), strend, OFF16(p), SIZE16, datumtype)) break; \<br/>- } else { \<br/>- Copy(s, OFF16(p), SIZE16, char); \<br/>- (s) += SIZE16; \<br/>- } \<br/>-} STMT_END<br/>-<br/>-/* Only to be used inside a loop (see the break) */<br/>-#define SHIFT32(utf8, s, strend, p, datumtype) STMT_START { \<br/>- if (utf8) { \<br/>- if (!uni_to_bytes(aTHX_ &amp;(s), strend, OFF32(p), SIZE32, datumtype)) break; \<br/>- } else { \<br/>- Copy(s, OFF32(p), SIZE32, char); \<br/>- (s) += SIZE32; \<br/>- } \<br/>-} STMT_END<br/>+#define PUSH16(utf8, cur, p, needs_swap) \<br/>+ PUSH_BYTES(utf8, cur, OFF16(p), SIZE16, needs_swap)<br/>+#define PUSH32(utf8, cur, p, needs_swap) \<br/>+ PUSH_BYTES(utf8, cur, OFF32(p), SIZE32, needs_swap)<br/> <br/>-#define PUSH16(utf8, cur, p) PUSH_BYTES(utf8, cur, OFF16(p), SIZE16)<br/>-#define PUSH32(utf8, cur, p) PUSH_BYTES(utf8, cur, OFF32(p), SIZE32)<br/>+#if BYTEORDER == 0x4321 || BYTEORDER == 0x87654321 /* big-endian */<br/>+# define NEEDS_SWAP(d) (TYPE_ENDIANNESS(d) == TYPE_IS_LITTLE_ENDIAN)<br/>+#elif BYTEORDER == 0x1234 || BYTEORDER == 0x12345678 /* little-endian */<br/>+# define NEEDS_SWAP(d) (TYPE_ENDIANNESS(d) == TYPE_IS_BIG_ENDIAN)<br/>+#else<br/>+# error &quot;Unsupported byteorder&quot;<br/>+ /* Need to add code here to re-instate mixed endian support.<br/>+ NEEDS_SWAP would need to hold a flag indicating which action to<br/>+ take, and S_reverse_copy and the code in uni_to_bytes would need<br/>+ logic adding to deal with any mixed-endian transformations needed.<br/>+ */<br/>+#endif<br/> <br/> /* Only to be used inside a loop (see the break) */<br/>-#define SHIFT_BYTES(utf8, s, strend, buf, len, datumtype) \<br/>+#define SHIFT_BYTES(utf8, s, strend, buf, len, datumtype, needs_swap) \<br/> STMT_START { \<br/>- if (utf8) { \<br/>+ if (UNLIKELY(utf8)) { \<br/> if (!uni_to_bytes(aTHX_ &amp;s, strend, \<br/> (char *) (buf), len, datumtype)) break; \<br/> } else { \<br/>- Copy(s, (char *) (buf), len, char); \<br/>+ if (UNLIKELY(needs_swap)) \<br/>+ S_reverse_copy(s, (char *) (buf), len); \<br/>+ else \<br/>+ Copy(s, (char *) (buf), len, char); \<br/> s += len; \<br/> } \<br/> } STMT_END<br/> <br/>-#define SHIFT_VAR(utf8, s, strend, var, datumtype) \<br/>- SHIFT_BYTES(utf8, s, strend, &amp;(var), sizeof(var), datumtype)<br/>+#define SHIFT16(utf8, s, strend, p, datumtype, needs_swap) \<br/>+ SHIFT_BYTES(utf8, s, strend, OFF16(p), SIZE16, datumtype, needs_swap)<br/>+<br/>+#define SHIFT32(utf8, s, strend, p, datumtype, needs_swap) \<br/>+ SHIFT_BYTES(utf8, s, strend, OFF32(p), SIZE32, datumtype, needs_swap)<br/> <br/>-#define PUSH_VAR(utf8, aptr, var) \<br/>- PUSH_BYTES(utf8, aptr, &amp;(var), sizeof(var))<br/>+#define SHIFT_VAR(utf8, s, strend, var, datumtype, needs_swap) \<br/>+ SHIFT_BYTES(utf8, s, strend, &amp;(var), sizeof(var), datumtype, needs_swap)<br/>+<br/>+#define PUSH_VAR(utf8, aptr, var, needs_swap) \<br/>+ PUSH_BYTES(utf8, aptr, &amp;(var), sizeof(var), needs_swap)<br/> <br/> /* Avoid stack overflow due to pathological templates. 100 should be plenty. */<br/> #define MAX_SUB_TEMPLATE_LEVEL 100<br/>@@ -237,160 +236,25 @@ S_mul128(pTHX_ SV *sv, U8 m)<br/> #define TYPE_MODIFIERS(t) ((t) &amp; ~0xFF)<br/> #define TYPE_NO_MODIFIERS(t) ((t) &amp; 0xFF)<br/> <br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/>-# define SHRIEKING_ALLOWED_TYPES &quot;sSiIlLxXnNvV@.&quot;<br/>-#else<br/>-# define SHRIEKING_ALLOWED_TYPES &quot;sSiIlLxX&quot;<br/>-#endif<br/>-<br/>-#ifndef PERL_PACK_CAN_BYTEORDER<br/>-/* Put &quot;can&#39;t&quot; first because it is shorter */<br/>-# define TYPE_ENDIANNESS(t) 0<br/>-# define TYPE_NO_ENDIANNESS(t) (t)<br/>-<br/>-# define ENDIANNESS_ALLOWED_TYPES &quot;&quot;<br/>-<br/>-# define DO_BO_UNPACK(var, type)<br/>-# define DO_BO_PACK(var, type)<br/>-# define DO_BO_UNPACK_PTR(var, type, pre_cast, post_cast)<br/>-# define DO_BO_PACK_PTR(var, type, pre_cast, post_cast)<br/>-# define DO_BO_UNPACK_N(var, type)<br/>-# define DO_BO_PACK_N(var, type)<br/>-# define DO_BO_UNPACK_P(var)<br/>-# define DO_BO_PACK_P(var)<br/>-# define DO_BO_UNPACK_PC(var)<br/>-# define DO_BO_PACK_PC(var)<br/>-<br/>-#else /* PERL_PACK_CAN_BYTEORDER */<br/>-<br/> # define TYPE_ENDIANNESS(t) ((t) &amp; TYPE_ENDIANNESS_MASK)<br/> # define TYPE_NO_ENDIANNESS(t) ((t) &amp; ~TYPE_ENDIANNESS_MASK)<br/> <br/> # define ENDIANNESS_ALLOWED_TYPES &quot;sSiIlLqQjJfFdDpP(&quot;<br/> <br/>-# define DO_BO_UNPACK(var, type) \<br/>- STMT_START { \<br/>- switch (TYPE_ENDIANNESS(datumtype)) { \<br/>- case TYPE_IS_BIG_ENDIAN: var = my_betoh ## type (var); break; \<br/>- case TYPE_IS_LITTLE_ENDIAN: var = my_letoh ## type (var); break; \<br/>- default: break; \<br/>- } \<br/>- } STMT_END<br/>-<br/>-# define DO_BO_PACK(var, type) \<br/>- STMT_START { \<br/>- switch (TYPE_ENDIANNESS(datumtype)) { \<br/>- case TYPE_IS_BIG_ENDIAN: var = my_htobe ## type (var); break; \<br/>- case TYPE_IS_LITTLE_ENDIAN: var = my_htole ## type (var); break; \<br/>- default: break; \<br/>- } \<br/>- } STMT_END<br/>-<br/>-# define DO_BO_UNPACK_PTR(var, type, pre_cast, post_cast) \<br/>- STMT_START { \<br/>- switch (TYPE_ENDIANNESS(datumtype)) { \<br/>- case TYPE_IS_BIG_ENDIAN: \<br/>- var = (post_cast*) my_betoh ## type ((pre_cast) var); \<br/>- break; \<br/>- case TYPE_IS_LITTLE_ENDIAN: \<br/>- var = (post_cast *) my_letoh ## type ((pre_cast) var); \<br/>- break; \<br/>- default: \<br/>- break; \<br/>- } \<br/>- } STMT_END<br/>-<br/>-# define DO_BO_PACK_PTR(var, type, pre_cast, post_cast) \<br/>- STMT_START { \<br/>- switch (TYPE_ENDIANNESS(datumtype)) { \<br/>- case TYPE_IS_BIG_ENDIAN: \<br/>- var = (post_cast *) my_htobe ## type ((pre_cast) var); \<br/>- break; \<br/>- case TYPE_IS_LITTLE_ENDIAN: \<br/>- var = (post_cast *) my_htole ## type ((pre_cast) var); \<br/>- break; \<br/>- default: \<br/>- break; \<br/>- } \<br/>- } STMT_END<br/>-<br/>-# define BO_CANT_DOIT(action, type) \<br/>- STMT_START { \<br/>- switch (TYPE_ENDIANNESS(datumtype)) { \<br/>- case TYPE_IS_BIG_ENDIAN: \<br/>- Perl_croak(aTHX_ &quot;Can&#39;t %s big-endian %ss on this &quot; \<br/>- &quot;platform&quot;, #action, #type); \<br/>- break; \<br/>- case TYPE_IS_LITTLE_ENDIAN: \<br/>- Perl_croak(aTHX_ &quot;Can&#39;t %s little-endian %ss on this &quot; \<br/>- &quot;platform&quot;, #action, #type); \<br/>- break; \<br/>- default: \<br/>- break; \<br/>- } \<br/>- } STMT_END<br/>-<br/>-# if PTRSIZE == INTSIZE<br/>-# define DO_BO_UNPACK_P(var) DO_BO_UNPACK_PTR(var, i, int, void)<br/>-# define DO_BO_PACK_P(var) DO_BO_PACK_PTR(var, i, int, void)<br/>-# define DO_BO_UNPACK_PC(var) DO_BO_UNPACK_PTR(var, i, int, char)<br/>-# define DO_BO_PACK_PC(var) DO_BO_PACK_PTR(var, i, int, char)<br/>-# elif PTRSIZE == LONGSIZE<br/>-# if LONGSIZE &lt; IVSIZE &amp;&amp; IVSIZE == 8<br/>-# define DO_BO_UNPACK_P(var) DO_BO_UNPACK_PTR(var, 64, IV, void)<br/>-# define DO_BO_PACK_P(var) DO_BO_PACK_PTR(var, 64, IV, void)<br/>-# define DO_BO_UNPACK_PC(var) DO_BO_UNPACK_PTR(var, 64, IV, char)<br/>-# define DO_BO_PACK_PC(var) DO_BO_PACK_PTR(var, 64, IV, char)<br/>-# else<br/>-# define DO_BO_UNPACK_P(var) DO_BO_UNPACK_PTR(var, l, IV, void)<br/>-# define DO_BO_PACK_P(var) DO_BO_PACK_PTR(var, l, IV, void)<br/>-# define DO_BO_UNPACK_PC(var) DO_BO_UNPACK_PTR(var, l, IV, char)<br/>-# define DO_BO_PACK_PC(var) DO_BO_PACK_PTR(var, l, IV, char)<br/>-# endif<br/>-# elif PTRSIZE == IVSIZE<br/>-# define DO_BO_UNPACK_P(var) DO_BO_UNPACK_PTR(var, l, IV, void)<br/>-# define DO_BO_PACK_P(var) DO_BO_PACK_PTR(var, l, IV, void)<br/>-# define DO_BO_UNPACK_PC(var) DO_BO_UNPACK_PTR(var, l, IV, char)<br/>-# define DO_BO_PACK_PC(var) DO_BO_PACK_PTR(var, l, IV, char)<br/>-# else<br/>-# define DO_BO_UNPACK_P(var) BO_CANT_DOIT(unpack, pointer)<br/>-# define DO_BO_PACK_P(var) BO_CANT_DOIT(pack, pointer)<br/>-# define DO_BO_UNPACK_PC(var) BO_CANT_DOIT(unpack, pointer)<br/>-# define DO_BO_PACK_PC(var) BO_CANT_DOIT(pack, pointer)<br/>-# endif<br/>-<br/>-# if defined(my_htolen) &amp;&amp; defined(my_letohn) &amp;&amp; \<br/>- defined(my_htoben) &amp;&amp; defined(my_betohn)<br/>-# define DO_BO_UNPACK_N(var, type) \<br/>- STMT_START { \<br/>- switch (TYPE_ENDIANNESS(datumtype)) { \<br/>- case TYPE_IS_BIG_ENDIAN: my_betohn(&amp;var, sizeof(type)); break;\<br/>- case TYPE_IS_LITTLE_ENDIAN: my_letohn(&amp;var, sizeof(type)); break;\<br/>- default: break; \<br/>- } \<br/>- } STMT_END<br/>-<br/>-# define DO_BO_PACK_N(var, type) \<br/>- STMT_START { \<br/>- switch (TYPE_ENDIANNESS(datumtype)) { \<br/>- case TYPE_IS_BIG_ENDIAN: my_htoben(&amp;var, sizeof(type)); break;\<br/>- case TYPE_IS_LITTLE_ENDIAN: my_htolen(&amp;var, sizeof(type)); break;\<br/>- default: break; \<br/>- } \<br/>- } STMT_END<br/>-# else<br/>-# define DO_BO_UNPACK_N(var, type) BO_CANT_DOIT(unpack, type)<br/>-# define DO_BO_PACK_N(var, type) BO_CANT_DOIT(pack, type)<br/>-# endif<br/>-<br/>-#endif /* PERL_PACK_CAN_BYTEORDER */<br/>-<br/> #define PACK_SIZE_CANNOT_CSUM 0x80<br/> #define PACK_SIZE_UNPREDICTABLE 0x40 /* Not a fixed size element */<br/> #define PACK_SIZE_MASK 0x3F<br/> <br/> #include &quot;packsizetables.c&quot;<br/> <br/>+static void<br/>+S_reverse_copy(const char *src, char *dest, STRLEN len)<br/>+{<br/>+ dest += len;<br/>+ while (len--)<br/>+ *--dest = *src++;<br/>+}<br/>+<br/> STATIC U8<br/> uni_to_byte(pTHX_ const char **s, const char *end, I32 datumtype)<br/> {<br/>@@ -426,6 +290,11 @@ uni_to_bytes(pTHX_ const char **s, const char *end, const char *buf, int buf_len<br/> int bad = 0;<br/> const U32 flags = ckWARN(WARN_UTF8) ?<br/> UTF8_CHECK_ONLY : (UTF8_CHECK_ONLY | UTF8_ALLOW_ANY);<br/>+ const bool needs_swap = NEEDS_SWAP(datumtype);<br/>+<br/>+ if (UNLIKELY(needs_swap))<br/>+ buf += buf_len;<br/>+<br/> for (;buf_len &gt; 0; buf_len--) {<br/> if (from &gt;= end) return FALSE;<br/> val = utf8n_to_uvchr((U8 *) from, end-from, &amp;retlen, flags);<br/>@@ -437,7 +306,10 @@ uni_to_bytes(pTHX_ const char **s, const char *end, const char *buf, int buf_len<br/> bad |= 2;<br/> val &amp;= 0xff;<br/> }<br/>- *(U8 *)buf++ = (U8)val;<br/>+ if (UNLIKELY(needs_swap))<br/>+ *(U8 *)--buf = (U8)val;<br/>+ else<br/>+ *(U8 *)buf++ = (U8)val;<br/> }<br/> /* We have enough characters for the buffer. Did we have problems ? */<br/> if (bad) {<br/>@@ -479,30 +351,45 @@ next_uni_uu(pTHX_ const char **s, const char *end, I32 *out)<br/> }<br/> <br/> STATIC char *<br/>-S_bytes_to_uni(const U8 *start, STRLEN len, char *dest) {<br/>- const U8 * const end = start + len;<br/>-<br/>+S_bytes_to_uni(const U8 *start, STRLEN len, char *dest, const bool needs_swap) {<br/> PERL_ARGS_ASSERT_BYTES_TO_UNI;<br/> <br/>- while (start &lt; end) {<br/>- const UV uv = NATIVE_TO_ASCII(*start);<br/>- if (UNI_IS_INVARIANT(uv))<br/>- *dest++ = (char)(U8)UTF_TO_NATIVE(uv);<br/>- else {<br/>- *dest++ = (char)(U8)UTF8_EIGHT_BIT_HI(uv);<br/>- *dest++ = (char)(U8)UTF8_EIGHT_BIT_LO(uv);<br/>- }<br/>- start++;<br/>+ if (UNLIKELY(needs_swap)) {<br/>+ const U8 *p = start + len;<br/>+ while (p-- &gt; start) {<br/>+ const UV uv = NATIVE_TO_ASCII(*p);<br/>+ if (UNI_IS_INVARIANT(uv))<br/>+ *dest++ = (char)(U8)UTF_TO_NATIVE(uv);<br/>+ else {<br/>+ *dest++ = (char)(U8)UTF8_EIGHT_BIT_HI(uv);<br/>+ *dest++ = (char)(U8)UTF8_EIGHT_BIT_LO(uv);<br/>+ }<br/>+ }<br/>+ } else {<br/>+ const U8 * const end = start + len;<br/>+ while (start &lt; end) {<br/>+ const UV uv = NATIVE_TO_ASCII(*start);<br/>+ if (UNI_IS_INVARIANT(uv))<br/>+ *dest++ = (char)(U8)UTF_TO_NATIVE(uv);<br/>+ else {<br/>+ *dest++ = (char)(U8)UTF8_EIGHT_BIT_HI(uv);<br/>+ *dest++ = (char)(U8)UTF8_EIGHT_BIT_LO(uv);<br/>+ }<br/>+ start++;<br/>+ }<br/> }<br/> return dest;<br/> }<br/> <br/>-#define PUSH_BYTES(utf8, cur, buf, len) \<br/>+#define PUSH_BYTES(utf8, cur, buf, len, needs_swap) \<br/> STMT_START { \<br/>- if (utf8) \<br/>- (cur) = bytes_to_uni((U8 *) buf, len, (cur)); \<br/>+ if (UNLIKELY(utf8)) \<br/>+ (cur) = S_bytes_to_uni((U8 *) buf, len, (cur), needs_swap); \<br/> else { \<br/>- Copy(buf, cur, len, char); \<br/>+ if (UNLIKELY(needs_swap)) \<br/>+ S_reverse_copy((char *)(buf), cur, len); \<br/>+ else \<br/>+ Copy(buf, cur, len, char); \<br/> (cur) += (len); \<br/> } \<br/> } STMT_END<br/>@@ -528,14 +415,14 @@ STMT_START { \<br/> (start) = sv_exp_grow(cat, gl); \<br/> (cur) = (start) + SvCUR(cat); \<br/> } \<br/>- PUSH_BYTES(utf8, cur, buf, glen); \<br/>+ PUSH_BYTES(utf8, cur, buf, glen, 0); \<br/> } STMT_END<br/> <br/> #define PUSH_BYTE(utf8, s, byte) \<br/> STMT_START { \<br/> if (utf8) { \<br/> const U8 au8 = (byte); \<br/>- (s) = bytes_to_uni(&amp;au8, 1, (s)); \<br/>+ (s) = S_bytes_to_uni(&amp;au8, 1, (s), 0); \<br/> } else *(U8 *)(s)++ = (byte); \<br/> } STMT_END<br/> <br/>@@ -589,10 +476,8 @@ S_measure_struct(pTHX_ tempsym_t* symptr)<br/> Perl_croak(aTHX_ &quot;Invalid type &#39;%c&#39; in %s&quot;,<br/> (int)TYPE_NO_MODIFIERS(symptr-&gt;code),<br/> _action( symptr ) );<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> case &#39;.&#39; | TYPE_IS_SHRIEKING:<br/> case &#39;@&#39; | TYPE_IS_SHRIEKING:<br/>-#endif<br/> case &#39;@&#39;:<br/> case &#39;.&#39;:<br/> case &#39;/&#39;:<br/>@@ -779,9 +664,8 @@ S_next_symbol(pTHX_ tempsym_t* symptr )<br/> switch (*patptr) {<br/> case &#39;!&#39;:<br/> modifier = TYPE_IS_SHRIEKING;<br/>- allowed = SHRIEKING_ALLOWED_TYPES;<br/>+ allowed = &quot;sSiIlLxXnNvV@.&quot;;<br/> break;<br/>-#ifdef PERL_PACK_CAN_BYTEORDER<br/> case &#39;&gt;&#39;:<br/> modifier = TYPE_IS_BIG_ENDIAN;<br/> allowed = ENDIANNESS_ALLOWED_TYPES;<br/>@@ -790,7 +674,6 @@ S_next_symbol(pTHX_ tempsym_t* symptr )<br/> modifier = TYPE_IS_LITTLE_ENDIAN;<br/> allowed = ENDIANNESS_ALLOWED_TYPES;<br/> break;<br/>-#endif /* PERL_PACK_CAN_BYTEORDER */<br/> default:<br/> allowed = &quot;&quot;;<br/> modifier = 0;<br/>@@ -1009,6 +892,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> packprops_t props;<br/> I32 len;<br/> I32 datumtype = symptr-&gt;code;<br/>+ bool needs_swap;<br/> /* do first one only unless in list context<br/> / is implemented by unpacking the count, then popping it from the<br/> stack, so must check that we&#39;re not in the middle of a / */<br/>@@ -1046,6 +930,8 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> }<br/> }<br/> <br/>+ needs_swap = NEEDS_SWAP(datumtype);<br/>+<br/> switch(TYPE_NO_ENDIANNESS(datumtype)) {<br/> default:<br/> Perl_croak(aTHX_ &quot;Invalid type &#39;%c&#39; in unpack&quot;, (int)TYPE_NO_MODIFIERS(datumtype) );<br/>@@ -1081,17 +967,11 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> *symptr = savsym;<br/> break;<br/> }<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> case &#39;.&#39; | TYPE_IS_SHRIEKING:<br/>-#endif<br/> case &#39;.&#39;: {<br/> const char *from;<br/> SV *sv;<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> const bool u8 = utf8 &amp;&amp; !(datumtype &amp; TYPE_IS_SHRIEKING);<br/>-#else /* PERL_PACK_CAN_SHRIEKSIGN */<br/>- const bool u8 = utf8;<br/>-#endif<br/> if (howlen == e_star) from = strbeg;<br/> else if (len &lt;= 0) from = s;<br/> else {<br/>@@ -1106,16 +986,10 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> mXPUSHs(sv);<br/> break;<br/> }<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> case &#39;@&#39; | TYPE_IS_SHRIEKING:<br/>-#endif<br/> case &#39;@&#39;:<br/> s = strbeg + symptr-&gt;strbeg;<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> if (utf8 &amp;&amp; !(datumtype &amp; TYPE_IS_SHRIEKING))<br/>-#else /* PERL_PACK_CAN_SHRIEKSIGN */<br/>- if (utf8)<br/>-#endif<br/> {<br/> while (len &gt; 0) {<br/> if (s &gt;= strend)<br/>@@ -1474,8 +1348,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> #if SHORTSIZE != SIZE16<br/> while (len-- &gt; 0) {<br/> short ashort;<br/>- SHIFT_VAR(utf8, s, strend, ashort, datumtype);<br/>- DO_BO_UNPACK(ashort, s);<br/>+ SHIFT_VAR(utf8, s, strend, ashort, datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHi(ashort);<br/> else if (checksum &gt; bits_in_uv)<br/>@@ -1494,8 +1367,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> #if U16SIZE &gt; SIZE16<br/> ai16 = 0;<br/> #endif<br/>- SHIFT16(utf8, s, strend, &amp;ai16, datumtype);<br/>- DO_BO_UNPACK(ai16, 16);<br/>+ SHIFT16(utf8, s, strend, &amp;ai16, datumtype, needs_swap);<br/> #if U16SIZE &gt; SIZE16<br/> if (ai16 &gt; 32767)<br/> ai16 -= 65536;<br/>@@ -1512,8 +1384,8 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> #if SHORTSIZE != SIZE16<br/> while (len-- &gt; 0) {<br/> unsigned short aushort;<br/>- SHIFT_VAR(utf8, s, strend, aushort, datumtype);<br/>- DO_BO_UNPACK(aushort, s);<br/>+ SHIFT_VAR(utf8, s, strend, aushort, datumtype, needs_swap,<br/>+ needs_swap);<br/> if (!checksum)<br/> mPUSHu(aushort);<br/> else if (checksum &gt; bits_in_uv)<br/>@@ -1533,16 +1405,11 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> #if U16SIZE &gt; SIZE16<br/> au16 = 0;<br/> #endif<br/>- SHIFT16(utf8, s, strend, &amp;au16, datumtype);<br/>- DO_BO_UNPACK(au16, 16);<br/>-#ifdef HAS_NTOHS<br/>+ SHIFT16(utf8, s, strend, &amp;au16, datumtype, needs_swap);<br/> if (datumtype == &#39;n&#39;)<br/> au16 = PerlSock_ntohs(au16);<br/>-#endif<br/>-#ifdef HAS_VTOHS<br/> if (datumtype == &#39;v&#39;)<br/> au16 = vtohs(au16);<br/>-#endif<br/> if (!checksum)<br/> mPUSHu(au16);<br/> else if (checksum &gt; bits_in_uv)<br/>@@ -1551,7 +1418,6 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> cuv += au16;<br/> }<br/> break;<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> case &#39;v&#39; | TYPE_IS_SHRIEKING:<br/> case &#39;n&#39; | TYPE_IS_SHRIEKING:<br/> while (len-- &gt; 0) {<br/>@@ -1559,15 +1425,13 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> # if U16SIZE &gt; SIZE16<br/> ai16 = 0;<br/> # endif<br/>- SHIFT16(utf8, s, strend, &amp;ai16, datumtype);<br/>-# ifdef HAS_NTOHS<br/>+ SHIFT16(utf8, s, strend, &amp;ai16, datumtype, needs_swap);<br/>+ /* There should never be any byte-swapping here. */<br/>+ assert(!TYPE_ENDIANNESS(datumtype));<br/> if (datumtype == (&#39;n&#39; | TYPE_IS_SHRIEKING))<br/> ai16 = (I16) PerlSock_ntohs((U16) ai16);<br/>-# endif /* HAS_NTOHS */<br/>-# ifdef HAS_VTOHS<br/> if (datumtype == (&#39;v&#39; | TYPE_IS_SHRIEKING))<br/> ai16 = (I16) vtohs((U16) ai16);<br/>-# endif /* HAS_VTOHS */<br/> if (!checksum)<br/> mPUSHi(ai16);<br/> else if (checksum &gt; bits_in_uv)<br/>@@ -1576,13 +1440,11 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> cuv += ai16;<br/> }<br/> break;<br/>-#endif /* PERL_PACK_CAN_SHRIEKSIGN */<br/> case &#39;i&#39;:<br/> case &#39;i&#39; | TYPE_IS_SHRIEKING:<br/> while (len-- &gt; 0) {<br/> int aint;<br/>- SHIFT_VAR(utf8, s, strend, aint, datumtype);<br/>- DO_BO_UNPACK(aint, i);<br/>+ SHIFT_VAR(utf8, s, strend, aint, datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHi(aint);<br/> else if (checksum &gt; bits_in_uv)<br/>@@ -1595,8 +1457,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> case &#39;I&#39; | TYPE_IS_SHRIEKING:<br/> while (len-- &gt; 0) {<br/> unsigned int auint;<br/>- SHIFT_VAR(utf8, s, strend, auint, datumtype);<br/>- DO_BO_UNPACK(auint, i);<br/>+ SHIFT_VAR(utf8, s, strend, auint, datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHu(auint);<br/> else if (checksum &gt; bits_in_uv)<br/>@@ -1608,16 +1469,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> case &#39;j&#39;:<br/> while (len-- &gt; 0) {<br/> IV aiv;<br/>- SHIFT_VAR(utf8, s, strend, aiv, datumtype);<br/>-#if IVSIZE == INTSIZE<br/>- DO_BO_UNPACK(aiv, i);<br/>-#elif IVSIZE == LONGSIZE<br/>- DO_BO_UNPACK(aiv, l);<br/>-#elif defined(HAS_QUAD) &amp;&amp; IVSIZE == U64SIZE<br/>- DO_BO_UNPACK(aiv, 64);<br/>-#else<br/>- Perl_croak(aTHX_ &quot;&#39;j&#39; not supported on this platform&quot;);<br/>-#endif<br/>+ SHIFT_VAR(utf8, s, strend, aiv, datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHi(aiv);<br/> else if (checksum &gt; bits_in_uv)<br/>@@ -1629,16 +1481,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> case &#39;J&#39;:<br/> while (len-- &gt; 0) {<br/> UV auv;<br/>- SHIFT_VAR(utf8, s, strend, auv, datumtype);<br/>-#if IVSIZE == INTSIZE<br/>- DO_BO_UNPACK(auv, i);<br/>-#elif IVSIZE == LONGSIZE<br/>- DO_BO_UNPACK(auv, l);<br/>-#elif defined(HAS_QUAD) &amp;&amp; IVSIZE == U64SIZE<br/>- DO_BO_UNPACK(auv, 64);<br/>-#else<br/>- Perl_croak(aTHX_ &quot;&#39;J&#39; not supported on this platform&quot;);<br/>-#endif<br/>+ SHIFT_VAR(utf8, s, strend, auv, datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHu(auv);<br/> else if (checksum &gt; bits_in_uv)<br/>@@ -1651,8 +1494,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> #if LONGSIZE != SIZE32<br/> while (len-- &gt; 0) {<br/> long along;<br/>- SHIFT_VAR(utf8, s, strend, along, datumtype);<br/>- DO_BO_UNPACK(along, l);<br/>+ SHIFT_VAR(utf8, s, strend, along, datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHi(along);<br/> else if (checksum &gt; bits_in_uv)<br/>@@ -1670,8 +1512,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> #if U32SIZE &gt; SIZE32<br/> ai32 = 0;<br/> #endif<br/>- SHIFT32(utf8, s, strend, &amp;ai32, datumtype);<br/>- DO_BO_UNPACK(ai32, 32);<br/>+ SHIFT32(utf8, s, strend, &amp;ai32, datumtype, needs_swap);<br/> #if U32SIZE &gt; SIZE32<br/> if (ai32 &gt; 2147483647) ai32 -= 4294967296;<br/> #endif<br/>@@ -1687,8 +1528,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> #if LONGSIZE != SIZE32<br/> while (len-- &gt; 0) {<br/> unsigned long aulong;<br/>- SHIFT_VAR(utf8, s, strend, aulong, datumtype);<br/>- DO_BO_UNPACK(aulong, l);<br/>+ SHIFT_VAR(utf8, s, strend, aulong, datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHu(aulong);<br/> else if (checksum &gt; bits_in_uv)<br/>@@ -1708,16 +1548,11 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> #if U32SIZE &gt; SIZE32<br/> au32 = 0;<br/> #endif<br/>- SHIFT32(utf8, s, strend, &amp;au32, datumtype);<br/>- DO_BO_UNPACK(au32, 32);<br/>-#ifdef HAS_NTOHL<br/>+ SHIFT32(utf8, s, strend, &amp;au32, datumtype, needs_swap);<br/> if (datumtype == &#39;N&#39;)<br/> au32 = PerlSock_ntohl(au32);<br/>-#endif<br/>-#ifdef HAS_VTOHL<br/> if (datumtype == &#39;V&#39;)<br/> au32 = vtohl(au32);<br/>-#endif<br/> if (!checksum)<br/> mPUSHu(au32);<br/> else if (checksum &gt; bits_in_uv)<br/>@@ -1726,23 +1561,20 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> cuv += au32;<br/> }<br/> break;<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> case &#39;V&#39; | TYPE_IS_SHRIEKING:<br/> case &#39;N&#39; | TYPE_IS_SHRIEKING:<br/> while (len-- &gt; 0) {<br/> I32 ai32;<br/>-# if U32SIZE &gt; SIZE32<br/>+#if U32SIZE &gt; SIZE32<br/> ai32 = 0;<br/>-# endif<br/>- SHIFT32(utf8, s, strend, &amp;ai32, datumtype);<br/>-# ifdef HAS_NTOHL<br/>+#endif<br/>+ SHIFT32(utf8, s, strend, &amp;ai32, datumtype, needs_swap);<br/>+ /* There should never be any byte swapping here. */<br/>+ assert(!TYPE_ENDIANNESS(datumtype));<br/> if (datumtype == (&#39;N&#39; | TYPE_IS_SHRIEKING))<br/> ai32 = (I32)PerlSock_ntohl((U32)ai32);<br/>-# endif<br/>-# ifdef HAS_VTOHL<br/> if (datumtype == (&#39;V&#39; | TYPE_IS_SHRIEKING))<br/> ai32 = (I32)vtohl((U32)ai32);<br/>-# endif<br/> if (!checksum)<br/> mPUSHi(ai32);<br/> else if (checksum &gt; bits_in_uv)<br/>@@ -1751,12 +1583,10 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> cuv += ai32;<br/> }<br/> break;<br/>-#endif /* PERL_PACK_CAN_SHRIEKSIGN */<br/> case &#39;p&#39;:<br/> while (len-- &gt; 0) {<br/> const char *aptr;<br/>- SHIFT_VAR(utf8, s, strend, aptr, datumtype);<br/>- DO_BO_UNPACK_PC(aptr);<br/>+ SHIFT_VAR(utf8, s, strend, aptr, datumtype, needs_swap);<br/> /* newSVpv generates undef if aptr is NULL */<br/> mPUSHs(newSVpv(aptr, 0));<br/> }<br/>@@ -1809,8 +1639,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> EXTEND(SP, 1);<br/> if (s + sizeof(char*) &lt;= strend) {<br/> char *aptr;<br/>- SHIFT_VAR(utf8, s, strend, aptr, datumtype);<br/>- DO_BO_UNPACK_PC(aptr);<br/>+ SHIFT_VAR(utf8, s, strend, aptr, datumtype, needs_swap);<br/> /* newSVpvn generates undef if aptr is NULL */<br/> PUSHs(newSVpvn_flags(aptr, len, SVs_TEMP));<br/> }<br/>@@ -1819,8 +1648,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> case &#39;q&#39;:<br/> while (len-- &gt; 0) {<br/> Quad_t aquad;<br/>- SHIFT_VAR(utf8, s, strend, aquad, datumtype);<br/>- DO_BO_UNPACK(aquad, 64);<br/>+ SHIFT_VAR(utf8, s, strend, aquad, datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHs(aquad &gt;= IV_MIN &amp;&amp; aquad &lt;= IV_MAX ?<br/> newSViv((IV)aquad) : newSVnv((NV)aquad));<br/>@@ -1833,8 +1661,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> case &#39;Q&#39;:<br/> while (len-- &gt; 0) {<br/> Uquad_t auquad;<br/>- SHIFT_VAR(utf8, s, strend, auquad, datumtype);<br/>- DO_BO_UNPACK(auquad, 64);<br/>+ SHIFT_VAR(utf8, s, strend, auquad, datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHs(auquad &lt;= UV_MAX ?<br/> newSVuv((UV)auquad) : newSVnv((NV)auquad));<br/>@@ -1849,8 +1676,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> case &#39;f&#39;:<br/> while (len-- &gt; 0) {<br/> float afloat;<br/>- SHIFT_VAR(utf8, s, strend, afloat, datumtype);<br/>- DO_BO_UNPACK_N(afloat, float);<br/>+ SHIFT_VAR(utf8, s, strend, afloat, datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHn(afloat);<br/> else<br/>@@ -1860,8 +1686,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> case &#39;d&#39;:<br/> while (len-- &gt; 0) {<br/> double adouble;<br/>- SHIFT_VAR(utf8, s, strend, adouble, datumtype);<br/>- DO_BO_UNPACK_N(adouble, double);<br/>+ SHIFT_VAR(utf8, s, strend, adouble, datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHn(adouble);<br/> else<br/>@@ -1871,8 +1696,8 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> case &#39;F&#39;:<br/> while (len-- &gt; 0) {<br/> NV_bytes anv;<br/>- SHIFT_BYTES(utf8, s, strend, anv.bytes, sizeof(anv.bytes), datumtype);<br/>- DO_BO_UNPACK_N(anv.nv, NV);<br/>+ SHIFT_BYTES(utf8, s, strend, anv.bytes, sizeof(anv.bytes),<br/>+ datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHn(anv.nv);<br/> else<br/>@@ -1883,8 +1708,8 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c<br/> case &#39;D&#39;:<br/> while (len-- &gt; 0) {<br/> ld_bytes aldouble;<br/>- SHIFT_BYTES(utf8, s, strend, aldouble.bytes, sizeof(aldouble.bytes), datumtype);<br/>- DO_BO_UNPACK_N(aldouble.ld, long double);<br/>+ SHIFT_BYTES(utf8, s, strend, aldouble.bytes,<br/>+ sizeof(aldouble.bytes), datumtype, needs_swap);<br/> if (!checksum)<br/> mPUSHn(aldouble.ld);<br/> else<br/>@@ -2288,6 +2113,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> howlen_t howlen = symptr-&gt;howlen;<br/> char *start = SvPVX(cat);<br/> char *cur = start + SvCUR(cat);<br/>+ bool needs_swap;<br/> <br/> #define NEXTFROM (lengthcode ? lengthcode : items-- &gt; 0 ? *beglist++ : &amp;PL_sv_no)<br/> <br/>@@ -2337,6 +2163,8 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> lengthcode = sv_2mortal(newSViv(count));<br/> }<br/> <br/>+ needs_swap = NEEDS_SWAP(datumtype);<br/>+<br/> /* Code inside the switch must take care to properly update<br/> cat (CUR length and &#39;\0&#39; termination) if it updated *cur and<br/> doesn&#39;t simply leave using break */<br/>@@ -2348,9 +2176,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> Perl_croak(aTHX_ &quot;&#39;%%&#39; may not be used in pack&quot;);<br/> {<br/> char *from;<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> case &#39;.&#39; | TYPE_IS_SHRIEKING:<br/>-#endif<br/> case &#39;.&#39;:<br/> if (howlen == e_star) from = start;<br/> else if (len == 0) from = cur;<br/>@@ -2363,17 +2189,11 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> fromstr = NEXTFROM;<br/> len = SvIV(fromstr);<br/> goto resize;<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> case &#39;@&#39; | TYPE_IS_SHRIEKING:<br/>-#endif<br/> case &#39;@&#39;:<br/> from = start + symptr-&gt;strbeg;<br/> resize:<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> if (utf8 &amp;&amp; !(datumtype &amp; TYPE_IS_SHRIEKING))<br/>-#else /* PERL_PACK_CAN_SHRIEKSIGN */<br/>- if (utf8)<br/>-#endif<br/> if (len &gt;= 0) {<br/> while (len &amp;&amp; from &lt; cur) {<br/> from += UTF8SKIP(from);<br/>@@ -2841,7 +2661,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> len+(endb-buffer)*UTF8_EXPAND);<br/> end = start+SvLEN(cat);<br/> }<br/>- cur = bytes_to_uni(buffer, endb-buffer, cur);<br/>+ cur = S_bytes_to_uni(buffer, endb-buffer, cur, 0);<br/> } else {<br/> if (cur &gt;= end) {<br/> *cur = &#39;\0&#39;;<br/>@@ -2875,8 +2695,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> # else<br/> afloat = (float)anv;<br/> # endif<br/>- DO_BO_PACK_N(afloat, float);<br/>- PUSH_VAR(utf8, cur, afloat);<br/>+ PUSH_VAR(utf8, cur, afloat, needs_swap);<br/> }<br/> break;<br/> case &#39;d&#39;:<br/>@@ -2897,8 +2716,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> # else<br/> adouble = (double)anv;<br/> # endif<br/>- DO_BO_PACK_N(adouble, double);<br/>- PUSH_VAR(utf8, cur, adouble);<br/>+ PUSH_VAR(utf8, cur, adouble, needs_swap);<br/> }<br/> break;<br/> case &#39;F&#39;: {<br/>@@ -2912,8 +2730,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> #else<br/> anv.nv = SvNV(fromstr);<br/> #endif<br/>- DO_BO_PACK_N(anv, NV);<br/>- PUSH_BYTES(utf8, cur, anv.bytes, sizeof(anv.bytes));<br/>+ PUSH_BYTES(utf8, cur, anv.bytes, sizeof(anv.bytes), needs_swap);<br/> }<br/> break;<br/> }<br/>@@ -2930,38 +2747,30 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> # else<br/> aldouble.ld = (long double)SvNV(fromstr);<br/> # endif<br/>- DO_BO_PACK_N(aldouble, long double);<br/>- PUSH_BYTES(utf8, cur, aldouble.bytes, sizeof(aldouble.bytes));<br/>+ PUSH_BYTES(utf8, cur, aldouble.bytes, sizeof(aldouble.bytes),<br/>+ needs_swap);<br/> }<br/> break;<br/> }<br/> #endif<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> case &#39;n&#39; | TYPE_IS_SHRIEKING:<br/>-#endif<br/> case &#39;n&#39;:<br/> while (len-- &gt; 0) {<br/> I16 ai16;<br/> fromstr = NEXTFROM;<br/> ai16 = (I16)SvIV(fromstr);<br/>-#ifdef HAS_HTONS<br/> ai16 = PerlSock_htons(ai16);<br/>-#endif<br/>- PUSH16(utf8, cur, &amp;ai16);<br/>+ PUSH16(utf8, cur, &amp;ai16, FALSE);<br/> }<br/> break;<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> case &#39;v&#39; | TYPE_IS_SHRIEKING:<br/>-#endif<br/> case &#39;v&#39;:<br/> while (len-- &gt; 0) {<br/> I16 ai16;<br/> fromstr = NEXTFROM;<br/> ai16 = (I16)SvIV(fromstr);<br/>-#ifdef HAS_HTOVS<br/> ai16 = htovs(ai16);<br/>-#endif<br/>- PUSH16(utf8, cur, &amp;ai16);<br/>+ PUSH16(utf8, cur, &amp;ai16, FALSE);<br/> }<br/> break;<br/> case &#39;S&#39; | TYPE_IS_SHRIEKING:<br/>@@ -2970,8 +2779,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> unsigned short aushort;<br/> fromstr = NEXTFROM;<br/> aushort = SvUV(fromstr);<br/>- DO_BO_PACK(aushort, s);<br/>- PUSH_VAR(utf8, cur, aushort);<br/>+ PUSH_VAR(utf8, cur, aushort, needs_swap);<br/> }<br/> break;<br/> #else<br/>@@ -2982,8 +2790,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> U16 au16;<br/> fromstr = NEXTFROM;<br/> au16 = (U16)SvUV(fromstr);<br/>- DO_BO_PACK(au16, 16);<br/>- PUSH16(utf8, cur, &amp;au16);<br/>+ PUSH16(utf8, cur, &amp;au16, needs_swap);<br/> }<br/> break;<br/> case &#39;s&#39; | TYPE_IS_SHRIEKING:<br/>@@ -2992,8 +2799,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> short ashort;<br/> fromstr = NEXTFROM;<br/> ashort = SvIV(fromstr);<br/>- DO_BO_PACK(ashort, s);<br/>- PUSH_VAR(utf8, cur, ashort);<br/>+ PUSH_VAR(utf8, cur, ashort, needs_swap);<br/> }<br/> break;<br/> #else<br/>@@ -3004,8 +2810,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> I16 ai16;<br/> fromstr = NEXTFROM;<br/> ai16 = (I16)SvIV(fromstr);<br/>- DO_BO_PACK(ai16, 16);<br/>- PUSH16(utf8, cur, &amp;ai16);<br/>+ PUSH16(utf8, cur, &amp;ai16, needs_swap);<br/> }<br/> break;<br/> case &#39;I&#39;:<br/>@@ -3014,8 +2819,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> unsigned int auint;<br/> fromstr = NEXTFROM;<br/> auint = SvUV(fromstr);<br/>- DO_BO_PACK(auint, i);<br/>- PUSH_VAR(utf8, cur, auint);<br/>+ PUSH_VAR(utf8, cur, auint, needs_swap);<br/> }<br/> break;<br/> case &#39;j&#39;:<br/>@@ -3023,16 +2827,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> IV aiv;<br/> fromstr = NEXTFROM;<br/> aiv = SvIV(fromstr);<br/>-#if IVSIZE == INTSIZE<br/>- DO_BO_PACK(aiv, i);<br/>-#elif IVSIZE == LONGSIZE<br/>- DO_BO_PACK(aiv, l);<br/>-#elif defined(HAS_QUAD) &amp;&amp; IVSIZE == U64SIZE<br/>- DO_BO_PACK(aiv, 64);<br/>-#else<br/>- Perl_croak(aTHX_ &quot;&#39;j&#39; not supported on this platform&quot;);<br/>-#endif<br/>- PUSH_VAR(utf8, cur, aiv);<br/>+ PUSH_VAR(utf8, cur, aiv, needs_swap);<br/> }<br/> break;<br/> case &#39;J&#39;:<br/>@@ -3040,16 +2835,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> UV auv;<br/> fromstr = NEXTFROM;<br/> auv = SvUV(fromstr);<br/>-#if UVSIZE == INTSIZE<br/>- DO_BO_PACK(auv, i);<br/>-#elif UVSIZE == LONGSIZE<br/>- DO_BO_PACK(auv, l);<br/>-#elif defined(HAS_QUAD) &amp;&amp; UVSIZE == U64SIZE<br/>- DO_BO_PACK(auv, 64);<br/>-#else<br/>- Perl_croak(aTHX_ &quot;&#39;J&#39; not supported on this platform&quot;);<br/>-#endif<br/>- PUSH_VAR(utf8, cur, auv);<br/>+ PUSH_VAR(utf8, cur, auv, needs_swap);<br/> }<br/> break;<br/> case &#39;w&#39;:<br/>@@ -3145,36 +2931,27 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> int aint;<br/> fromstr = NEXTFROM;<br/> aint = SvIV(fromstr);<br/>- DO_BO_PACK(aint, i);<br/>- PUSH_VAR(utf8, cur, aint);<br/>+ PUSH_VAR(utf8, cur, aint, needs_swap);<br/> }<br/> break;<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> case &#39;N&#39; | TYPE_IS_SHRIEKING:<br/>-#endif<br/> case &#39;N&#39;:<br/> while (len-- &gt; 0) {<br/> U32 au32;<br/> fromstr = NEXTFROM;<br/> au32 = SvUV(fromstr);<br/>-#ifdef HAS_HTONL<br/> au32 = PerlSock_htonl(au32);<br/>-#endif<br/>- PUSH32(utf8, cur, &amp;au32);<br/>+ PUSH32(utf8, cur, &amp;au32, FALSE);<br/> }<br/> break;<br/>-#ifdef PERL_PACK_CAN_SHRIEKSIGN<br/> case &#39;V&#39; | TYPE_IS_SHRIEKING:<br/>-#endif<br/> case &#39;V&#39;:<br/> while (len-- &gt; 0) {<br/> U32 au32;<br/> fromstr = NEXTFROM;<br/> au32 = SvUV(fromstr);<br/>-#ifdef HAS_HTOVL<br/> au32 = htovl(au32);<br/>-#endif<br/>- PUSH32(utf8, cur, &amp;au32);<br/>+ PUSH32(utf8, cur, &amp;au32, FALSE);<br/> }<br/> break;<br/> case &#39;L&#39; | TYPE_IS_SHRIEKING:<br/>@@ -3183,8 +2960,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> unsigned long aulong;<br/> fromstr = NEXTFROM;<br/> aulong = SvUV(fromstr);<br/>- DO_BO_PACK(aulong, l);<br/>- PUSH_VAR(utf8, cur, aulong);<br/>+ PUSH_VAR(utf8, cur, aulong, needs_swap);<br/> }<br/> break;<br/> #else<br/>@@ -3195,8 +2971,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> U32 au32;<br/> fromstr = NEXTFROM;<br/> au32 = SvUV(fromstr);<br/>- DO_BO_PACK(au32, 32);<br/>- PUSH32(utf8, cur, &amp;au32);<br/>+ PUSH32(utf8, cur, &amp;au32, needs_swap);<br/> }<br/> break;<br/> case &#39;l&#39; | TYPE_IS_SHRIEKING:<br/>@@ -3205,8 +2980,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> long along;<br/> fromstr = NEXTFROM;<br/> along = SvIV(fromstr);<br/>- DO_BO_PACK(along, l);<br/>- PUSH_VAR(utf8, cur, along);<br/>+ PUSH_VAR(utf8, cur, along, needs_swap);<br/> }<br/> break;<br/> #else<br/>@@ -3217,8 +2991,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> I32 ai32;<br/> fromstr = NEXTFROM;<br/> ai32 = SvIV(fromstr);<br/>- DO_BO_PACK(ai32, 32);<br/>- PUSH32(utf8, cur, &amp;ai32);<br/>+ PUSH32(utf8, cur, &amp;ai32, needs_swap);<br/> }<br/> break;<br/> #ifdef HAS_QUAD<br/>@@ -3227,8 +3000,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> Uquad_t auquad;<br/> fromstr = NEXTFROM;<br/> auquad = (Uquad_t) SvUV(fromstr);<br/>- DO_BO_PACK(auquad, 64);<br/>- PUSH_VAR(utf8, cur, auquad);<br/>+ PUSH_VAR(utf8, cur, auquad, needs_swap);<br/> }<br/> break;<br/> case &#39;q&#39;:<br/>@@ -3236,8 +3008,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> Quad_t aquad;<br/> fromstr = NEXTFROM;<br/> aquad = (Quad_t)SvIV(fromstr);<br/>- DO_BO_PACK(aquad, 64);<br/>- PUSH_VAR(utf8, cur, aquad);<br/>+ PUSH_VAR(utf8, cur, aquad, needs_swap);<br/> }<br/> break;<br/> #endif /* HAS_QUAD */<br/>@@ -3268,8 +3039,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> else<br/> aptr = SvPV_force_flags_nolen(fromstr, 0);<br/> }<br/>- DO_BO_PACK_PC(aptr);<br/>- PUSH_VAR(utf8, cur, aptr);<br/>+ PUSH_VAR(utf8, cur, aptr, needs_swap);<br/> }<br/> break;<br/> case &#39;u&#39;: {<br/>@@ -3315,7 +3085,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )<br/> end = doencodes(hunk, aptr, todo);<br/> aptr += todo;<br/> }<br/>- PUSH_BYTES(utf8, cur, hunk, end-hunk);<br/>+ PUSH_BYTES(utf8, cur, hunk, end-hunk, 0);<br/> fromlen -= todo;<br/> }<br/> break;<br/>diff --git a/pp_sys.c b/pp_sys.c<br/>index 04ccddb..9458d2e 100644<br/>--- a/pp_sys.c<br/>+++ b/pp_sys.c<br/>@@ -4942,9 +4942,7 @@ PP(pp_gservent)<br/> #ifdef HAS_GETSERVBYPORT<br/> const char * const proto = POPpbytex;<br/> unsigned short port = (unsigned short)POPu;<br/>-#ifdef HAS_HTONS<br/> port = PerlSock_htons(port);<br/>-#endif<br/> sent = PerlSock_getservbyport(port, (proto &amp;&amp; !*proto) ? NULL : proto);<br/> #else<br/> DIE(aTHX_ PL_no_sock_func, &quot;getservbyport&quot;);<br/>@@ -4962,11 +4960,7 @@ PP(pp_gservent)<br/> PUSHs(sv = sv_newmortal());<br/> if (sent) {<br/> if (which == OP_GSBYNAME) {<br/>-#ifdef HAS_NTOHS<br/> sv_setiv(sv, (IV)PerlSock_ntohs(sent-&gt;s_port));<br/>-#else<br/>- sv_setiv(sv, (IV)(sent-&gt;s_port));<br/>-#endif<br/> }<br/> else<br/> sv_setpv(sv, sent-&gt;s_name);<br/>@@ -4977,11 +4971,7 @@ PP(pp_gservent)<br/> if (sent) {<br/> mPUSHs(newSVpv(sent-&gt;s_name, 0));<br/> PUSHs(space_join_names_mortal(sent-&gt;s_aliases));<br/>-#ifdef HAS_NTOHS<br/> mPUSHi(PerlSock_ntohs(sent-&gt;s_port));<br/>-#else<br/>- mPUSHi(sent-&gt;s_port);<br/>-#endif<br/> mPUSHs(newSVpv(sent-&gt;s_proto, 0));<br/> }<br/> <br/>diff --git a/proto.h b/proto.h<br/>index a1b3e97..f1d303f 100644<br/>--- a/proto.h<br/>+++ b/proto.h<br/>@@ -2628,11 +2628,6 @@ PERL_CALLCONV char * Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, i<br/> #define PERL_ARGS_ASSERT_MY_STRFTIME \<br/> assert(fmt)<br/> <br/>-PERL_CALLCONV void Perl_my_swabn(void* ptr, int n)<br/>- __attribute__nonnull__(1);<br/>-#define PERL_ARGS_ASSERT_MY_SWABN \<br/>- assert(ptr)<br/>-<br/> PERL_CALLCONV void Perl_my_unexec(pTHX);<br/> PERL_CALLCONV int Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap)<br/> __attribute__nonnull__(1)<br/>@@ -5345,20 +5340,6 @@ PERL_CALLCONV MEM_SIZE Perl_malloced_size(void *p)<br/> assert(p)<br/> <br/> #endif<br/>-#if defined(MYSWAP)<br/>-PERL_CALLCONV long Perl_my_htonl(pTHX_ long l)<br/>- __attribute__warn_unused_result__<br/>- __attribute__pure__;<br/>-<br/>-PERL_CALLCONV long Perl_my_ntohl(pTHX_ long l)<br/>- __attribute__warn_unused_result__<br/>- __attribute__pure__;<br/>-<br/>-PERL_CALLCONV short Perl_my_swap(pTHX_ short s)<br/>- __attribute__warn_unused_result__<br/>- __attribute__pure__;<br/>-<br/>-#endif<br/> #if defined(NO_MATHOMS)<br/> /* PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv); */<br/> #endif<br/>@@ -6263,7 +6244,7 @@ STATIC SV* S_method_common(pTHX_ SV* meth, U32* hashp)<br/> <br/> #endif<br/> #if defined(PERL_IN_PP_PACK_C)<br/>-STATIC char * S_bytes_to_uni(const U8 *start, STRLEN len, char *dest)<br/>+STATIC char * S_bytes_to_uni(const U8 *start, STRLEN len, char *dest, const bool needs_swap)<br/> __attribute__warn_unused_result__<br/> __attribute__nonnull__(1)<br/> __attribute__nonnull__(3);<br/>@@ -7611,78 +7592,6 @@ PERL_CALLCONV void Perl_xmldump_vindent(pTHX_ I32 level, PerlIO *file, const cha<br/> assert(file); assert(pat)<br/> <br/> #endif<br/>-#if defined(PERL_NEED_MY_BETOH16)<br/>-PERL_CALLCONV U16 Perl_my_betoh16(U16 n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_BETOH32)<br/>-PERL_CALLCONV U32 Perl_my_betoh32(U32 n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_BETOH64)<br/>-PERL_CALLCONV U64 Perl_my_betoh64(U64 n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_BETOHI)<br/>-PERL_CALLCONV int Perl_my_betohi(int n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_BETOHL)<br/>-PERL_CALLCONV long Perl_my_betohl(long n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_BETOHS)<br/>-PERL_CALLCONV short Perl_my_betohs(short n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_HTOBE16)<br/>-PERL_CALLCONV U16 Perl_my_htobe16(U16 n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_HTOBE32)<br/>-PERL_CALLCONV U32 Perl_my_htobe32(U32 n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_HTOBE64)<br/>-PERL_CALLCONV U64 Perl_my_htobe64(U64 n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_HTOBEI)<br/>-PERL_CALLCONV int Perl_my_htobei(int n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_HTOBEL)<br/>-PERL_CALLCONV long Perl_my_htobel(long n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_HTOBES)<br/>-PERL_CALLCONV short Perl_my_htobes(short n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_HTOLE16)<br/>-PERL_CALLCONV U16 Perl_my_htole16(U16 n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_HTOLE32)<br/>-PERL_CALLCONV U32 Perl_my_htole32(U32 n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_HTOLE64)<br/>-PERL_CALLCONV U64 Perl_my_htole64(U64 n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_HTOLEI)<br/>-PERL_CALLCONV int Perl_my_htolei(int n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_HTOLEL)<br/>-PERL_CALLCONV long Perl_my_htolel(long n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_HTOLES)<br/>-PERL_CALLCONV short Perl_my_htoles(short n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_LETOH16)<br/>-PERL_CALLCONV U16 Perl_my_letoh16(U16 n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_LETOH32)<br/>-PERL_CALLCONV U32 Perl_my_letoh32(U32 n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_LETOH64)<br/>-PERL_CALLCONV U64 Perl_my_letoh64(U64 n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_LETOHI)<br/>-PERL_CALLCONV int Perl_my_letohi(int n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_LETOHL)<br/>-PERL_CALLCONV long Perl_my_letohl(long n);<br/>-#endif<br/>-#if defined(PERL_NEED_MY_LETOHS)<br/>-PERL_CALLCONV short Perl_my_letohs(short n);<br/>-#endif<br/> #if defined(PERL_USES_PL_PIDSTATUS) &amp;&amp; defined(PERL_IN_UTIL_C)<br/> STATIC void S_pidgone(pTHX_ Pid_t pid, int status);<br/> #endif<br/>diff --git a/regen/genpacksizetables.pl b/regen/genpacksizetables.pl<br/>index 6d70cad..da500fb 100644<br/>--- a/regen/genpacksizetables.pl<br/>+++ b/regen/genpacksizetables.pl<br/>@@ -99,8 +99,8 @@ S! unsigned short<br/> v =SIZE16<br/> n =SIZE16<br/> S =SIZE16<br/>-v! =SIZE16 PERL_PACK_CAN_SHRIEKSIGN<br/>-n! =SIZE16 PERL_PACK_CAN_SHRIEKSIGN<br/>+v! =SIZE16<br/>+n! =SIZE16<br/> i int<br/> i! int<br/> I unsigned int<br/>@@ -112,8 +112,8 @@ l =SIZE32<br/> L! unsigned long<br/> V =SIZE32<br/> N =SIZE32<br/>-V! =SIZE32 PERL_PACK_CAN_SHRIEKSIGN<br/>-N! =SIZE32 PERL_PACK_CAN_SHRIEKSIGN<br/>+V! =SIZE32<br/>+N! =SIZE32<br/> L =SIZE32<br/> p * char *<br/> w * * char<br/>diff --git a/t/porting/diag.t b/t/porting/diag.t<br/>index bcf853e..c5dcbee 100644<br/>--- a/t/porting/diag.t<br/>+++ b/t/porting/diag.t<br/>@@ -533,8 +533,6 @@ Invalid type &#39;%c&#39; in %s<br/> Invalid type &#39;%c&#39; in unpack<br/> Invalid type &#39;,&#39; in %s<br/> ioctlsocket not implemented!<br/>-&#39;j&#39; not supported on this platform<br/>-&#39;J&#39; not supported on this platform<br/> killpg not implemented!<br/> length() used on %s (did you mean &quot;scalar(%s)&quot;?)<br/> length() used on %hash (did you mean &quot;scalar(keys %hash)&quot;?)<br/>diff --git a/util.c b/util.c<br/>index 14d9f2c..66793a3 100644<br/>--- a/util.c<br/>+++ b/util.c<br/>@@ -2160,335 +2160,6 @@ vsprintf(char *dest, const char *pat, void *args)<br/> <br/> #endif /* HAS_VPRINTF */<br/> <br/>-#ifdef MYSWAP<br/>-#if BYTEORDER != 0x4321<br/>-short<br/>-Perl_my_swap(pTHX_ short s)<br/>-{<br/>-#if (BYTEORDER &amp; 1) == 0<br/>- short result;<br/>-<br/>- result = ((s &amp; 255) &lt;&lt; 8) + ((s &gt;&gt; 8) &amp; 255);<br/>- return result;<br/>-#else<br/>- return s;<br/>-#endif<br/>-}<br/>-<br/>-long<br/>-Perl_my_htonl(pTHX_ long l)<br/>-{<br/>- union {<br/>- long result;<br/>- char c[sizeof(long)];<br/>- } u;<br/>-<br/>-#if BYTEORDER == 0x1234 || BYTEORDER == 0x12345678<br/>-#if BYTEORDER == 0x12345678<br/>- u.result = 0; <br/>-#endif <br/>- u.c[0] = (l &gt;&gt; 24) &amp; 255;<br/>- u.c[1] = (l &gt;&gt; 16) &amp; 255;<br/>- u.c[2] = (l &gt;&gt; 8) &amp; 255;<br/>- u.c[3] = l &amp; 255;<br/>- return u.result;<br/>-#else<br/>-#if ((BYTEORDER - 0x1111) &amp; 0x444) || !(BYTEORDER &amp; 0xf)<br/>- Perl_croak(aTHX_ &quot;Unknown BYTEORDER\n&quot;);<br/>-#else<br/>- I32 o;<br/>- I32 s;<br/>-<br/>- for (o = BYTEORDER - 0x1111, s = 0; s &lt; (sizeof(long)*8); o &gt;&gt;= 4, s += 8) {<br/>- u.c[o &amp; 0xf] = (l &gt;&gt; s) &amp; 255;<br/>- }<br/>- return u.result;<br/>-#endif<br/>**** PATCH TRUNCATED AT 2000 LINES -- 344 NOT SHOWN ****<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37147.html Mon, 20 May 2013 19:50:36 +0000 [perl.git] branch blead, updated. v5.19.0-64-g39ecab1 by Nicholas Clark In perl.git, the branch blead has been updated<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/39ecab1c690aee1a1fdeefb6c706448af5d2981f?hp=6d5abc62848da0e110869e2b13c68bf498ff3a90&gt;<br/><br/>- Log -----------------------------------------------------------------<br/>commit 39ecab1c690aee1a1fdeefb6c706448af5d2981f<br/>Merge: 6d5abc6 843b375<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon May 20 21:12:01 2013 +0200<br/><br/> Merge the reworking of how genpacksizetables.pl is used.<br/><br/>commit 843b37592a564e2e84c28a00619ac6c132c6dbc9<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 12:06:39 2013 +0200<br/><br/> Add regen/genpacksizetables.pl to t/porting/regen.t<br/><br/>M t/porting/regen.t<br/><br/>commit e3f061af802f7db7c760d810c495d83763fff668<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 11:54:19 2013 +0200<br/><br/> Move genpacksizetables.pl to regen/genpacksizetables.pl<br/><br/>M MANIFEST<br/>D genpacksizetables.pl<br/>M packsizetables.c<br/>A regen/genpacksizetables.pl<br/><br/>commit 6b05cb8115fc15fed0e6bf162a9cc797222572ee<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 11:47:30 2013 +0200<br/><br/> Refactor genpacksizetables.pl to use regen/regen_lib.pl<br/><br/>M genpacksizetables.pl<br/>M packsizetables.c<br/><br/>commit 298bc19c0935302faa4957de141245bb64c6b2df<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 11:23:11 2013 +0200<br/><br/> Extract the generated packprops array into packsizetables.c.<br/> <br/> The C source is the output from genpacksizetables.pl<br/> Previously it was pasted into pp_pack.c<br/> <br/> LocalWords: packprops<br/><br/>M MANIFEST<br/>A packsizetables.c<br/>M pp_pack.c<br/><br/>commit e2add64b70b6d5c55a6598257032bf0777c5976c<br/>Author: Nicholas Clark &lt;nick@ccl4.org&gt;<br/>Date: Mon Apr 29 11:08:05 2013 +0200<br/><br/> Propagate a change from commit 1651fc447620d361 into genpacksizetables.pl.<br/> <br/> pp_pack.c contains a table generated by genpacksizetables.pl, pasted into the<br/> C source. The C source was updated by commit 1651fc447620d361 in April 2007,<br/> but the table used to generate the code was not.<br/><br/>M genpacksizetables.pl<br/><br/>commit d8a3828919c2d8a9e1344ba4d05795d37ed9cdb6<br/>Author: Karl Williamson &lt;public@khwilliamson.com&gt;<br/>Date: Wed Mar 13 16:18:12 2013 -0600<br/><br/> genpacksizetables.pl: Correct comment typo<br/><br/>M genpacksizetables.pl<br/>-----------------------------------------------------------------------<br/><br/>Summary of changes:<br/> MANIFEST | 3 +-<br/> packsizetables.c | 254 ++++++++++++++++++++<br/> pp_pack.c | 250 +-------------------<br/> genpacksizetables.pl =&gt; regen/genpacksizetables.pl | 12 +-<br/> t/porting/regen.t | 2 +-<br/> 5 files changed, 265 insertions(+), 256 deletions(-)<br/> create mode 100644 packsizetables.c<br/> rename genpacksizetables.pl =&gt; regen/genpacksizetables.pl (92%)<br/><br/>diff --git a/MANIFEST b/MANIFEST<br/>index 90b5042..7115372 100644<br/>--- a/MANIFEST<br/>+++ b/MANIFEST<br/>@@ -3886,7 +3886,6 @@ fakethr.h Fake threads header<br/> feature.h Feature header<br/> form.h Public declarations for formats<br/> generate_uudmap.c Generate uudmap.h, the uuencode decoding map<br/>-genpacksizetables.pl Generate the size tables for pack/unpack<br/> globals.c File to declare global symbols (for shared library)<br/> globvar.sym Global variables that need hiding when embedded<br/> gv.c Glob value code<br/>@@ -4424,6 +4423,7 @@ os2/perlrexx.c Support perl interpreter embedded in REXX<br/> os2/perlrexx.cmd Test perl interpreter embedded in REXX<br/> overload.c generated overload enum (public)<br/> overload.h generated overload name table (implementation)<br/>+packsizetables.c The generated packprops array used in pp_pack.c<br/> pad.c Scratchpad functions<br/> pad.h Scratchpad headers<br/> parser.h parser object header<br/>@@ -4712,6 +4712,7 @@ regcomp.sym Data for regnodes.h<br/> regen/embed_lib.pl Reads embed.fnc and regen/opcodes<br/> regen/embed.pl Produces {embed,embedvar,proto}.h<br/> regen/feature.pl Generates feature.pm<br/>+regen/genpacksizetables.pl Generate the size tables for pack/unpack<br/> regen/keywords.pl Program to write keywords.h<br/> regen/mg_vtable.pl generate mg_vtable.h<br/> regen/mk_invlists.pl Generates charclass_invlists.h<br/>diff --git a/packsizetables.c b/packsizetables.c<br/>new file mode 100644<br/>index 0000000..afeb210<br/>--- /dev/null<br/>+++ b/packsizetables.c<br/>@@ -0,0 +1,254 @@<br/>+/* -*- buffer-read-only: t -*-<br/>+ !!!!!!! DO NOT EDIT THIS FILE !!!!!!!<br/>+ This file is built by regen/genpacksizetables.pl from its data.<br/>+ Any changes made here will be lost!<br/>+ */<br/>+<br/>+#if TYPE_IS_SHRIEKING != 0x100<br/>+ ++++shriek offset should be 256<br/>+#endif<br/>+<br/>+typedef U8 packprops_t;<br/>+#if &#39;J&#39;-&#39;I&#39; == 1<br/>+/* ASCII */<br/>+STATIC const packprops_t packprops[512] = {<br/>+ /* normal */<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0,<br/>+ /* C */ sizeof(unsigned char),<br/>+#if defined(HAS_LONG_DOUBLE) &amp;&amp; defined(USE_LONG_DOUBLE)<br/>+ /* D */ LONG_DOUBLESIZE,<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0,<br/>+ /* F */ NVSIZE,<br/>+ 0, 0,<br/>+ /* I */ sizeof(unsigned int),<br/>+ /* J */ UVSIZE,<br/>+ 0,<br/>+ /* L */ SIZE32,<br/>+ 0,<br/>+ /* N */ SIZE32,<br/>+ 0, 0,<br/>+#if defined(HAS_QUAD)<br/>+ /* Q */ sizeof(Uquad_t),<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0,<br/>+ /* S */ SIZE16,<br/>+ 0,<br/>+ /* U */ sizeof(char) | PACK_SIZE_UNPREDICTABLE,<br/>+ /* V */ SIZE32,<br/>+ /* W */ sizeof(unsigned char) | PACK_SIZE_UNPREDICTABLE,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ /* c */ sizeof(char),<br/>+ /* d */ sizeof(double),<br/>+ 0,<br/>+ /* f */ sizeof(float),<br/>+ 0, 0,<br/>+ /* i */ sizeof(int),<br/>+ /* j */ IVSIZE,<br/>+ 0,<br/>+ /* l */ SIZE32,<br/>+ 0,<br/>+ /* n */ SIZE16,<br/>+ 0,<br/>+ /* p */ sizeof(char *) | PACK_SIZE_CANNOT_CSUM,<br/>+#if defined(HAS_QUAD)<br/>+ /* q */ sizeof(Quad_t),<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0,<br/>+ /* s */ SIZE16,<br/>+ 0, 0,<br/>+ /* v */ SIZE16,<br/>+ /* w */ sizeof(char) | PACK_SIZE_UNPREDICTABLE | PACK_SIZE_CANNOT_CSUM,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ /* shrieking */<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ /* I */ sizeof(unsigned int),<br/>+ 0, 0,<br/>+ /* L */ sizeof(unsigned long),<br/>+ 0,<br/>+#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>+ /* N */ SIZE32,<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0, 0, 0, 0,<br/>+ /* S */ sizeof(unsigned short),<br/>+ 0, 0,<br/>+#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>+ /* V */ SIZE32,<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0,<br/>+ /* i */ sizeof(int),<br/>+ 0, 0,<br/>+ /* l */ sizeof(long),<br/>+ 0,<br/>+#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>+ /* n */ SIZE16,<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0, 0, 0, 0,<br/>+ /* s */ sizeof(short),<br/>+ 0, 0,<br/>+#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>+ /* v */ SIZE16,<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0<br/>+};<br/>+#else<br/>+/* EBCDIC (or bust) */<br/>+STATIC const packprops_t packprops[512] = {<br/>+ /* normal */<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0,<br/>+ /* c */ sizeof(char),<br/>+ /* d */ sizeof(double),<br/>+ 0,<br/>+ /* f */ sizeof(float),<br/>+ 0, 0,<br/>+ /* i */ sizeof(int),<br/>+ 0, 0, 0, 0, 0, 0, 0,<br/>+ /* j */ IVSIZE,<br/>+ 0,<br/>+ /* l */ SIZE32,<br/>+ 0,<br/>+ /* n */ SIZE16,<br/>+ 0,<br/>+ /* p */ sizeof(char *) | PACK_SIZE_CANNOT_CSUM,<br/>+#if defined(HAS_QUAD)<br/>+ /* q */ sizeof(Quad_t),<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ /* s */ SIZE16,<br/>+ 0, 0,<br/>+ /* v */ SIZE16,<br/>+ /* w */ sizeof(char) | PACK_SIZE_UNPREDICTABLE | PACK_SIZE_CANNOT_CSUM,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ /* C */ sizeof(unsigned char),<br/>+#if defined(HAS_LONG_DOUBLE) &amp;&amp; defined(USE_LONG_DOUBLE)<br/>+ /* D */ LONG_DOUBLESIZE,<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0,<br/>+ /* F */ NVSIZE,<br/>+ 0, 0,<br/>+ /* I */ sizeof(unsigned int),<br/>+ 0, 0, 0, 0, 0, 0, 0,<br/>+ /* J */ UVSIZE,<br/>+ 0,<br/>+ /* L */ SIZE32,<br/>+ 0,<br/>+ /* N */ SIZE32,<br/>+ 0, 0,<br/>+#if defined(HAS_QUAD)<br/>+ /* Q */ sizeof(Uquad_t),<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ /* S */ SIZE16,<br/>+ 0,<br/>+ /* U */ sizeof(char) | PACK_SIZE_UNPREDICTABLE,<br/>+ /* V */ SIZE32,<br/>+ /* W */ sizeof(unsigned char) | PACK_SIZE_UNPREDICTABLE,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ /* shrieking */<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ /* i */ sizeof(int),<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ /* l */ sizeof(long),<br/>+ 0,<br/>+#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>+ /* n */ SIZE16,<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ /* s */ sizeof(short),<br/>+ 0, 0,<br/>+#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>+ /* v */ SIZE16,<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0,<br/>+ /* I */ sizeof(unsigned int),<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ /* L */ sizeof(unsigned long),<br/>+ 0,<br/>+#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>+ /* N */ SIZE32,<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ /* S */ sizeof(unsigned short),<br/>+ 0, 0,<br/>+#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>+ /* V */ SIZE32,<br/>+#else<br/>+ 0,<br/>+#endif<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0<br/>+};<br/>+#endif<br/>+<br/>+/* ex: set ro: */<br/>diff --git a/pp_pack.c b/pp_pack.c<br/>index 6c3dc5f..b41ec78 100644<br/>--- a/pp_pack.c<br/>+++ b/pp_pack.c<br/>@@ -389,255 +389,7 @@ S_mul128(pTHX_ SV *sv, U8 m)<br/> #define PACK_SIZE_UNPREDICTABLE 0x40 /* Not a fixed size element */<br/> #define PACK_SIZE_MASK 0x3F<br/> <br/>-/* These tables are regenerated by genpacksizetables.pl (and then hand pasted<br/>- in). You&#39;re unlikely ever to need to regenerate them. */<br/>-<br/>-#if TYPE_IS_SHRIEKING != 0x100<br/>- ++++shriek offset should be 256<br/>-#endif<br/>-<br/>-typedef U8 packprops_t;<br/>-#if &#39;J&#39;-&#39;I&#39; == 1<br/>-/* ASCII */<br/>-STATIC const packprops_t packprops[512] = {<br/>- /* normal */<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0,<br/>- /* C */ sizeof(unsigned char),<br/>-#if defined(HAS_LONG_DOUBLE) &amp;&amp; defined(USE_LONG_DOUBLE)<br/>- /* D */ LONG_DOUBLESIZE,<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0,<br/>- /* F */ NVSIZE,<br/>- 0, 0,<br/>- /* I */ sizeof(unsigned int),<br/>- /* J */ UVSIZE,<br/>- 0,<br/>- /* L */ SIZE32,<br/>- 0,<br/>- /* N */ SIZE32,<br/>- 0, 0,<br/>-#if defined(HAS_QUAD)<br/>- /* Q */ sizeof(Uquad_t),<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0,<br/>- /* S */ SIZE16,<br/>- 0,<br/>- /* U */ sizeof(char) | PACK_SIZE_UNPREDICTABLE,<br/>- /* V */ SIZE32,<br/>- /* W */ sizeof(unsigned char) | PACK_SIZE_UNPREDICTABLE,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- /* c */ sizeof(char),<br/>- /* d */ sizeof(double),<br/>- 0,<br/>- /* f */ sizeof(float),<br/>- 0, 0,<br/>- /* i */ sizeof(int),<br/>- /* j */ IVSIZE,<br/>- 0,<br/>- /* l */ SIZE32,<br/>- 0,<br/>- /* n */ SIZE16,<br/>- 0,<br/>- /* p */ sizeof(char *) | PACK_SIZE_CANNOT_CSUM,<br/>-#if defined(HAS_QUAD)<br/>- /* q */ sizeof(Quad_t),<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0,<br/>- /* s */ SIZE16,<br/>- 0, 0,<br/>- /* v */ SIZE16,<br/>- /* w */ sizeof(char) | PACK_SIZE_UNPREDICTABLE | PACK_SIZE_CANNOT_CSUM,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0,<br/>- /* shrieking */<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- /* I */ sizeof(unsigned int),<br/>- 0, 0,<br/>- /* L */ sizeof(unsigned long),<br/>- 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>- /* N */ SIZE32,<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0, 0, 0, 0,<br/>- /* S */ sizeof(unsigned short),<br/>- 0, 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>- /* V */ SIZE32,<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0,<br/>- /* i */ sizeof(int),<br/>- 0, 0,<br/>- /* l */ sizeof(long),<br/>- 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>- /* n */ SIZE16,<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0, 0, 0, 0,<br/>- /* s */ sizeof(short),<br/>- 0, 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>- /* v */ SIZE16,<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0<br/>-};<br/>-#else<br/>-/* EBCDIC (or bust) */<br/>-STATIC const packprops_t packprops[512] = {<br/>- /* normal */<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0,<br/>- /* c */ sizeof(char),<br/>- /* d */ sizeof(double),<br/>- 0,<br/>- /* f */ sizeof(float),<br/>- 0, 0,<br/>- /* i */ sizeof(int),<br/>- 0, 0, 0, 0, 0, 0, 0,<br/>- /* j */ IVSIZE,<br/>- 0,<br/>- /* l */ SIZE32,<br/>- 0,<br/>- /* n */ SIZE16,<br/>- 0,<br/>- /* p */ sizeof(char *) | PACK_SIZE_CANNOT_CSUM,<br/>-#if defined(HAS_QUAD)<br/>- /* q */ sizeof(Quad_t),<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- /* s */ SIZE16,<br/>- 0, 0,<br/>- /* v */ SIZE16,<br/>- /* w */ sizeof(char) | PACK_SIZE_UNPREDICTABLE | PACK_SIZE_CANNOT_CSUM,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- /* C */ sizeof(unsigned char),<br/>-#if defined(HAS_LONG_DOUBLE) &amp;&amp; defined(USE_LONG_DOUBLE)<br/>- /* D */ LONG_DOUBLESIZE,<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0,<br/>- /* F */ NVSIZE,<br/>- 0, 0,<br/>- /* I */ sizeof(unsigned int),<br/>- 0, 0, 0, 0, 0, 0, 0,<br/>- /* J */ UVSIZE,<br/>- 0,<br/>- /* L */ SIZE32,<br/>- 0,<br/>- /* N */ SIZE32,<br/>- 0, 0,<br/>-#if defined(HAS_QUAD)<br/>- /* Q */ sizeof(Uquad_t),<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- /* S */ SIZE16,<br/>- 0,<br/>- /* U */ sizeof(char) | PACK_SIZE_UNPREDICTABLE,<br/>- /* V */ SIZE32,<br/>- /* W */ sizeof(unsigned char) | PACK_SIZE_UNPREDICTABLE,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- /* shrieking */<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- /* i */ sizeof(int),<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- /* l */ sizeof(long),<br/>- 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>- /* n */ SIZE16,<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- /* s */ sizeof(short),<br/>- 0, 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>- /* v */ SIZE16,<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0,<br/>- /* I */ sizeof(unsigned int),<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- /* L */ sizeof(unsigned long),<br/>- 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>- /* N */ SIZE32,<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- /* S */ sizeof(unsigned short),<br/>- 0, 0,<br/>-#if defined(PERL_PACK_CAN_SHRIEKSIGN)<br/>- /* V */ SIZE32,<br/>-#else<br/>- 0,<br/>-#endif<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br/>- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0<br/>-};<br/>-#endif<br/>+#include &quot;packsizetables.c&quot;<br/> <br/> STATIC U8<br/> uni_to_byte(pTHX_ const char **s, const char *end, I32 datumtype)<br/>diff --git a/genpacksizetables.pl b/regen/genpacksizetables.pl<br/>similarity index 92%<br/>rename from genpacksizetables.pl<br/>rename to regen/genpacksizetables.pl<br/>index 9dffc2c..6d70cad 100644<br/>--- a/genpacksizetables.pl<br/>+++ b/regen/genpacksizetables.pl<br/>@@ -1,8 +1,9 @@<br/> #!/usr/bin/perl -w<br/> # I&#39;m assuming that you&#39;re running this on some kind of ASCII system, but<br/>-# it will generate EDCDIC too. (TODO)<br/>+# it will generate EBCDIC too. (TODO)<br/> use strict;<br/> use Encode;<br/>+require &#39;regen/regen_lib.pl&#39;;<br/> <br/> sub make_text {<br/> my ($chrmap, $letter, $unpredictable, $nocsum, $size, $condition) = @_;<br/>@@ -66,10 +67,9 @@ my @lines = grep {<br/> my %asciimap = map {chr $_, chr $_} 0..255;<br/> my %ebcdicmap = map {chr $_, Encode::encode(&quot;posix-bc&quot;, chr $_)} 0..255;<br/> <br/>-print &lt;&lt;&quot;EOC&quot;;<br/>-/* These tables are regenerated by genpacksizetables.pl (and then hand pasted<br/>- in). You&#39;re unlikely ever to need to regenerate them. */<br/>+my $fh = open_new(&#39;packsizetables.c&#39;, &#39;&gt;&#39;, { by =&gt; $0, from =&gt; &#39;its data&#39;});<br/> <br/>+print $fh &lt;&lt;&quot;EOC&quot;;<br/> #if TYPE_IS_SHRIEKING != 0x100<br/> ++++shriek offset should be 256<br/> #endif<br/>@@ -84,11 +84,13 @@ typedef U8 packprops_t;<br/> #endif<br/> EOC<br/> <br/>+read_only_bottom_close_and_rename($fh);<br/>+<br/> __DATA__<br/> #Symbol unpredictable<br/> # nocsum size<br/> c char<br/>-C * unsigned char<br/>+C unsigned char<br/> W * unsigned char<br/> U * char<br/> s! short<br/>diff --git a/t/porting/regen.t b/t/porting/regen.t<br/>index e38ea81..ec8e62d 100644<br/>--- a/t/porting/regen.t<br/>+++ b/t/porting/regen.t<br/>@@ -19,7 +19,7 @@ if ( $^O eq &quot;VMS&quot; ) {<br/> my $in_regen_pl = 23; # I can&#39;t see a clean way to calculate this automatically.<br/> my @files = qw(perly.act perly.h perly.tab keywords.c keywords.h uconfig.h);<br/> my @progs = qw(regen/regcharclass.pl regen/mk_PL_charclass.pl<br/>- regen/unicode_constants.pl);<br/>+ regen/unicode_constants.pl regen/genpacksizetables.pl);<br/> <br/> plan (tests =&gt; $in_regen_pl + @files + @progs + 2);<br/> <br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37146.html Mon, 20 May 2013 19:19:15 +0000 [perl.git] branch smoke-me/nicholas/likely-cBOOL, deleted. v5.17.9-104-gc0b8e78 by Nicholas Clark In perl.git, the branch smoke-me/nicholas/likely-cBOOL has been deleted<br/><br/>&lt;http://perl5.git.perl.org/perl.git/commitdiff/0000000000000000000000000000000000000000?hp=c0b8e78149fde4b5e8c0319f943946a178b3109e&gt;<br/><br/> was c0b8e78149fde4b5e8c0319f943946a178b3109e<br/><br/>-----------------------------------------------------------------------<br/>c0b8e78149fde4b5e8c0319f943946a178b3109e Change LIKELY() and UNLIKELY() to cast their first argument to a bool.<br/>-----------------------------------------------------------------------<br/><br/>--<br/>Perl5 Master Repository<br/> http://www.nntp.perl.org/group/perl.perl5.changes/2013/05/msg37145.html Mon, 20 May 2013 17:39:21 +0000