perl.git
18 months agoenable PERL_OP_PARENT always
David Mitchell [Mon, 18 Dec 2017 11:50:03 +0000 (11:50 +0000)] 
enable PERL_OP_PARENT always

Remove support for PERL_NO_OP_PARENT, which was a way of turning off the
(on by default) PERL_OP_PARENT define.

See http://nntp.perl.org/group/perl.perl5.porters/248072.

18 months agoalign version numbers in the PathTools distro
Zefram [Mon, 18 Dec 2017 03:21:05 +0000 (03:21 +0000)] 
align version numbers in the PathTools distro

18 months agoremove support for running PathTools on MacOS
Zefram [Mon, 18 Dec 2017 03:18:39 +0000 (03:18 +0000)] 
remove support for running PathTools on MacOS

MacOS Classic hasn't been a supported platform since 5.14.  Note that
the code for processing MacOS-style paths remains, and can be run on
supported platforms.  [perl #130818]

18 months agofix pod markup in warnings.pm
Zefram [Mon, 18 Dec 2017 03:12:04 +0000 (03:12 +0000)] 
fix pod markup in warnings.pm

Commit c4583f59133164b3f392c31e9b9573276ec17e74 introduced a pod error.

18 months agoremove support for running PathTools on EPOC
Zefram [Mon, 18 Dec 2017 03:08:31 +0000 (03:08 +0000)] 
remove support for running PathTools on EPOC

EPOC hasn't been a supported platform since 5.18.  Note that the code
for processing EPOC-style paths remains, and can be run on supported
platforms.  [perl #130818]

18 months agoperldelta: Avoid ‘deprecated’ for non-deprecated module
Father Chrysostomos [Mon, 18 Dec 2017 02:43:55 +0000 (18:43 -0800)] 
perldelta: Avoid ‘deprecated’ for non-deprecated module

Saying the module is deprecated (in core) can easily be misunder-
stood.  The module itself is certainly not deprecated.

18 months agoperldelta for #132468 warnings functions
Father Chrysostomos [Mon, 18 Dec 2017 02:00:33 +0000 (18:00 -0800)] 
perldelta for #132468 warnings functions

18 months agoperldelta: Alphabetise modules
Father Chrysostomos [Mon, 18 Dec 2017 01:59:33 +0000 (17:59 -0800)] 
perldelta: Alphabetise modules

18 months ago[perl #132468] At _at_level warnings functions
Father Chrysostomos [Mon, 18 Dec 2017 01:56:52 +0000 (17:56 -0800)] 
[perl #132468] At _at_level warnings functions

18 months agopp_ctl.c: Add -D output for inward goto
Father Chrysostomos [Mon, 11 Dec 2017 21:38:24 +0000 (13:38 -0800)] 
pp_ctl.c: Add -D output for inward goto

18 months agomerge branch zefram/dumb_match
Zefram [Sun, 17 Dec 2017 11:02:23 +0000 (11:02 +0000)] 
merge branch zefram/dumb_match

18 months agoUnicode::UCD: max code point is now IV_MAX
Karl Williamson [Fri, 10 Nov 2017 01:31:15 +0000 (18:31 -0700)] 
Unicode::UCD: max code point is now IV_MAX

Return the correct value when asked.

18 months agoregcomp.sym: Clarify regnode comment
Karl Williamson [Sat, 16 Dec 2017 19:13:01 +0000 (12:13 -0700)] 
regcomp.sym: Clarify regnode comment

18 months agoregen/mk_invlists.pl: reformulate a branch and outdent
Karl Williamson [Sat, 16 Dec 2017 18:53:15 +0000 (11:53 -0700)] 
regen/mk_invlists.pl: reformulate a branch and outdent

This turns a test whose one branch dies into a postfix type, which means
there is no need for an else, and that code can be outdented.

18 months agoregen/mk_invlists.pl: Outdent code
Karl Williamson [Sat, 16 Dec 2017 18:48:12 +0000 (11:48 -0700)] 
regen/mk_invlists.pl: Outdent code

This was unnecessarily indented.  This commit also removes an
unnecessary {...} block, and outdents the interior as well.
No other changes are made

18 months agoregen/mk_invlists.pl: Fix typo
Karl Williamson [Sat, 16 Dec 2017 18:37:21 +0000 (11:37 -0700)] 
regen/mk_invlists.pl: Fix typo

18 months agoperlre: '#' is a metacharacter under /x
Karl Williamson [Sun, 17 Dec 2017 00:05:50 +0000 (17:05 -0700)] 
perlre: '#' is a metacharacter under /x

18 months agomake dNOOP usable outside function in C++
Zefram [Sat, 16 Dec 2017 22:46:33 +0000 (22:46 +0000)] 
make dNOOP usable outside function in C++

Commit 7db66e12883f0832ca80164b723768b848187bda changed dNOOP in C++ from
an external function declaration (which was running into inconsistent
linkage) to a no-op statement.  The no-op statement is only valid where
statements are valid, i.e., inside a function, so this doesn't actually
work everywhere that a declaration is expected.

Switch dNOOP to be an incomplete struct declaration, regardless of
language.  This can certainly be used both inside and outside functions,
is valid to repeat, and does not have the linkage problem of a function
declaration.  It should also be as unlikely to attract an "unused"
warning as an external function declaration.

18 months agotypo fix in doc
Zefram [Sat, 16 Dec 2017 09:30:16 +0000 (09:30 +0000)] 
typo fix in doc

18 months agoshow modern usage for {XS,Dyna}Loader
Zefram [Sat, 16 Dec 2017 08:34:25 +0000 (08:34 +0000)] 
show modern usage for {XS,Dyna}Loader

Fixes [perl #132247].

18 months agosemicolon-friendly diagnostic control
Zefram [Sat, 16 Dec 2017 07:12:48 +0000 (07:12 +0000)] 
semicolon-friendly diagnostic control

New macros {GCC,CLANG}_DIAG_{IGNORE,RESTORE}_{DECL,STMT}, which take a
following semicolon.  It is necessary to use the _DECL or _STMT version
as appropriate to the context.  Fixes [perl #130726].

18 months agoperform system() arg processing before fork
Zefram [Sat, 16 Dec 2017 05:33:20 +0000 (05:33 +0000)] 
perform system() arg processing before fork

A lot of things can happen when stringifying an argument list: side
effects, warnings, exceptions.  In the case of system(), these effects
should happen in the context of the parent process.  The stringification
can also depend on which process it happens in, as in the case of
$$, and in that case it should also happen in the parent process.
Therefore reduce the argument scalars to strings first thing in pp_system.
Fixes [perl #121105].

18 months agoupdate and clarify "die" and "warn" doc
Zefram [Sat, 16 Dec 2017 04:47:08 +0000 (04:47 +0000)] 
update and clarify "die" and "warn" doc

They didn't fully describe the handling of reference operands, and
there were other errors in their description of the treatment of the
operand list.  Fixes [perl #121372].

18 months agoretry gdbm_open() upon block size error
Zefram [Sat, 16 Dec 2017 02:17:08 +0000 (02:17 +0000)] 
retry gdbm_open() upon block size error

It is reported that gdbm_open() with default block size can fail on
filesystems with a non-power-of-two block size.  In that event, retry
opening, forcing a power-of-two block size.  Fixes [perl #119623].

18 months agoadd ticket number to perldelta entry
Zefram [Sat, 16 Dec 2017 01:48:22 +0000 (01:48 +0000)] 
add ticket number to perldelta entry

18 months agowiden size-type variables in pack/unpack
Zefram [Sat, 16 Dec 2017 01:44:32 +0000 (01:44 +0000)] 
widen size-type variables in pack/unpack

Most size-type variables in pp_pack.c were of type I32, with a
smattering of other types.  Use SSize_t in place of I32, and generally
use size_t-width variables as appropriate.  Fixes [perl #119367].

18 months agoperlfunc: remove stray plus from start of line
Marco Fontani [Fri, 15 Dec 2017 17:16:31 +0000 (10:16 -0700)] 
perlfunc: remove stray plus from start of line

 Looks to be an artifact of applying my original patch, which was
 amended as part of e135ff695231a81e2a70a739e8d813525432fd4d, whereby
 the text was slightly amended.

18 months agodocument GDBM_File's delete vs each conflict
Zefram [Fri, 15 Dec 2017 09:51:33 +0000 (09:51 +0000)] 
document GDBM_File's delete vs each conflict

Fixes [perl #117449].

18 months agorewrite "ref" documentation for clarity
Zefram [Fri, 15 Dec 2017 07:00:11 +0000 (07:00 +0000)] 
rewrite "ref" documentation for clarity

18 months agoclean up directories of split pod files
Zefram [Fri, 15 Dec 2017 05:12:32 +0000 (05:12 +0000)] 
clean up directories of split pod files

Fixes [perl #114316].

18 months agoperldelta 282fc0b3cc2439f69587d980b62bef7f5d5bdfef
Zefram [Fri, 15 Dec 2017 02:14:25 +0000 (02:14 +0000)] 
perldelta 282fc0b3cc2439f69587d980b62bef7f5d5bdfef

18 months agoperldelta e135ff695231a81e2a70a739e8d813525432fd4d
Zefram [Fri, 15 Dec 2017 02:12:42 +0000 (02:12 +0000)] 
perldelta e135ff695231a81e2a70a739e8d813525432fd4d

18 months agoperldelta 47836a13cc4c999c9b3589c6797d6769b52c37fd
Zefram [Fri, 15 Dec 2017 02:11:13 +0000 (02:11 +0000)] 
perldelta 47836a13cc4c999c9b3589c6797d6769b52c37fd

18 months agoperldelta 3d033384b2016a58c3eed89524dc658660c759ce
Zefram [Fri, 15 Dec 2017 02:09:15 +0000 (02:09 +0000)] 
perldelta 3d033384b2016a58c3eed89524dc658660c759ce

18 months agoperldelta 0bd1c35ee47dab181543ba366fe021122c591f65
Zefram [Fri, 15 Dec 2017 02:06:54 +0000 (02:06 +0000)] 
perldelta 0bd1c35ee47dab181543ba366fe021122c591f65

18 months agoperldelta 38e30ca7507a601c2d84596bc51d88c0f3c516b4
Zefram [Fri, 15 Dec 2017 02:03:33 +0000 (02:03 +0000)] 
perldelta 38e30ca7507a601c2d84596bc51d88c0f3c516b4

18 months agoperldelta addf67e13a08f45d3bb4c245c821b1ef2767c5a5
Zefram [Fri, 15 Dec 2017 02:00:05 +0000 (02:00 +0000)] 
perldelta addf67e13a08f45d3bb4c245c821b1ef2767c5a5

18 months agoperldelta 27d3197f2b90b3534ea74a96fc7e37200baeb9b7
Zefram [Fri, 15 Dec 2017 01:58:26 +0000 (01:58 +0000)] 
perldelta 27d3197f2b90b3534ea74a96fc7e37200baeb9b7

18 months agoperldelta d5407247046f2f01c1492998b32b3b148445febe
Zefram [Fri, 15 Dec 2017 01:55:17 +0000 (01:55 +0000)] 
perldelta d5407247046f2f01c1492998b32b3b148445febe

18 months agoperldelta 16ada235c332e017667585e1a5a00ce43a31c529
Zefram [Fri, 15 Dec 2017 01:53:56 +0000 (01:53 +0000)] 
perldelta 16ada235c332e017667585e1a5a00ce43a31c529

18 months agoperldelta 397baf232086e0a9ad6f881a9614d3dbaea853fc
Zefram [Fri, 15 Dec 2017 01:50:55 +0000 (01:50 +0000)] 
perldelta 397baf232086e0a9ad6f881a9614d3dbaea853fc

18 months agoperldelta 0165f7b01e9c43629d0c6f4b5eb2e672abeda51a
Zefram [Fri, 15 Dec 2017 01:48:41 +0000 (01:48 +0000)] 
perldelta 0165f7b01e9c43629d0c6f4b5eb2e672abeda51a

18 months agoperldelta dd9e86b4501b7c8aeba1f5ebda9f8907747c443f
Zefram [Fri, 15 Dec 2017 01:46:30 +0000 (01:46 +0000)] 
perldelta dd9e86b4501b7c8aeba1f5ebda9f8907747c443f

18 months agoperldelta 9b91093d3e74d13a6e4f67269a587f4ab397998a
Zefram [Fri, 15 Dec 2017 01:44:39 +0000 (01:44 +0000)] 
perldelta 9b91093d3e74d13a6e4f67269a587f4ab397998a

18 months agoperldelta b5145c7d479fcfcb104fc6d3d89b4d757ca3cd15
Zefram [Fri, 15 Dec 2017 01:43:34 +0000 (01:43 +0000)] 
perldelta b5145c7d479fcfcb104fc6d3d89b4d757ca3cd15

18 months agoperldelta 0301e899536a22752f40481d8a1d141b7a7dda82
Zefram [Fri, 15 Dec 2017 01:39:19 +0000 (01:39 +0000)] 
perldelta 0301e899536a22752f40481d8a1d141b7a7dda82

18 months agoperldelta 6c4f4eb174d1e2e9f874786123a699d11ae741f9
Zefram [Fri, 15 Dec 2017 01:32:39 +0000 (01:32 +0000)] 
perldelta 6c4f4eb174d1e2e9f874786123a699d11ae741f9

18 months agoperldelta 1af9149031d9f5d2d43b6df59b628a0f2c1041f6
Zefram [Fri, 15 Dec 2017 01:30:38 +0000 (01:30 +0000)] 
perldelta 1af9149031d9f5d2d43b6df59b628a0f2c1041f6

18 months agoperldelta bff3de19b083d33895fc03f7d7d092e5830547a5
Zefram [Fri, 15 Dec 2017 01:29:23 +0000 (01:29 +0000)] 
perldelta bff3de19b083d33895fc03f7d7d092e5830547a5

18 months agoperldelta b3893bfa90e8810497e2f81458a5a46db611cadf
Zefram [Fri, 15 Dec 2017 01:27:12 +0000 (01:27 +0000)] 
perldelta b3893bfa90e8810497e2f81458a5a46db611cadf

18 months agoperldelta 0c9c439d08a65206d442724bcd9fb29fa5a7f937
Zefram [Fri, 15 Dec 2017 01:24:36 +0000 (01:24 +0000)] 
perldelta 0c9c439d08a65206d442724bcd9fb29fa5a7f937

18 months agoperldelta 58be57636a42d6c6fd404c48c4e1cb87870182df
Zefram [Fri, 15 Dec 2017 01:20:03 +0000 (01:20 +0000)] 
perldelta 58be57636a42d6c6fd404c48c4e1cb87870182df

18 months agoperldelta 7c6e7cf06853eef1d1b271077c402c5f8655fbe6
Zefram [Fri, 15 Dec 2017 01:16:14 +0000 (01:16 +0000)] 
perldelta 7c6e7cf06853eef1d1b271077c402c5f8655fbe6

18 months agoperldelta 38a3df78b8fbbdf02988dd5fe691c23a8041334f
Zefram [Fri, 15 Dec 2017 01:14:01 +0000 (01:14 +0000)] 
perldelta 38a3df78b8fbbdf02988dd5fe691c23a8041334f

18 months agoperldelta 557714184de18964b954b2c00fa13127fd3f216a
Zefram [Fri, 15 Dec 2017 01:11:47 +0000 (01:11 +0000)] 
perldelta 557714184de18964b954b2c00fa13127fd3f216a

18 months agoperldelta 3c0dbbbaeb55e36a6beabd1cfc9f0432053bcaf0
Zefram [Fri, 15 Dec 2017 01:09:48 +0000 (01:09 +0000)] 
perldelta 3c0dbbbaeb55e36a6beabd1cfc9f0432053bcaf0

18 months agoperldelta 7270698f29ae2f22f2cdfec7b156a75602cddf68
Zefram [Fri, 15 Dec 2017 01:08:38 +0000 (01:08 +0000)] 
perldelta 7270698f29ae2f22f2cdfec7b156a75602cddf68

18 months agoperldelta d3f0c815eccb54ae88550259c06aa395b2274580
Zefram [Fri, 15 Dec 2017 01:07:08 +0000 (01:07 +0000)] 
perldelta d3f0c815eccb54ae88550259c06aa395b2274580

18 months agoperldelta 39dc9d148281a0a05168f216359b3bdb696fec66
Zefram [Fri, 15 Dec 2017 01:04:32 +0000 (01:04 +0000)] 
perldelta 39dc9d148281a0a05168f216359b3bdb696fec66

18 months agoperldelta 0740a29d60ebd4ff72090340b0140ec2210e90c7
Zefram [Fri, 15 Dec 2017 01:02:39 +0000 (01:02 +0000)] 
perldelta 0740a29d60ebd4ff72090340b0140ec2210e90c7

18 months agoperldelta sub constructor documentation
Zefram [Fri, 15 Dec 2017 00:59:13 +0000 (00:59 +0000)] 
perldelta sub constructor documentation

Covers commits 68cd13c6081a23a59561d3289dba5a99f73c1463,
a59b17fa6324328a12a1d86a5e187e07ba8cee6c, and
28ef70489d76deb9024de42a0571162f323148c8.

18 months agoperldelta 8bfeb7823012732f6bfd9c65485ae3ad9c0cce8d
Zefram [Fri, 15 Dec 2017 00:56:11 +0000 (00:56 +0000)] 
perldelta 8bfeb7823012732f6bfd9c65485ae3ad9c0cce8d

18 months agoperldelta abda9fe0fe75ae824723761c1c98af958f17a41c
Zefram [Fri, 15 Dec 2017 00:51:21 +0000 (00:51 +0000)] 
perldelta abda9fe0fe75ae824723761c1c98af958f17a41c

18 months agoperldelta a252c8fe5fbed43d9b362ed97d57a5a7764fac62
Zefram [Fri, 15 Dec 2017 00:47:10 +0000 (00:47 +0000)] 
perldelta a252c8fe5fbed43d9b362ed97d57a5a7764fac62

18 months agomake exec keep its argument list more reliably
Zefram [Wed, 6 Dec 2017 21:27:15 +0000 (21:27 +0000)] 
make exec keep its argument list more reliably

Bits of exec code were putting the constructed commands into globals
PL_Argv and PL_Cmd, which could then be clobbered by reentrancy.
These are only global in order to manage their freeing, but that's
better managed by using the scope stack.  So replace them with automatic
variables, with ENTER/SAVEFREEPV/LEAVE to free the memory.  Also copy
the strings acquired from SVs, to avoid magic clobbering the buffers of
SVs already read.  Fixes [perl #129888].

18 months agorefer to perldiag from perlfunc
Marco Fontani [Wed, 13 Dec 2017 10:11:44 +0000 (11:11 +0100)] 
refer to perldiag from perlfunc

Rather than duplicating information as to which keyword, function, or
operator generates which warning, point the reader to the proper place
to read about which warnings Perl generates in which scenario, which are
well described in the POD for "warnings".  [perl #116080]

18 months agodon't lose mark when pp_reverse extends stack
Zefram [Fri, 8 Dec 2017 19:23:29 +0000 (19:23 +0000)] 
don't lose mark when pp_reverse extends stack

Nullary reverse needs to extend the stack to push its result scalar.
It was actually extending the stack, but doing so invalidated MARK,
which it relied upon to place the stack pointer afterwards.  Upon stack
reallocation it was therefore leaving the stack pointer pointing to the
freed stack memory.  Reformulate stack manipulation to not rely on MARK
after extending.  Fixes [perl #132544].

18 months agoRevert "re_intuit_start(): rename some local vars"
David Mitchell [Thu, 14 Dec 2017 09:32:46 +0000 (09:32 +0000)] 
Revert "re_intuit_start(): rename some local vars"

This reverts commit ea569f0097183cb2c1b98852f31b47264605f0b7.

This was just a cosmetic (if useful) change and clashes with a branch
Yves is working on. So I'll redo it some other time.

18 months agowarn on $a.$b.$c in void context
Zefram [Thu, 14 Dec 2017 04:23:58 +0000 (04:23 +0000)] 
warn on $a.$b.$c in void context

$a.$b.$c gets transformed early on to execute as ($a.$b).=$c, which didn't
warn about void context becuase .= looks like a useful side effect.
Happily, the recently-added OPpCONCAT_NESTED flag identifies that this
has happened.  Make scalarvoid() pay attention to this flag when a concat
op is put into void context.  Fixes [perl #6997]

18 months agoCwd: Change strcmp into strEQ
Karl Williamson [Thu, 9 Mar 2017 19:06:34 +0000 (12:06 -0700)] 
Cwd: Change strcmp into strEQ

The latter is easier to read

18 months agoFix typo in 183a822da3e11eb0f7dba393f5e6f2bc515cffe6
Karl Williamson [Thu, 14 Dec 2017 03:28:53 +0000 (20:28 -0700)] 
Fix typo in 183a822da3e11eb0f7dba393f5e6f2bc515cffe6

Spotted by Tony Cook++

18 months agoData::Dumper: Change a strncmp to memBEGINs
Karl Williamson [Thu, 9 Mar 2017 17:54:20 +0000 (10:54 -0700)] 
Data::Dumper: Change a strncmp to memBEGINs

The latter is much clearer as to what's going on

18 months agoData::Dumper: Change strcpy to strlcpy
Karl Williamson [Mon, 27 Mar 2017 20:24:41 +0000 (14:24 -0600)] 
Data::Dumper: Change strcpy to strlcpy

strlcpy is safer.  This reverts to using strcpy if no version of strlcpy
is available (but one has been available in Perl since 5.9.4)

18 months agoadd preload to .gitignore
Zefram [Thu, 14 Dec 2017 02:37:03 +0000 (02:37 +0000)] 
add preload to .gitignore

18 months agofix links in generated HTML documentation
Zefram [Thu, 14 Dec 2017 02:27:28 +0000 (02:27 +0000)] 
fix links in generated HTML documentation

Invoke installhtml in the right way for it to generate relative links.
Fix installhtml's code for creating relative links in the index for
split documents.  Update Pod::Html's section name transformer to
match the actual output seen via Pod::Simple::XHTML.  Incidentally
update split-on-head code for the new style of HTML generated by
Pod::Simple::XHTML.  Fixes [perl #110056].

18 months agoAdd PERL_REENTRANT for XS modules
Karl Williamson [Thu, 14 Dec 2017 02:07:04 +0000 (19:07 -0700)] 
Add PERL_REENTRANT for XS modules

This allows them to get the reentrant versions of libc functions
automatically.  Previously if they wanted to do this, they had to
declare themselves (shudder) as PERL_CORE or PERL_EXT.

18 months agoperlfunc: Add note about reentrant functions
Karl Williamson [Thu, 14 Dec 2017 01:36:02 +0000 (18:36 -0700)] 
perlfunc: Add note about reentrant functions

perl automatically and silently uses reentrant versions of some
functions in threaded perls when such functions are available.  Note
this.

18 months agoautomatic titling in Pod::Html
Zefram [Wed, 13 Dec 2017 22:59:28 +0000 (22:59 +0000)] 
automatic titling in Pod::Html

Automatic extraction of a title from the content was lost with the
switch to using Pod::Simple::XHTML for rendering.  It would be tricky
to add in Pod::Simple::XHTML, or anything else integrated into that
parser, because the stream-oriented approach plays poorly with any kind
of lookahead.  Instead go to a two-stage conversion, parsing the input
to tree form using Pod::Simple::SimpleTree and later feeding the tree
to the stream-oriented Pod::Simple::XHTML for output.  Between the two
stages, extract a default title from the tree, in time to use it when
setting options for Pod::Simple::XHTML.  Fixes [perl #110520].

18 months agopp_multiconcat() Use faster UTF-8 variant counting
Karl Williamson [Thu, 23 Nov 2017 06:10:58 +0000 (23:10 -0700)] 
pp_multiconcat() Use faster UTF-8 variant counting

18 months agore_intuit_start()/S_reghop3(): don't go beyond end
David Mitchell [Wed, 13 Dec 2017 15:53:51 +0000 (15:53 +0000)] 
re_intuit_start()/S_reghop3(): don't go beyond end

RT #132552

when hopping N characters along a string, if the 'end stop' lim wasn't
on a char boundary, the value returned by S_reghop3() could be up to
(but not including) one char's worth of bytes beyond lim.

This is fairly harmless, but gave valgrind/ASan palpitations.

So fixed by this commit.

18 months agore_intuit_start(): rename some local vars
David Mitchell [Wed, 13 Dec 2017 13:14:59 +0000 (13:14 +0000)] 
re_intuit_start(): rename some local vars

(no functional changes)

For local variables which hold a length, rename that var with a _c or _b
suffix to indicate whether it holds a byte or character count.

There is a mixture of the two, and it's easy to get confused.

Also, in places, rename vars to more closely match the field they're
extracted from. For example, start_shift is set from the min_offset field
of the check slot of the substrings array, so it makes more sense to call
it check_min_offset_c.

Also add some code comments about what the vars are for.

18 months agoUpgrade Time::Piece from vesion 1.3202 to 1.3203
Steve Hay [Wed, 13 Dec 2017 08:37:43 +0000 (08:37 +0000)] 
Upgrade Time::Piece from vesion 1.3202 to 1.3203

18 months agoinline.h: Fix wrong order of shift and mask
Karl Williamson [Wed, 13 Dec 2017 06:01:02 +0000 (23:01 -0700)] 
inline.h: Fix wrong order of shift and mask

I realized that one should mask before the shift in this macro that is
used in is_utf8_invariant_string_loc() and variant_under_utf8_count().
This would only show up on a 32-bit platform that doesn't have 64-bit
ability at all.

18 months agorevise advice about DESTROY
Zefram [Wed, 13 Dec 2017 03:50:01 +0000 (03:50 +0000)] 
revise advice about DESTROY

perlobj advised that a DESTROY method dying could clobber $@ for an
exception being thrown, which is no longer true since 5.14.  Remove that
caveat, and fix the description of what happens when a DESTROY method
dies.  Revise the related advice about localising global status variables,
including a list of all affected variables.  Fixes [perl #121761] and
[perl #122753].

18 months agoUpdate Filter::Util::Call to CPAN version 1.58
Chris 'BinGOs' Williams [Tue, 12 Dec 2017 11:39:20 +0000 (11:39 +0000)] 
Update Filter::Util::Call to CPAN version 1.58

  [DELTA]

1.58 2017-11-15 rurban
----
  * Drop 5.005 support
  * Switch from DynaLoader to XSLoader [atoomic #5]
  * Replace use vars by our. [atoomic #5]
  * Lazy load Carp only when required. [atoomic #5]
  * Minor test improvements
  * Fix v5.8 cast warnings

18 months agoUpdate B-Debug to CPAN version 1.26
Chris 'BinGOs' Williams [Tue, 12 Dec 2017 11:32:35 +0000 (11:32 +0000)] 
Update B-Debug to CPAN version 1.26

  [DELTA]

1.26 2017-12-03 rurban
  * Avoid too many -I when calling subprocess (sprout, RT#123816)

18 months agoUpdate experimental to CPAN version 0.019
Chris 'BinGOs' Williams [Tue, 12 Dec 2017 11:29:29 +0000 (11:29 +0000)] 
Update experimental to CPAN version 0.019

  [DELTA]

0.019     2017-12-03 18:40:19+01:00 Europe/Amsterdam
          - Rerelease without NYTProf files

18 months agorevise doc about returning values from threads
Zefram [Tue, 12 Dec 2017 11:54:04 +0000 (11:54 +0000)] 
revise doc about returning values from threads

Returning subs is now generally fine, as is creating threads in BEGIN
blocks et al.  Describe the problems that come from losing the identity
of returned objects.  Fixes [perl #96538].

18 months agobetter document version check aspect of "use"
Zefram [Tue, 12 Dec 2017 10:16:46 +0000 (10:16 +0000)] 
better document version check aspect of "use"

18 months agofix GvSV refcounting in sort
Zefram [Tue, 12 Dec 2017 09:47:41 +0000 (09:47 +0000)] 
fix GvSV refcounting in sort

Where a sort operation passes the comparands to a comparison block in $a
and $b, it wasn't taking account of the fact that the GvSV slots in *a
and *b are refcounted.  It would write the comparands into those slots
without altering any reference counts, and end by restoring the values
those slots had to start with.  This was all fine so long as nothing
else touched those slots during the process.  But code running during
the comparison is free to write to them by "*a = \1", which does frob
the reference counts.

Fix it by switching sort to manipulate GvSV in a refcount-preserving
manner, compatible with all other operations on those slots.  Fixes
[perl #92264].

18 months agoUpgrade CPAN from version 2.18-TRIAL to 2.20-TRIAL
Steve Hay [Tue, 12 Dec 2017 08:21:04 +0000 (08:21 +0000)] 
Upgrade CPAN from version 2.18-TRIAL to 2.20-TRIAL

18 months agoproperly check readpipe()'s argument list
Zefram [Tue, 12 Dec 2017 06:24:01 +0000 (06:24 +0000)] 
properly check readpipe()'s argument list

readpipe() wasn't applying context to its argument list, resulting in
readpipe()'s context leaking in, and broken stack discipline when a list
expression was used.  Fixes [perl #4574].

18 months agofix doc about filter subroutines' $_[0]
Zefram [Tue, 12 Dec 2017 03:53:33 +0000 (03:53 +0000)] 
fix doc about filter subroutines' $_[0]

Filter subroutines established by an @INC callback have always received
a numeric zero as their first argument, not a referencet to the sub
as documented.  Fixes [perl #115754].

18 months agocorrect detection of arg absence in Data::Dumper
Zefram [Tue, 12 Dec 2017 03:19:26 +0000 (03:19 +0000)] 
correct detection of arg absence in Data::Dumper

The combined getter/setter methods were mistaking a supplied undef
argument value (of a setter call) for absence of an argument (making it
a getter call).  Fixes [perl #113090].

18 months agosv.c: White-space only
Karl Williamson [Fri, 8 Dec 2017 01:47:34 +0000 (18:47 -0700)] 
sv.c: White-space only

This outdents some lines that the previous commit removed an enclosing
block of.

18 months agoutf8_upgrade_flags_grow(): Use faster variant count
Karl Williamson [Fri, 8 Dec 2017 01:42:53 +0000 (18:42 -0700)] 
utf8_upgrade_flags_grow(): Use faster variant count

Now that we have a much faster way of counting the characters that would
expand to two bytes when a string is translated into UTF-8, use that,
instead of trying to choose one of two methods.  This simplifies the
code.  Note that the faster method doesn't happen on EBCDIC platforms,
but the simplification is worth the potential loss of being able to
choose methods.

18 months agoinline.h: Change extensive comment to a link
Karl Williamson [Tue, 12 Dec 2017 02:13:45 +0000 (19:13 -0700)] 
inline.h: Change extensive comment to a link

I'm thinking the explanation of how the algorithm works  doesn't belong
in the code, so replace it by the commit number so it can be found
quickly.

18 months agoAdd variant_under_utf8_count() core function
Karl Williamson [Thu, 23 Nov 2017 05:30:16 +0000 (22:30 -0700)] 
Add variant_under_utf8_count() core function

This function takes a string that isn't encoded in UTF-8 (hence is
assumed to be in Latin1), and counts how many of the bytes therein
would change if it were to be translated into UTF-8.  Each such byte
would occupy two UTF-8 bytes.

This function is useful for calculating the expansion factor precisely
when converting to UTF-8, so as to know how much to malloc.

This function uses a non-obvious method to do the calculations
word-at-a-time, as opposed to the byte-at-a-time method used now, and
hence should be much faster than the current methods.

The performance change in short string lengths is equivocal.  Here is
the result for a single character and a 64-bit word.

          bytes    words Ratio %
        -------- -------- -------
     Ir    932.0    947.0    98.4
     Dr    325.0    325.0   100.0
     Dw    104.0    104.0   100.0
   COND    136.0    137.0    99.3
    IND     28.0     28.0   100.0

 COND_m      1.0      0.0   Inf
  IND_m      6.0      6.0   100.0

There are some extra instructions executed and an extra branch to check
for and handle the case where we can go word-by-word vs. not.  But the
one cache miss is removed.

The results are essentially the same until we get to being able to
handle a full word.  Some of the extra instructions are to ensure that
if the input is not aligned on a word boundary, that performance doesn't
suffer.

Here's the results for 8-bytes on a 64-bit system.

           bytes    words Ratio %
        -------- -------- -------
     Ir    974.0    955.0   102.0
     Dr    332.0    325.0   102.2
     Dw    104.0    104.0   100.0
   COND    143.0    138.0   103.6
    IND     28.0     28.0   100.0

 COND_m      1.0      0.0     Inf
  IND_m      6.0      6.0   100.0

Things keep improving as the strings get longer.  Here's for 24 bytes.

           bytes    words Ratio %
        -------- -------- -------
     Ir   1070.0    975.0   109.7
     Dr    348.0    327.0   106.4
     Dw    104.0    104.0   100.0
   COND    159.0    140.0   113.6
    IND     28.0     28.0   100.0

 COND_m      2.0      0.0     Inf
  IND_m      6.0      6.0   100.0

And 96:

           bytes    words Ratio %
        -------- -------- -------
     Ir   1502.0   1065.0   141.0
     Dr    420.0    336.0   125.0
     Dw    104.0    104.0   100.0
   COND    231.0    149.0   155.0
    IND     28.0     28.0   100.0

 COND_m      2.0      1.0   200.0
  IND_m      6.0      6.0   100.0

And 10,000

           bytes    words Ratio %
        -------- -------- -------
     Ir  60926.0  13445.0   453.1
     Dr  10324.0   1574.0   655.9
     Dw    104.0    104.0   100.0
   COND  10135.0   1387.0   730.7
    IND     28.0     28.0   100.0

 COND_m      2.0      1.0   200.0
  IND_m      6.0      6.0   100.0

I found this trick on the internet many years ago, but I can't seem to
find it again to give them credit.

18 months agois_utf8_invariant_string(): small speed optimization
Karl Williamson [Tue, 12 Dec 2017 01:17:29 +0000 (18:17 -0700)] 
is_utf8_invariant_string(): small speed optimization

This adds a few shifing, masking, and integer arithmetic operations to a
conditional which in return makes sure that one branch is taken only
when it is going to do some good, avoiding a conditional in it.

18 months agoAPItest/t/handy_base.pl: Avoid uninitialized warning
Karl Williamson [Tue, 12 Dec 2017 01:26:52 +0000 (18:26 -0700)] 
APItest/t/handy_base.pl: Avoid uninitialized warning

This .pl in /t is generally called from a test file in that directory,
but if run by hand, this commit makes sure things are properly
initialized