This is a live mirror of the Perl 5 development currently hosted at
5 years ago[perl #120826] - Fix documentation nit (thanks Eric Brine.)
Matthew Horsfall [Mon, 17 Aug 2015 13:39:59 +0000 (09:39 -0400)]
[perl #120826] - Fix documentation nit (thanks Eric Brine.)

5 years ago[MERGE] re-implement OPpASSIGN_COMMON mechanism
David Mitchell [Mon, 17 Aug 2015 10:17:01 +0000 (11:17 +0100)]
[MERGE] re-implement OPpASSIGN_COMMON mechanism

5 years agofix a SV_NOSTEAL issue in pp_aassign
David Mitchell [Fri, 14 Aug 2015 08:23:59 +0000 (09:23 +0100)]
fix a SV_NOSTEAL issue in pp_aassign

in something like (...) = (f())[0,0]

A mortal SV can appear multiple times on the RHS without being reference
counted. If it's a string, the temptation is to steal its string buffer
during the first copy; but this would make the second usage undef.

pp_aassign() already takes account of this and uses the SV_NOSTEAL
flag when copying - except that one common code path didn't.

This commit fixes that, adds more tests, and adds more code comments
to explain the issue.

5 years agofix PAD_COMPNAME_GEN documentation
David Mitchell [Thu, 13 Aug 2015 11:26:06 +0000 (12:26 +0100)]
fix PAD_COMPNAME_GEN documentation

The generation number is no longer stored in the SvUVX() field

5 years agodocument what PL_generation is for
David Mitchell [Thu, 13 Aug 2015 11:21:54 +0000 (12:21 +0100)]
document what PL_generation is for

5 years agoEliminate GvASSIGN_GENERATION and _set macros
David Mitchell [Thu, 13 Aug 2015 11:07:38 +0000 (12:07 +0100)]
Eliminate GvASSIGN_GENERATION and _set macros

Since we no longer scan package vars with PL_generation for
OPpASSIGN_COMMON* purposes, eliminate the macros used for that purpose.

5 years agoOptimise 1 arg in list assign
David Mitchell [Thu, 13 Aug 2015 16:00:32 +0000 (17:00 +0100)]
Optimise 1 arg in list assign

Avoid setting common scalar flags in these cases:

($x) = (...);
(...) = ($x);

5 years agoEliminate PL_sawalias, GPf_ALIASED_SV
David Mitchell [Tue, 11 Aug 2015 15:21:07 +0000 (16:21 +0100)]
Eliminate PL_sawalias, GPf_ALIASED_SV

These two commits:

    v5.21.3-759-gff2a62e "Skip no-common-vars optimisation for aliases"
    v5.21.4-210-gc997e36 "Make list assignment respect foreach aliasing"

added a run-time mechanism to detect aliased package variables,
by either "*pkg = ...," or "for $pkg (...)", and used that information
to enable the OPpASSIGN_COMMON mechanism at runtime for detecting common
elements in a list assign, e.g.

    for $alias ($a, ...) {
        ($a,$b) = (1,$alias);

The previous commit but one changed the OPpASSIGN_COMMON mechanism such
that it no longer uses PL_sawalias. So this var and the mechanism for
setting it can now be removed.

This commit removes:

    * the PL_sawalias variable
    * the GPf_ALIASED_SV GP flag
    * the SAVEt_GP_ALIASED_SV and save_aliased_sv() save type.

5 years agomake my (...) = @_ non-OPpASSIGN_COMMON_RC1
David Mitchell [Thu, 13 Aug 2015 14:01:23 +0000 (15:01 +0100)]
make my (...) = @_ non-OPpASSIGN_COMMON_RC1

Technically in

    my ($scalar,...) = @_

due to closure/goto tricks, its possible for $scalar to appear on both
the LHS and RHS, so we currently set the OPpASSIGN_COMMON_RC1 flag.

However, this imposes extra overhead; for example 5% extra instruction
reads and 11% extra conditional branches for

    my ($x,$y,$z) = @_;

Given what an important construct this is, disable this flag in the
specific case of of only my's on the LHS and only @_ on the RHS.
It's technically incorrect, but its the same behaviour we've always had
(it was only the previous commit which made it safe but slower).

We still set the OPpASSIGN_COMMON_AGG flag for

    my ($...,@a) = @_

since in the normal case this only adds the small additional runtime
overhead of checking that @a is already empty.

5 years agore-implement OPpASSIGN_COMMON mechanism
David Mitchell [Thu, 13 Aug 2015 09:32:42 +0000 (10:32 +0100)]
re-implement OPpASSIGN_COMMON mechanism

This commit almost completely replaces the current mechanism
for detecting and handing common vars in list assignment, e.g.

    ($a,$b) = ($b,$a);

In general outline: it creates more false positives at compile-time
than before, but also no longer misses some false negatives. In
compensation, it considerably reduces the run-time cost of handling
potential and real commonality.

It does this firstly by splitting the OPpASSIGN_COMMON flag into 3
separate flags:


which indicate different classes of commonality that can be handled
in different ways at runtime.

Most importantly, it distinguishes between two basic cases. Firstly,
common scalars (OPpASSIGN_COMMON_SCALAR), e.g.

    ($x,....) = (....,$x,...)

where $x is modified and then sometime later its value is used again,
but that value has changed in the meantime. In this case, we need
replace such vars on the RHS with mortal copies before processing the

The second case is an aggregate on the LHS (OPpASSIGN_COMMON_AGG), e.g.

    (...,@a) = (...., $a[0],...)

In this case, the issue is instead that when @a is cleared, it may free
items on the RHS (due to the stack not being ref counted).  What is
required here is that rather than making of a copy of each RHS element and
storing it in the array as we progress, we make *all* the copies *before*
clearing the array, but mortalise them in case we die in the meantime.

We can further distinguish two scalar cases; sometimes it's possible
to confirm non-commonality at run-time merely by checking that all
the LHS scalars have a reference count of 1. If this is possible,
we set the OPpASSIGN_COMMON_RC1 flag rather than the

The major improvement in the run-time performance in the
OPpASSIGN_COMMON_SCALAR case (or OPpASSIGN_COMMON_RC1 if rc>1 scalars are
detected), is to use a mark-and-sweep scan of the two lists using the
SVf_BREAK flag, to determine which elements are common, and only make
mortal copies of those elements.  This has a very big effect on run-time
performance; for example in the classic

    ($a,$b) = ($b,$a);

it would formerly make temp copies of both $a and $b; now it only
copies $a.

In more detail, the mark and sweep mechanism in pp_aassign works by
looping through each LHS and RHS SV pair in parallel. It temporarily marks
each LHS SV with the SVf_BREAK flag, then makes a copy of each RHS element
only if it has the SVf_BREAK flag set. When the scan is finished, the flag
is unset on all LHS elements.

One major change in compile-time flagging is that package scalar vars are
now treated as if they could always be aliased. So we don't bother any
more to do the compile-time PL_generation checking on package vars (we
still do it on lexical vars). We also no longer make use of the run-time
PL_sawalias mechanism for detecting aliased package vars (and indeed the
next commit but one will remove that mechanism). This means that more list
assignment expressions which feature package vars will now need to
do a runtime mark-and-sweep (or where appropriate, RC1) test. In
compensation, we no longer need to test for aliasing and set PL_sawalias
in pp_gvsv and pp_gv, nor reset PL_sawalias in every pp_nextstate.

Part of the reasoning behind this is that it's nearly impossible to detect
all possible package var aliasing; for example PL_sawalias would fail to
detect XS code doing GvSV(gv) = sv.

Note that we now scan the two children of the OP_AASSIGN separately,
and in particular we mark lexicals with PL_generation only on the
LHS and test only on the RHS. So something like

    ($x,$y) = ($default, $default)

will no longer be regarded as having common vars.

In terms of performance, running Porting/ on the new
expr::aassign:: tests in t/perf/benchmarks show that the biggest slowdown
is around 13% more instruction reads and 20% more conditional branches in
        setup   => 'my ($v1,$v2,$v3) = 1..3; ($x,$y,$z) = 1..3;',
        code    => '($x,$y,$z) = ($v1,$v2,$v3)',

where this is now a false positive due to the presence of package

The biggest speedup is 50% less instruction reads and conditional branches
in this:

        setup   => '@_ = 1..3; my ($x,$y,$z)',
        code    => '($x,$y,$z) = @_',

because formerly the presence of @_ pessimised things if the LHS wasn't
a my declaration (it's still pessimised, but the runtime's faster now).

Conversely, we pessimise the 'my' variant too now:

        setup   => '@_ = 1..3;',
        code    => 'my ($x,$y,$z) = @_',

this gives 5% more instruction reads and 11% more conditional branches now.
But see the next commit, which will cheat for that particular construct.

5 years agoperldelta for fb10a8a78bba
Tony Cook [Mon, 17 Aug 2015 06:38:53 +0000 (16:38 +1000)]
perldelta for fb10a8a78bba

5 years ago[perl #125760] deprecate sys(read|write)(), send(), recv() on :utf8
Tony Cook [Mon, 17 Aug 2015 06:25:11 +0000 (16:25 +1000)]
[perl #125760] deprecate sys(read|write)(), send(), recv() on :utf8

5 years agoNo __attribute__((nonnull(...))) from NN.
Jarkko Hietaniemi [Sat, 8 Aug 2015 02:14:55 +0000 (22:14 -0400)]
No __attribute__((nonnull(...))) from NN.

5 years agoMath-BigInt is now 1.9997 on CPAN
Chris 'BinGOs' Williams [Thu, 13 Aug 2015 17:44:38 +0000 (18:44 +0100)]
Math-BigInt is now 1.9997 on CPAN

5 years agoavoid unnecessary noise from lib/h2xs.t
Tony Cook [Thu, 13 Aug 2015 05:40:32 +0000 (15:40 +1000)]
avoid unnecessary noise from lib/h2xs.t

5 years agoRequire civility; aspire to kindness.
Craig A. Berry [Thu, 6 Aug 2015 11:32:44 +0000 (06:32 -0500)]
Require civility; aspire to kindness.

Suggestion that we "aspire to kindness" from the ever-kind Tim Bunce.

Signed-off-by: Ricardo Signes <>
5 years agodont create *{"_<$filename"} globs for perl lang debugging of XSUBs
Daniel Dragan [Thu, 30 Jul 2015 06:00:07 +0000 (02:00 -0400)]
dont create *{"_<$filename"} globs for perl lang debugging of XSUBs

1st problem, *{"_<$filename"} globs aren't created for PP code unless
PERLDB_LINE || PERLDB_SAVESRC are on (see Perl_yylex ). Creating XSUBs
unconditionally created the *{"_<$filename"} globs for XSUB, even if PP
subs were not getting the debugging globs created. This is probably an
oversight, from commit b195d4879f which tried to deprecate using
the *{"_<$filename"} GVs for storing the originating filename of the CV
which was partially reverted 2 months later in commit 57843af05b with
CvFILE becoming a char * instead of GV *. To speed up XSUB registration
time, and decrease memory when not in Perl lang debugging mode dont create
the debugging globs for XSUBs unless in Perl lang debugging mode.

see also

2nd problem, since the perl debugger can't step into C code, nor set
breakpoints in it, there is no reason to create *{"_<$filename"} globs
for .c files. Since someone maybe one day might try to implement that
feature, comment out the code instead of deleting it. This will slightly
reduce the size of perl binary, and speed up XSUB registration time, and
decrease memory usage when using the Perl debugger.

see also (no responses)

perl has a number of core perma-XSUBs
(UNIVERSAL/PerlIO/DynaLoader/Internals/mro/misc const subs/etc). Each of
these previously got a "_<foo.c" glob. I counted 7 .c debugging globs on
my perl. This commit, before on WinXP, running threaded perl with
-e"system 'pause'" as a sample script, "Private Bytes" (all process
unique memory, IE not shared, not mmaped) was 488 KB, after this commit
it was 484 KB, which means that enough malloc memory was saved plus a
little bit of chance, to cross one 4 KB page of memory. IDK the exact
amount of saved memory is over or under 4KB.

5 years agocygwin 2.1.0 can test -r just fine, incl. under admin
Ivan Pozdeev [Mon, 3 Aug 2015 09:01:13 +0000 (12:01 +0300)]
cygwin 2.1.0 can test -r just fine, incl. under admin

5 years agoIncrement $VERSION for POSIX to 1.56
James E Keenan [Mon, 10 Aug 2015 22:53:14 +0000 (18:53 -0400)]
Increment $VERSION for POSIX to 1.56

5 years agoPorting/ Generalize for EBCDIC
Karl Williamson [Sat, 16 May 2015 15:49:22 +0000 (09:49 -0600)]
Porting/ Generalize for EBCDIC

This commit changes to not use hard-coded code point numbers so that it
also works on EBCDIC platforms.  An unintended consequence is that the
VT and \f spacing controls aren't considered a sign of binary.  That
seems correct to me.

5 years agoFix typo introduced in 0b81c0dda6
Steve Hay [Mon, 10 Aug 2015 12:55:16 +0000 (13:55 +0100)]
Fix typo introduced in 0b81c0dda6

5 years agoPod tweak for [ #125710].
Jarkko Hietaniemi [Sun, 9 Aug 2015 12:54:26 +0000 (08:54 -0400)]
Pod tweak for [ #125710].

5 years agoComment tweak related to [ #125710].
Jarkko Hietaniemi [Sun, 9 Aug 2015 02:59:52 +0000 (22:59 -0400)]
Comment tweak related to [ #125710].

5 years ago32-bit x86 ABI cannot do signaling nans [ #125710]
Jarkko Hietaniemi [Sun, 9 Aug 2015 02:47:33 +0000 (22:47 -0400)]
32-bit x86 ABI cannot do signaling nans [ #125710]

Sleuthed by Tony Cook.

The heuristics for the 'x86' part are a bit hacky and all my fault.

5 years agoFix test label.
Jarkko Hietaniemi [Wed, 5 Aug 2015 03:01:00 +0000 (23:01 -0400)]
Fix test label.

5 years agoComment tweaks.
Jarkko Hietaniemi [Wed, 5 Aug 2015 03:00:49 +0000 (23:00 -0400)]
Comment tweaks.

5 years agoSanity x86 long double check.
Jarkko Hietaniemi [Wed, 5 Aug 2015 03:00:33 +0000 (23:00 -0400)]
Sanity x86 long double check.

5 years agohints comments tweak.
Jarkko Hietaniemi [Sat, 8 Aug 2015 21:52:30 +0000 (17:52 -0400)]
hints comments tweak.

5 years agoGive a better error if malloc.c is used without MYMALLOC
Jarkko Hietaniemi [Sat, 8 Aug 2015 20:39:25 +0000 (16:39 -0400)]
Give a better error if malloc.c is used without MYMALLOC

The build will die already on errors because of the missing ASSERT
macros (plus get warnings on the implicit declarations, i.e. missing
prototypes), but better to give a clear error.

FWIW, looking at hints/*, only HP-UX of the even remotely
common/current systems seems to use Perl's malloc anymore,
and then only if perlio is NOT being used.

(Other platforms that seemingly use Perl's malloc include ancient
SysVs like SCO 2.3.4, NCR Tower, Tektronix' UTek V, then Unicos and
Unicos/mk of Cray, and NEC's SUPER-UX.)  (OS/2 still probably does
use it, given all the work ilyaz used to pour on it.)

5 years agobump $ExtUtils::ParseXS::VERSION to 3.29
Tony Cook [Mon, 10 Aug 2015 01:39:07 +0000 (11:39 +1000)]
bump $ExtUtils::ParseXS::VERSION to 3.29

5 years agoFix INCLUDE_COMMAND $^X for Perl In Space
Ed J [Sun, 14 Jun 2015 23:40:36 +0000 (00:40 +0100)]
Fix INCLUDE_COMMAND $^X for Perl In Space

5 years agoCPAN-Meta-YAML is now synced with 0.017-TRIAL
Steve Hay [Fri, 7 Aug 2015 07:39:07 +0000 (08:39 +0100)]
CPAN-Meta-YAML is now synced with 0.017-TRIAL

Delete Changes file. We don't put IGNORABLEs in cpan/ folders.

5 years agoremove the byte-order-mark introduced to sv.c by 5488d373
Tony Cook [Fri, 7 Aug 2015 04:20:36 +0000 (14:20 +1000)]
remove the byte-order-mark introduced to sv.c by 5488d373

This causes the build to fail on NetBSD

5 years agot/00-report-prereqs.dd no longer part of CPAN-Meta-YAML.
James E Keenan [Wed, 5 Aug 2015 01:50:47 +0000 (21:50 -0400)]
t/00-report-prereqs.dd no longer part of CPAN-Meta-YAML.

Removed it from MANIFEST.  Added two more files missing from MANIFEST.

Had to run ./perl -Ilib Porting/metadata to update META.yml.

Maintainer reports that the "patch is safe to be merged now"; hence,
merging notwithstanding '-TRIAL' comment.

For: RT #125748

5 years agoUpgrade CPAN-Meta-YAML from 0.016 to 0.017-TRIAL
Karen Etheridge [Tue, 4 Aug 2015 15:30:31 +0000 (08:30 -0700)]
Upgrade CPAN-Meta-YAML from 0.016 to 0.017-TRIAL


meta files omitted:

5 years agodouble-double long double %a fixes
Sisyphus [Wed, 5 Aug 2015 20:53:38 +0000 (16:53 -0400)]
double-double long double %a fixes

- reserve enough buffer space
- name the two different errors differently
- test around the problem spot

5 years agoBring list of directories requiring custom TAP up-to-date.
James E Keenan [Sun, 2 Aug 2015 13:15:52 +0000 (09:15 -0400)]
Bring list of directories requiring custom TAP up-to-date.

The list of directories in 'perltodo' which t/ may not be used and in
which hand-rolled TAP is required was out-of-date.  It did not reflect the
creation in 2012 of the t/opbasic directory.  It failed to include the t/comp

5 years ago[perl #120826] correct documentation of sv parameter of call_sv()
Tony Cook [Mon, 3 Aug 2015 06:48:01 +0000 (16:48 +1000)]
[perl #120826] correct documentation of sv parameter of call_sv()

5 years agoAdded {unlock,lock}_hashref_recurse to @EXPORT_OK
Aaron Priven [Wed, 5 Aug 2015 00:08:56 +0000 (20:08 -0400)]
Added {unlock,lock}_hashref_recurse to @EXPORT_OK

In Hash::Util, the functions lock_hashref_recurse and
unlock_hashref_recurse were omitted from the @EXPORT_OK array,
the synopsis in the POD, and the test for exported functions in
t/Util.t. This commit adds those functions in all three places.

For: RT #125730

5 years agoGuarantee that, after unlocking, the hash is actually assignable.
James E Keenan [Thu, 30 Jul 2015 00:58:42 +0000 (20:58 -0400)]
Guarantee that, after unlocking, the hash is actually assignable.

Hash::Util::unlock_hashref_recurse(); Hash::Util::unlock_hash_recurse().

Thanks to report from Diab Jerius.

For: RT #125721

5 years agoadd a small note that find2perl is not in core
Ricardo Signes [Mon, 3 Aug 2015 02:44:21 +0000 (22:44 -0400)]
add a small note that find2perl is not in core

5 years agoSafefree(NULL) reduction
Daniel Dragan [Wed, 29 Jul 2015 07:31:23 +0000 (03:31 -0400)]
Safefree(NULL) reduction

- the pointers are always null at this point, see
- reduce scope of temp_buffer and svrecode, into an inner branch
- in some permutations, either temp_buffer is never set to non-null, or
  svrecode, in permutations where it is known that the var hasn't been set
  yet, skip the freeing calls at the end, this doesn't eliminate all
  permutations with NULL being passed to Safefree and SvREFCNT_dec, but
  only some of them
- dont create a save stack entry to call Safefree(NULL), see ticket for
  this patch for some profiling stats

5 years agouse a more sensible homepage value for XSLoader
Tony Cook [Mon, 3 Aug 2015 01:41:42 +0000 (11:41 +1000)]
use a more sensible homepage value for XSLoader

5 years agoxs_boot_epilog (Xp): change ax from U32 to I32
Reini Urban [Fri, 13 Mar 2015 15:34:38 +0000 (16:34 +0100)]
xs_boot_epilog (Xp): change ax from U32 to I32

we need to match the declaration of ax

5 years agoRemove uselongdoubles false claim.
Jarkko Hietaniemi [Sun, 2 Aug 2015 12:39:32 +0000 (08:39 -0400)]
Remove uselongdoubles false claim.

Missed this spot in 568793b6.

5 years agoCheck for POSIX locales once.
Jarkko Hietaniemi [Sun, 2 Aug 2015 02:50:39 +0000 (22:50 -0400)]
Check for POSIX locales once.

Makes loc_tools users safe under minitest.
Currently op/quotemeta.t and op/taint.t are failing there.

5 years agoutf8.h: Add dummy param for when macros placed in API
Karl Williamson [Fri, 15 May 2015 19:49:31 +0000 (13:49 -0600)]
utf8.h: Add dummy param for when macros placed in API

These macros are not in the public API, but they might be someday.  We
may want to check for valide UTF-8 at some point.  Add a parameter so
that is possible then without having to change the API.

This also changes to use the short name of one macro

5 years agot/op/tr.t: Fix comment
Karl Williamson [Fri, 15 May 2015 19:32:23 +0000 (13:32 -0600)]
t/op/tr.t: Fix comment

This was confusing, and a likely interpretation is wrong: [i-j]  doesn't
match the gap characters in EBCDIC

5 years agoutf8.h: Fix typo in macro name definition
Karl Williamson [Fri, 15 May 2015 15:16:18 +0000 (09:16 -0600)]
utf8.h: Fix typo in macro name definition

The trailing underscore was unintended.

5 years agoutf8.h, utfebcdic.h: Add comments; white-space only
Karl Williamson [Fri, 15 May 2015 15:05:14 +0000 (09:05 -0600)]
utf8.h, utfebcdic.h: Add comments; white-space only

5 years agot/opbasic/cmp.t: Add test for NUL
Karl Williamson [Thu, 14 May 2015 01:25:22 +0000 (19:25 -0600)]
t/opbasic/cmp.t: Add test for NUL

NUL can present problems for string handling; better test it

5 years agopp_pack.c: Add comment
Karl Williamson [Wed, 13 May 2015 23:53:55 +0000 (17:53 -0600)]
pp_pack.c: Add comment

5 years agopp.c: Fix typo in comment
Karl Williamson [Wed, 13 May 2015 23:53:26 +0000 (17:53 -0600)]
pp.c: Fix typo in comment

5 years agoregen/ Suppress extra null array element
Karl Williamson [Wed, 13 May 2015 23:46:00 +0000 (17:46 -0600)]
regen/ Suppress extra null array element

We don't output a trailing comma after the final element in these C
arrays, and thus prevent the C compiler from generating a useless null

5 years agoutf8.h: Add UTF8_SKIP as a synonym for UTF8SKIP
Karl Williamson [Wed, 13 May 2015 23:27:48 +0000 (17:27 -0600)]
utf8.h: Add UTF8_SKIP as a synonym for UTF8SKIP

Most of the other names in utf8.h have an underscore; this allows
someone to keep things consistent in their code.

5 years agoutfebcdic.h: Comments only
Karl Williamson [Wed, 13 May 2015 23:25:28 +0000 (17:25 -0600)]
utfebcdic.h: Comments only

5 years agoutf8.h: White-space only
Karl Williamson [Sun, 10 May 2015 00:21:55 +0000 (18:21 -0600)]
utf8.h: White-space only

Align some macro definitions vertically to make it easier to read

5 years agohandy.h: White-space only
Karl Williamson [Sat, 9 May 2015 19:28:11 +0000 (13:28 -0600)]
handy.h: White-space only

Stops lines from exceeding 80 cols, and aligns columns vertical for
easier reading

5 years agoop.c: Fix typo in comment
Karl Williamson [Sat, 9 May 2015 03:23:34 +0000 (21:23 -0600)]
op.c: Fix typo in comment

5 years agoperlapi: Use F<> around file names
Karl Williamson [Thu, 7 May 2015 17:11:41 +0000 (11:11 -0600)]
perlapi: Use F<> around file names

5 years agoperlapi: Use C<> instead of I<> for parameter names, etc
Karl Williamson [Thu, 7 May 2015 16:28:43 +0000 (10:28 -0600)]
perlapi: Use C<> instead of I<> for parameter names, etc

The majority of perlapi uses C<> to specify these things, but a few
things used I<> instead.  Standardize to C<>.

5 years agore/re_tests: Rmv comment
Karl Williamson [Thu, 9 Apr 2015 18:41:53 +0000 (12:41 -0600)]
re/re_tests: Rmv comment

This was a comment I added for debugging, and forgot to remove

5 years agotoke.c: White-space, comment, added braces only
Karl Williamson [Tue, 7 Apr 2015 04:35:02 +0000 (22:35 -0600)]
toke.c: White-space, comment, added braces only

This makes && and || begin lines instead of end them for easier
following of the logic, as suggested in Perl Best Practices.  A couple
of { } pairs were added to make the code within an 'if' stand out from
the 'if' test itself.

5 years agoUpgrade Filter-Util-Call from version 1.54 to 1.55
Steve Hay [Fri, 31 Jul 2015 07:50:26 +0000 (08:50 +0100)]
Upgrade Filter-Util-Call from version 1.54 to 1.55

5 years agoUpgrade Encode from version 2.75 to 2.76
Steve Hay [Fri, 31 Jul 2015 07:20:18 +0000 (08:20 +0100)]
Upgrade Encode from version 2.75 to 2.76

5 years agoAdd Ivan Pozdeev to AUTHORS
H.Merijn Brand [Thu, 30 Jul 2015 10:38:52 +0000 (12:38 +0200)]
Add Ivan Pozdeev to AUTHORS

5 years agoextra guard against spaces in paths (spotted by Ivan Pozdeev)
H.Merijn Brand [Thu, 30 Jul 2015 09:08:38 +0000 (11:08 +0200)]
extra guard against spaces in paths (spotted by Ivan Pozdeev)

5 years agoConsistently use -o a.out (spotted by Ivan Pozdeev)
H.Merijn Brand [Thu, 30 Jul 2015 08:48:51 +0000 (10:48 +0200)]
Consistently use -o a.out (spotted by Ivan Pozdeev)

5 years agoThere is no default dflt for usedtrace (spotted by Ivan Pozdeev)
H.Merijn Brand [Thu, 30 Jul 2015 08:39:07 +0000 (10:39 +0200)]
There is no default dflt for usedtrace (spotted by Ivan Pozdeev)

5 years agoperldelta for 3480fbaaaea8
Tony Cook [Thu, 30 Jul 2015 02:01:17 +0000 (12:01 +1000)]
perldelta for 3480fbaaaea8

5 years, dont repeatedly access magic %ENV vars
Daniel Dragan [Wed, 29 Jul 2015 13:54:51 +0000 (09:54 -0400)], dont repeatedly access magic %ENV vars

%ENV is magic/tied, a lexical is faster than calling out to magic APIs
with gets and sets (or checks for them). Less glob and hash lookups too.

Return the lexical instead of the magic var so there isn't a search for
magic from pp_leavesub's sv_mortalcopy. Even though env mg vtable doesn't
have a getter or GMAGIC, SvVSTRING_mg executes mg_find for random, get
and set magic inside Perl_sv_setsv_flags.

5 years agoUpdate perlfaq to CPAN version 5.021010
Chris 'BinGOs' Williams [Wed, 29 Jul 2015 13:42:45 +0000 (14:42 +0100)]
Update perlfaq to CPAN version 5.021010


5.021010    20152015-07-28 18:30:48Z
  * Fix typo (Douglas L. Jenkins)
  * Fix Time::Seconds example (Niko Tyni)
  * Basic README.pod (Shlomi Fish)

5 years agoUse U64 (a type) instead of U64TYPE (a define).
Jarkko Hietaniemi [Tue, 28 Jul 2015 23:11:38 +0000 (19:11 -0400)]
Use U64 (a type) instead of U64TYPE (a define).

Builds on top of 16d89be8.

5 years agoAllow perl to work again with all Unicode releases
Karl Williamson [Wed, 29 Jul 2015 04:17:01 +0000 (22:17 -0600)]
Allow perl to work again with all Unicode releases

Compiling perl to work with early Unicode releases is a goal, but has
been broken since 5.18.  This sequence of commits gets this working
again, actually better than before.

5 years agoperldelta entry for mktables changes
Karl Williamson [Wed, 29 Jul 2015 03:24:40 +0000 (21:24 -0600)]
perldelta entry for mktables changes

5 years agolib/unicore/README.perl: Update
Karl Williamson [Wed, 29 Jul 2015 03:19:52 +0000 (21:19 -0600)]
lib/unicore/README.perl: Update

This makes some changes and adds instructions for compiling older
Unicode versions.

5 years agomktables: Minimize use of version numbers for decisions
Karl Williamson [Wed, 29 Jul 2015 02:52:57 +0000 (20:52 -0600)]
mktables: Minimize use of version numbers for decisions

I found these places where file existence can be used instead of knowing
what version something happened in.  Sometimes those numbers are wrong,
and one of these was.  If it can be avoided, better not to use version

5 years agomktables: improve LineBreak table for early Unicodes
Karl Williamson [Wed, 29 Jul 2015 02:34:22 +0000 (20:34 -0600)]
mktables: improve LineBreak table for early Unicodes

It turns out that the generated map files look better (even if
functionally equivalent) if the default mapping is the one to the
above-Unicode code points.  This was the only one that had it different.

5 years agomktables: Make sure \p{Space} works in all Unicodes
Karl Williamson [Tue, 28 Jul 2015 21:58:47 +0000 (15:58 -0600)]
mktables: Make sure \p{Space} works in all Unicodes

This isn't defined by Unicode until a later version, but Perl wants it
in all versions.

5 years agomktables: Fix up Name_Alias in early Unicodes
Karl Williamson [Tue, 28 Jul 2015 21:21:16 +0000 (15:21 -0600)]
mktables: Fix up Name_Alias in early Unicodes

perl needs the Name_Alias property accessible in all releases in order
for charnames to work properly.  However the property was not created
until Unicode version 5.0.  Previously, the property was made available
to all Unicode versions, which is contrary to the policy of exposing
properties to public use only when Unicode so exposes them.  Thus the
behavior is as close as possible to Unicode-specified.  This commit
creates an internal-only property for the perl core, and removes the
general access on early Unicode releases.

5 years agomktables: Add handling of WB and SB for early Unicodes
Karl Williamson [Tue, 28 Jul 2015 04:45:31 +0000 (22:45 -0600)]
mktables: Add handling of WB and SB for early Unicodes

This allows \b{wb} and \b{sb} to work on all Unicode releases.  The huge
number of differences in charclass_invlists.h is only because the names
of the SB and WB tables change, and the code automatically
re-alphabetizes things.

5 years agomktables: Fix GCB to work on early Unicodes
Karl Williamson [Mon, 27 Jul 2015 14:12:02 +0000 (08:12 -0600)]
mktables: Fix GCB to work on early Unicodes

The GCB property was not properly being generated in early Unicode
releases.  The huge commit diff is due solely to the fact that the name
changes of this property so it is sure to not be accessible outside the
perl core, and the property tables are automatically resorted

5 years agomktables: Convert Hangul_Syllable_Type to use new early infrastructure
Karl Williamson [Mon, 27 Jul 2015 04:57:51 +0000 (22:57 -0600)]
mktables: Convert Hangul_Syllable_Type to use new early infrastructure

This allows us to remove some special handling.

5 years agomktables: Convert PropValueAliases.txt to use new early infrastructure
Karl Williamson [Mon, 27 Jul 2015 04:47:56 +0000 (22:47 -0600)]
mktables: Convert PropValueAliases.txt to use new early infrastructure

This file is crucial to compiling perl these days.  This commit converts
to use the new infrastructure for dealing with compiling Unicode
releases prior to when this file was made available.

5 years agomktables: Convert PropertyAliases.txt to use new early infrastructure
Karl Williamson [Mon, 27 Jul 2015 04:40:39 +0000 (22:40 -0600)]
mktables: Convert PropertyAliases.txt to use new early infrastructure

This file is crucial to compiling perl these days.  This commit converts
to use the new infrastructure for dealing with compiling Unicode
releases prior to when this file was made available.

5 years agomktables: Add code for easier handling of early Unicode versions
Karl Williamson [Mon, 27 Jul 2015 04:35:02 +0000 (22:35 -0600)]
mktables: Add code for easier handling of early Unicode versions

This adds infrastructure to the constructor of the Input_file class to
allow an alternative to be specified when compiling a Unicode release
that is earlier than the file first became available.

This is only used when the property is used by core perl and has to work
in all releases.  For example the qr/\X/ construct should always work,
but relies on a property that isn't specified before Unicode 4.1.  This
allows for easier specification of how to handle this type of case.

5 years agomktables: Use Input_file class for always skipped files
Karl Williamson [Mon, 27 Jul 2015 04:18:02 +0000 (22:18 -0600)]
mktables: Use Input_file class for always skipped files

Until this commit there were two mechanisms available to specify files
in the Unicode Character Database are not used by mktables.  Now there
is one.  The global that contained such files is deleted, and instead
all such files are specified by an Input_file class object.  This has
the advantage of just one method, and the constructor already has
parameters to specify when a file first appeared, and when it was
removed.  This allows automatic generation of the pod, listing just the
appropriate files for the version being compiled.  It also allows for
the automatic check of all files to see that they are DOS 8.3 filesystem
compatible.  And it allows for some code simplification.

Unicode specifies some .html files in the UCD.  These are always skipped
(so far, and likely forever), and were in the global.  Now they are in
the constructor, which means that the code that looks for potential
files that aren't being handled has to be changed to also look for .html
files as well.

5 years agomktables: For 8.3 filesystems, the suffix matters
Karl Williamson [Mon, 27 Jul 2015 04:25:57 +0000 (22:25 -0600)]
mktables: For 8.3 filesystems, the suffix matters

Two files can have the same file name, but be different if they have
different suffixes.  Until this commit, mktables thought they were the
same, because it ignored the suffix when calculating this.  Some files
are version strings like "3.1" which look like a floating point number.
These are converted to like "3_1" first so that the .1 doesn't look like
a suffix.

5 years agomktables: Use new infrastructure for optional files
Karl Williamson [Sun, 26 Jul 2015 16:33:21 +0000 (10:33 -0600)]
mktables: Use new infrastructure for optional files

This follows up the previous commit by actually using the new
infrastructure it created.  The optional Unihan files are switched to
use the new capabilities.  This means that the globals they previously
used are no longer necessary, and are ripped out here.

5 years agomktables: Improve handling of optional files
Karl Williamson [Sun, 26 Jul 2015 16:14:11 +0000 (10:14 -0600)]
mktables: Improve handling of optional files

Some files in the Unicode Character Database are optional for perl.
Currently these are all Unihan files for East Asian languages.  This
commit adds infrastructure to the class for input file objects to more
automatically handle the case when the file is present vs not.
Currently, one has to hand edit mktables to cope with the file getting
plunked down in the directory to be compiled.  This commit is a step
towards making the editing unnecessary.

5 years agomktables: Add specifiable construction handler for Input_file class
Karl Williamson [Mon, 27 Jul 2015 03:30:07 +0000 (21:30 -0600)]
mktables: Add specifiable construction handler for Input_file class

This object is for the files in the Unicode Character Database.  This
commit adds the capability for the constructor new() to be passed a code
reference to call after everything else is constructed, but before
control is returned.

5 years agomktables: Unicode has withdrawn some files in the UCD
Karl Williamson [Sun, 26 Jul 2015 04:35:36 +0000 (22:35 -0600)]
mktables: Unicode has withdrawn some files in the UCD

This adds the capability to mktables to seamlessly handle the case where
Unicode has removed a file from the Unicode Character Database that
existed in prior versions.  The constructor for the object tells what
release no longer has it.  The file is looked for only when compiling a
Unicode version in the window that had it.

5 years agomktables: Revamp constructor and run method for input objects
Karl Williamson [Sun, 26 Jul 2015 03:45:46 +0000 (21:45 -0600)]
mktables: Revamp constructor and run method for input objects

Each .txt file that Unicode furnishes as part of the Unicode Character
Database has an object created for it, and there is a run() method to
actually look at the input file and process it.  This commit moves some
code from the run() method into the constructor to pave the way for
future commits (hence some of the awkward constructs and indentation in
this one; these minimize the commitdiffs in later ones).

5 years agomktables: Allow multiple eof handlers for input files
Karl Williamson [Sun, 26 Jul 2015 01:19:05 +0000 (19:19 -0600)]
mktables: Allow multiple eof handlers for input files

The Input_file class is hereby extended so there can be more than one
subroutine stacked to call when an EOF is encountered.  This new
capability will be used in later commits.  There is no current need for
any outside class to look at this, so that capability is removed.

5 years agomktables: Suppress output files that shouldn't be written
Karl Williamson [Sun, 26 Jul 2015 01:11:40 +0000 (19:11 -0600)]
mktables: Suppress output files that shouldn't be written

mktables takes files as input as furnished by Unicode, munges things,
and outputs files containing tables that are more suitable for use by
the rest of perl.  A placeholder table is one that isn't supposed to be
output, but whose values are needed for internal calculations.  Prior to
this commit, those tables were being output.

5 years agomktables: Rmv extraneous sub return value
Karl Williamson [Sun, 26 Jul 2015 01:04:03 +0000 (19:04 -0600)]
mktables: Rmv extraneous sub return value

The return value of this function isn't looked at.

5 years agomktables: Handle default for Gc property better
Karl Williamson [Sun, 26 Jul 2015 00:57:13 +0000 (18:57 -0600)]
mktables: Handle default for Gc property better

Unicode changed the default name they specify in their data from the
abbreviation to the long form in version 7

5 years agomktables: Handle \b{gcb}, \X better in Unicode 1
Karl Williamson [Sun, 26 Jul 2015 00:52:37 +0000 (18:52 -0600)]
mktables: Handle \b{gcb}, \X better in Unicode 1

The Hangul syllables in version 1 of Unicode were withdrawn and replaced
with the ones we know in version 2.  Should perl ever be compiled on
version 1, this commit causes the old syllables to work better than they
do now, though imperfectly.  This is used only in the \X and \b{gcb}

5 years agomktables: Two files came along later than mktables thinks
Karl Williamson [Sat, 25 Jul 2015 04:43:55 +0000 (22:43 -0600)]
mktables: Two files came along later than mktables thinks

NormTest.txt LBTest.txt were really in later releases.  This fixes that
and moves each constructor to be in the respective release's group of

5 years agomktables: Use variables for repeated text
Karl Williamson [Fri, 24 Jul 2015 14:44:25 +0000 (08:44 -0600)]
mktables: Use variables for repeated text

This text is actually used to group values in the generated pod.  By
using a variable, we make sure it is exact in every usage, so the values
are sure to get grouped properly.