This is a live mirror of the Perl 5 development currently hosted at
10 years agotoke.c: Under -DT, report pending idents more clearly
Father Chrysostomos [Sat, 1 Jun 2013 01:27:19 +0000 (18:27 -0700)]
toke.c: Under -DT, report pending idents more clearly

These are treated as forced tokens of type 'p'.  Indicate what the 'p'
means in the debug output.


### forced token:
### <== 'p'

becomes this:

### forced token:
### <== 'p' (pending identifier)

10 years agoFix ExtUtils::Constant test failure on VMS.
Craig A. Berry [Sat, 1 Jun 2013 01:26:11 +0000 (20:26 -0500)]
Fix ExtUtils::Constant test failure on VMS.

Awaiting upstream application for many months now at:

But it's not at all clear that this module is even maintained as
the only two "maintainers" are former pumpkings who probably had
to become maintainers in order to cut a Perl release.

From the message originally submitted upstream:

It turns out the easiest and most robust way to handle the fact that
filename case may or may not be preserved is simply to do all
filename comparisons in a case blind fashion.  This is safe to do
because there is no practical possibility of distinct filenames that
differ only by case, especially with the short list of well-known
files being considered here.

10 years agoupdate link for DTrace user guide
Ricardo Signes [Fri, 31 May 2013 22:15:57 +0000 (18:15 -0400)]
update link for DTrace user guide

10 years agoUpdate the GSMATCH handling in vms/
Craig A. Berry [Fri, 31 May 2013 21:23:24 +0000 (16:23 -0500)]
Update the GSMATCH handling in vms/

This code (which only runs if you have set PERLSHR_USE_GSMATCH in
the environment) has not been updated in a long time.  It was
assuming that $] had only five digits after the decimal, whereas
it's had six for some time. And it assumed that the Perl5 version
could be represented in 4 bits, which was true up through 5.15
but isn't true anymore.

So get all the digits of the version number, and go wild and spend
5 bits on the value of $Config{PERL_VERSION}, which will get us
through 5.31.  That only leaves three bits in which to encode all
the options that could break binary compatibility, whereas in fact
we need about thirty bits.

So clearly this only works in a situation where the configuration
can be standardized and/or different configurations are packaged

10 years agoiperlipc: s/multithreading/multitasking/
Shlomi Fish [Fri, 31 May 2013 13:48:04 +0000 (14:48 +0100)]
iperlipc: s/multithreading/multitasking/

Replace some occurrences of "multithreading" in perlipc.pod
where they actually refer to multi-processing, with "multitasking".

10 years agocorrect example for turning of experimental warnings
Ricardo Signes [Fri, 31 May 2013 00:05:37 +0000 (20:05 -0400)]
correct example for turning of experimental warnings

Original patch from Thomas Klausner <>, tweaked with a
suggestion by Karen Etheridge <>.

10 years agoUpdate Text-Tabs to CPAN version 2013.0523
Chris 'BinGOs' Williams [Thu, 30 May 2013 16:16:14 +0000 (17:16 +0100)]
Update Text-Tabs to CPAN version 2013.0523


  = 2013/05/23

  Change module 'NAME'

  = 2013/05/22


  = 2013/04/26

  Minor test suite fixes - bug 81698.

  Fixed bug 79766 -- an extraneous "=" in a regex.

  Changed the license to qualify as an "open source" license.

10 years agoCPAN-Meta bugfix exposed an assumption in EUMM tests, fix that.
Chris 'BinGOs' Williams [Thu, 30 May 2013 16:46:22 +0000 (17:46 +0100)]
CPAN-Meta bugfix exposed an assumption in EUMM tests, fix that.

10 years agoCPAN-Meta has changed so regenerate the META.* files
Chris 'BinGOs' Williams [Thu, 30 May 2013 16:32:26 +0000 (17:32 +0100)]
CPAN-Meta has changed so regenerate the META.* files

10 years agoUpdate CPAN-Meta to CPAN version 2.131490
Chris 'BinGOs' Williams [Thu, 30 May 2013 15:43:05 +0000 (16:43 +0100)]
Update CPAN-Meta to CPAN version 2.131490


  2.131490  2013-05-29 14:15:16 America/New_York


  - Downconversion of custom resources was not dropping the leading "x_".
    Now "x_MailingList" will downconvert correctly to "MailingList".


  - Per the Lancaster Consensus, the 'file' subkey of a package listed in
    'provides' must refer to an actual file in the distribution, either the
    .pm file that provides the package or another file (*.PL) that
    generates it

10 years agogit-deltatool: show files changed when tagging new commits
David Golden [Wed, 29 May 2013 20:40:53 +0000 (16:40 -0400)]
git-deltatool: show files changed when tagging new commits

10 years agogit-deltatool: fix problem reading changed commit message
David Golden [Wed, 29 May 2013 19:50:55 +0000 (15:50 -0400)]
git-deltatool: fix problem reading changed commit message

10 years agoCache HvFILL() for larger hashes, and update on insertion/deletion.
Nicholas Clark [Mon, 11 Mar 2013 11:42:32 +0000 (11:42 +0000)]
Cache HvFILL() for larger hashes, and update on insertion/deletion.

This avoids HvFILL() being O(n) for large n on large hashes, but also avoids
storing the value of HvFILL() in smaller hashes (ie a memory overhead on
every single object built using a hash.)

10 years agoUpgrade to threads 1.87
Jerry D. Hedden [Tue, 28 May 2013 15:20:56 +0000 (11:20 -0400)]
Upgrade to threads 1.87

10 years ago[perl #117081] Deparse foreach my $lexical correctly under -p
Father Chrysostomos [Tue, 28 May 2013 16:52:22 +0000 (09:52 -0700)]
[perl #117081] Deparse foreach my $lexical correctly under -p

The lexical topic in foreach is not allowed to have parentheses around
it, but B::Deparse was putting parentheses there when the -p option
was specified.

10 years agoperlthrtut: Shorten/rewrap long lines
Father Chrysostomos [Tue, 28 May 2013 01:18:20 +0000 (18:18 -0700)]
perlthrtut: Shorten/rewrap long lines

10 years agoremove the expectation of a "P" command
Ricardo Signes [Tue, 28 May 2013 13:01:21 +0000 (09:01 -0400)]
remove the expectation of a "P" command

This command was introduced for the ill-fated assertions system,
then *mostly* removed by commit 584420f022.

Reported as [perl #118191] and [perl #118185]

10 years agoMerge in various enhancements to and
Nicholas Clark [Tue, 28 May 2013 07:19:34 +0000 (09:19 +0200)]
Merge in various enhancements to and

10 years agoAdd -q to git clean in
Nicholas Clark [Mon, 27 May 2013 15:19:43 +0000 (17:19 +0200)]
Add -q to git clean in

This makes the output considerably less verbose. In particular, it becomes a
lot easier to spot the "revisions left to test after this" status message
from git bisect.

10 years agoThree Configure fixups so that can build 1997-era 5.004
Nicholas Clark [Tue, 26 Feb 2013 19:52:56 +0000 (20:52 +0100)]
Three Configure fixups so that can build 1997-era 5.004

Specifically, so that it can build revisions near 15f0808c5d67b362.

10 years should match patches with directory 'b' before 'a'.
Nicholas Clark [Tue, 26 Feb 2013 19:50:46 +0000 (20:50 +0100)] should match patches with directory 'b' before 'a'.

The pattern to extract the file for diagnostics should a patch not apply was
failing to match (and generating a legitimate used of uninitialized value
warning) for the case where the patch was specified as --- b/ +++ a/
The pattern was only expecting --- a/ +++ b/

10 years agoAdd a 'none' target to
Nicholas Clark [Wed, 1 Aug 2012 11:55:58 +0000 (13:55 +0200)]
Add a 'none' target to

This runs the user's test case directly against a clean checkout.
Using this gives a couple of features that a plain git bisect run can't
offer - automatic start revision detection, and test case timeouts.

10 years can now optionally timeout the user's test case.
Nicholas Clark [Tue, 31 Jul 2012 16:54:24 +0000 (18:54 +0200)] can now optionally timeout the user's test case.

This permits bisection to locate the cause (or cure) of bugs which cause
programs to hang. When using a timeout, defaults to
running the test case in its own process group, and tries hard to ensure
that all processes in that process group are killed if the timeout fires.

10 years agoAdd an option to to run the user testcase in its own process group.
Nicholas Clark [Tue, 31 Jul 2012 14:05:58 +0000 (16:05 +0200)]
Add an option to to run the user testcase in its own process group.

10 years agoIn, run_report_and_exit() now uses run_with_options().
Nicholas Clark [Tue, 31 Jul 2012 13:17:48 +0000 (15:17 +0200)]
In, run_report_and_exit() now uses run_with_options().

10 years agoIn, extract the Configure running into run_with_options().
Nicholas Clark [Tue, 31 Jul 2012 13:06:33 +0000 (15:06 +0200)]
In, extract the Configure running into run_with_options().

Configure is run using explicit fork, exec and waitpid so that it can be run
with with STDIN from /dev/null, but without going through the shell (to
avoid having to worry about quoting command line arguments). This code will
be useful for adding optional timeouts when running the user test case.

10 years agoIn, invert the first parameter to report_and_exit().
Nicholas Clark [Tue, 31 Jul 2012 12:28:46 +0000 (14:28 +0200)]
In, invert the first parameter to report_and_exit().

A true first parameter now means "good". Previously the first parameter was
assumed to be a return value from system, and hence true meant "bad".

10 years agoIn, refactor the calls to system @ARGV into a function.
Nicholas Clark [Tue, 31 Jul 2012 10:59:42 +0000 (12:59 +0200)]
In, refactor the calls to system @ARGV into a function.

This will permit the addition of timeouts when running the test user's case.

10 years can run in-place if the checkout is totally clean.
Nicholas Clark [Tue, 31 Jul 2012 10:40:33 +0000 (12:40 +0200)] can run in-place if the checkout is totally clean.

Copy to a tempfile, and use that with git bisect run.

10 years agoIf there is no 'blead' branch, now uses a suitable alternative.
Nicholas Clark [Fri, 6 Jul 2012 15:35:08 +0000 (17:35 +0200)]
If there is no 'blead' branch, now uses a suitable alternative.

If HEAD is more recent than the last stable release (ie the latter is
reachable from the former), HEAD is used for the bisect end, otherwise the
last stable tag is used (and that release removed from the list of potential
starts to try).

10 years agoAdd --gold option to for the revision to use for "recent" files.
Nicholas Clark [Fri, 6 Jul 2012 15:00:35 +0000 (17:00 +0200)]
Add --gold option to for the revision to use for "recent" files.

Historically when wanted to check out a known good recent
version of a file (such as makedepend.SH) it would check out the revision
from blead. However, that may not be wise as blead isn't guaranteed always to
be stable and therefore "known good". So default to using the most recent
tagged stable release.

10 years always needs to pass paths gleaned from gcc to Configure.
Nicholas Clark [Thu, 5 Jul 2012 14:00:44 +0000 (16:00 +0200)] always needs to pass paths gleaned from gcc to Configure.

Commits fdbac266ba9ef2a6 and 599ee4f7809ae508 ensure that /usr/local/lib,
/lib and /usr/lib are searched on all platforms for shared libraries, and
that multiarch library locations gleaned from gcc are searched on x86_64.
However, on other Linux architectures it fails to pass the multiarch
locations to Configure. Version (just) prior to 5.14.0 do not contain the
logic to ask gcc, so they fail to build on multiarch setups.

This commit ensures that the correct library locations are available on
all platforms.

10 years agoWhen bisecting, use `git tag -l` to get the list of stable releases.
Nicholas Clark [Wed, 4 Jul 2012 13:34:31 +0000 (14:34 +0100)]
When bisecting, use `git tag -l` to get the list of stable releases.

Previously was using a hard coded list, which (obviously) will
become stale.

Also, note in the docs that we only use .0 stable releases, and why.

10 years needs to probe DB_File.xs before running Configure
Nicholas Clark [Wed, 4 Jul 2012 12:52:19 +0000 (13:52 +0100)] needs to probe DB_File.xs before running Configure

Commit f2f0a0ff7250e0ba (in Nov 2011), consolidated all the code that
patches extensions. As a side effect, it moved all extension patching
after Configure is run. Unfortunately this introduced a bug, because one
test of DB_File.xs was to change the arguments to Configure to skip building
DB_File at all if it's too old. Return this logic to before when Configure
is run, so that can once again build 5.005 and earlier on
machines with the Berkley DB headers installed, by forcibly skipping the
build of DB_File there.

10 years needs another minor fixup to build 5.004_05 on Linux.
Nicholas Clark [Thu, 10 May 2012 15:47:11 +0000 (17:47 +0200)] needs another minor fixup to build 5.004_05 on Linux. already reverts a sequence of commits to doio.c related to
special case handling of union semun on Linux and Solaris, which cause the
build to fail on current Linux. The last of these, 9b599b2a63d2324d is
described as "[win32] merge change#887 from maintbranch". However, it uses
__sun__ and __svr4__ instead of the __sun and __SVR4 of the maint branch
commit 6cdf74fe31f049dc. Hence the code in needs to be
taught about this variation in the maint-5.004 branch, so that it can also
unwind the problematic code in doio.c there.

10 years should fix 5.7.x to export Perl_cxinc on AIX.
Nicholas Clark [Thu, 3 May 2012 12:43:11 +0000 (14:43 +0200)] should fix 5.7.x to export Perl_cxinc on AIX.

Without this, about 60 commits in a key area of history fail to build,
between the upgrade of Scalar-List-Utils to 1.03, and the commit that
amends to export Perl_cxinc, which Utils.xs indirectly started
using (via a macro).

10 years should fix a typo in the Solaris hints file.
Nicholas Clark [Wed, 2 May 2012 09:26:15 +0000 (11:26 +0200)] should fix a typo in the Solaris hints file.

Without this typo fix about 700 revisions from 5.13.10 to 5.14.0-RC1 can't
be built on Solaris with Sun's compiler.

10 years agoTweak to make it clearer what to do if your working space is dirty
Yves Orton [Mon, 16 Apr 2012 18:23:32 +0000 (20:23 +0200)]
Tweak to make it clearer what to do if your working space is dirty

If you try to biect in a directory with .gitignore'd files in it
bisect will refuse to run. Since these files arent shown by status
this can cause some head scratching.

This patch makes it more obvious what is wrong by showing the listed
files and suggesting git clean as a solution. I deliberately did not
document the command to clean up untracked files, so people wouldn't
knee jerk paste it somewhere and lose something important. And by people
I mean me. :-) Thus it just shows the command to wipe ignored files,
which I figure is safe.

10 years agoAdd a --valgrind option to, to run the test program with valgrind.
Nicholas Clark [Fri, 13 Apr 2012 14:49:24 +0000 (16:49 +0200)]
Add a --valgrind option to, to run the test program with valgrind.

Specifically this option prepends valgrind --error-exitcode=124
to the command line, so that git bisect run will treat this revision as a
failure if valgrind finds any problems.

10 years will now invoke with ./perl -Ilib if it sees a #!./perl line
Nicholas Clark [Fri, 13 Apr 2012 14:00:49 +0000 (16:00 +0200)] will now invoke with ./perl -Ilib if it sees a #!./perl line

If the first argument of the test case given to is a readable
file with a #! line of ./perl or ./miniperl (only), with
prepend ./perl -Ilib or ./miniperl -Ilib to the command sent to system.
This increases flexibility somewhat, and will avoid problems with
inconsistencies between directly running system(...), and running
system('valgrind', ...). The former accepts a #!./perl line, the latter sends
it to /bin/sh.

10 years should fix Makefile.SH to remove remove GNU make-isms.
Nicholas Clark [Thu, 12 Apr 2012 19:50:11 +0000 (21:50 +0200)] should fix Makefile.SH to remove remove GNU make-isms.

Commit c7b956bbbaff0c46 inadvertently added a GNU (and BSD) make specific
construction to the *nix Makefile, which other platforms' makes choke on.
It was corrected with commit cfe76a0a8e5b6f21 (and 0961731461727bea), but
those changes are not the simplest way to get things passing again, so use
a simpler custom patch here.

10 years agoAdd --early-fixup and --late-fixup to, for user-controlled patching.
Nicholas Clark [Mon, 9 Apr 2012 13:14:32 +0000 (15:14 +0200)]
Add --early-fixup and --late-fixup to, for user-controlled patching.

These provide a way to run code or to conditionally or unconditionally
apply patches for each revision tested during git bisect. This is very
useful when for the commit range, operating system and configuration options
tested, the behaviour otherwise would be to fail to build for a wide range
of revisions, and hence the bisect would finish without finding culprit
commit due to getting bogged down in 'skipped' revisions.

10 years agoAdd --all-fixups to, to apply all patches and fixups.
Nicholas Clark [Mon, 9 Apr 2012 09:04:37 +0000 (11:04 +0200)]
Add --all-fixups to, to apply all patches and fixups. will minimally patch various files on a platform and
version dependent basis to get the build to complete. Normally it defers
doing this as long as possible - .SH files aren't patched until after
Configure is run, and C and XS code isn't patched until after miniperl is
built. If --all-fixups is specified, all the fixups are done before running

10 years should always exit fatally with 255, to abort the bisect.
Nicholas Clark [Mon, 9 Apr 2012 08:18:34 +0000 (10:18 +0200)] should always exit fatally with 255, to abort the bisect.

Don't use die or croak, as these will exit with the value of $! or $? instead
of 255, and git bisect doesn't treat these as fatal errors, but ploughs on
before inevitably failing messily for some other reason, concealing the true
error message.

10 years agoIn, refactor the system ... and die; into system_or_die().
Nicholas Clark [Mon, 9 Apr 2012 09:31:25 +0000 (11:31 +0200)]
In, refactor the system ... and die; into system_or_die().

10 years agoWhen testing the end version, should treat a 'skip' as fatal.
Nicholas Clark [Mon, 9 Apr 2012 07:25:09 +0000 (09:25 +0200)]
When testing the end version, should treat a 'skip' as fatal.

git bisect uses exit code 125 to signal a skip. Previously would
treat 125 just like every other non-zero exit code, assume that it meant
'fail', and if 'fail' was expected for the end version then it would start
the bisect run as normal. Which isn't useful, as it means that there's a
problem with the user's test case.

10 years should search for lib*.a as well as lib*.so
Nicholas Clark [Mon, 9 Apr 2012 07:14:21 +0000 (09:14 +0200)] should search for lib*.a as well as lib*.so

When forcing the library list on earlier perls to avoid versioned shared
objects, also look for static libraries. Also, ensure
searches additional library paths given to it via -Alibpth

Without this, one can't test build against static libraries in non-standard

10 years should use ".$Config{dlext}" instead of hard-coding ".so".
Nicholas Clark [Mon, 9 Apr 2012 06:38:08 +0000 (08:38 +0200)] should use ".$Config{dlext}" instead of hard-coding ".so".

10 years agoTeach that on HP-UX, _filbuf() is named __filbuf().
Nicholas Clark [Mon, 9 Apr 2012 06:05:16 +0000 (08:05 +0200)]
Teach that on HP-UX, _filbuf() is named __filbuf().

This is all that is needed to build 5.003 and earlier. can validate
all stable versions from blead back to 5.002

10 years needs to know how to identify HP-UX's patch.
Nicholas Clark [Mon, 9 Apr 2012 06:02:38 +0000 (08:02 +0200)] needs to know how to identify HP-UX's patch.

Unlike AIX, HP-UX patch offers no meaningful clue as to its upstream version:

$ patch -v
$Header: patch.c,v 2001/12/03 12:24:52 abhinav Exp $
Patch level: 0

But it ignores unified diffs, so assume the worst and feed it context diffs.

10 years agoOn HP-UX, bisect without any -j option as the system make is "special".
Nicholas Clark [Tue, 10 Apr 2012 13:18:03 +0000 (15:18 +0200)]
On HP-UX, bisect without any -j option as the system make is "special".

HP-UX system make offers parallelism with -P not -j. (But doesn't deliver on
it, so we're not going to attempt to work round its crankiness and failings.)

10 years agoIn bisect{,-runner}.pl, refactor the code for CPU probing and make jobs.
Nicholas Clark [Tue, 10 Apr 2012 08:37:41 +0000 (10:37 +0200)]
In bisect{,-runner}.pl, refactor the code for CPU probing and make jobs.

Move the code that attempts various ways to probe for the number of CPUs
from to Skip the probe entirely if a -j (--jobs)
options is passed to For --jobs=0 (or -j0) entirely skip adding
-j to the make command line. (For heretical versions of make which don't use
-j for parallelism).

Previously the probe code always ran for each call to,
which is completely redundant if is being called for
argument validation or help text, and inefficient even when building, as the
number of CPUs rarely changes during a bisect run. Additionally there was no
way to avoid a -j in the make command line, which isn't going to fly on
systems where the make utility doesn't have a -j option.

10 years agodiag.t, perldiag.pod: Make sure S is used for Perl_warn
Father Chrysostomos [Tue, 28 May 2013 01:02:21 +0000 (18:02 -0700)]
diag.t, perldiag.pod: Make sure S is used for Perl_warn

Perl_warn does not allow a category, and is not used in conjunction
with ckWARN checks (if it is, that is a bug, as such warnings will
be emitted when the category is enabled, but not fatal when the
category is fatal).  So such warnings are mandatory and should be
marked with S.

10 years ago[perl #117947] Verify lvalueness of XSUBs at run time
Father Chrysostomos [Tue, 28 May 2013 00:45:50 +0000 (17:45 -0700)]
[perl #117947] Verify lvalueness of XSUBs at run time

If the sub is not visible at compile time, the op tree is flagged such
that pp_entersub will know whether to check the lvalueness of the
called sub.

That check has been in pp_entersub since da1dff9483c.  When I moved
it to pp_entersub in that commit, I only added it to the pure-Perl
branch, not to the XS branch, allowing all XSUBs to be treated as
lvalues if they are not visible at compile time.

10 years agoUpdate IO-Compress to CPAN version 2.061
Chris 'BinGOs' Williams [Mon, 27 May 2013 21:57:18 +0000 (22:57 +0100)]
Update IO-Compress to CPAN version 2.061


  2.061 19 May 2013

      * zipdetails (1.06)
        Get it to cope with Android 'zipalign' non-standard extra fields.
        These are used to make sure that a non-compressed member starts on
        a 4 byte boundary.

      * RT#84647: unzip example with IO::Uncompress::Unzip

10 years agoUpdate Compress-Raw-Zlib to CPAN version 2.061
Chris 'BinGOs' Williams [Mon, 27 May 2013 21:53:30 +0000 (22:53 +0100)]
Update Compress-Raw-Zlib to CPAN version 2.061


  2.061 19 May 2013

      * Include zlib 1.2.8 source.

      * typo fix

      * silence compiler warning by making 2nd parameter to
        DispStream a const char*

10 years agoUpdate Compress-Raw-Bzip2 to CPAN version 2.061
Chris 'BinGOs' Williams [Mon, 27 May 2013 21:50:46 +0000 (22:50 +0100)]
Update Compress-Raw-Bzip2 to CPAN version 2.061


  2.061 19 May 2013

      * silence compiler warning by making 2nd parameter to
        DispStream a const char*

10 years agopat_advanced.t: fix two tests
Father Chrysostomos [Mon, 27 May 2013 15:44:34 +0000 (08:44 -0700)]
pat_advanced.t: fix two tests

If two pieces of code are executed to see if they produce exactly the
same warning, the scalar holding the warning needs to be cleared in
between, otherwise the second test is useless if the first one passes
and the second piece of code doesn’t warn.

10 years agoOn Linux LC_ALL overrides LC_MESSAGES, so tweak perl5db.t accordingly.
Nicholas Clark [Mon, 27 May 2013 12:53:30 +0000 (14:53 +0200)]
On Linux LC_ALL overrides LC_MESSAGES, so tweak perl5db.t accordingly.

Without this, the test fails when LC_ALL is set to a non-English locale for
which man has been localised.

10 years agotypo fixes for Math-BigInt
David Steinbrunner [Sun, 26 May 2013 12:11:31 +0000 (08:11 -0400)]
typo fixes for Math-BigInt

10 years agoman perlrules doesn't always output "No manual entry for perlrules"
Tony Cook [Mon, 27 May 2013 10:15:21 +0000 (20:15 +1000)]
man perlrules doesn't always output "No manual entry for perlrules"

especially when the locale is non-English.

Hopefully all Linux dists are producing the same message, and force the
language to "C" so we get English messages.

10 years agoRemove DG/UX support.
Nicholas Clark [Fri, 24 May 2013 10:20:02 +0000 (12:20 +0200)]
Remove DG/UX support.

DG/UX was a Unix sold by Data General. The last release was in April 2001.
It only runs on Data General's own hardware.

10 years agoPerl_hv_fill() can return early if the hash only has 0 or 1 keys.
Nicholas Clark [Mon, 11 Mar 2013 11:18:11 +0000 (11:18 +0000)]
Perl_hv_fill() can return early if the hash only has 0 or 1 keys.

No keys implies no chains used, so the return value is 0. One key
unambiguously means 1 chain used, and all the others are free. Two or more
keys might share the same chain, or might not, so the calculation can't be

10 years agoTests for hashes in scalar context (and hence HvFILL()).
Nicholas Clark [Mon, 11 Mar 2013 10:32:12 +0000 (10:32 +0000)]
Tests for hashes in scalar context (and hence HvFILL()).

10 years agoperldiag: reflow another entry for nice splain output
Father Chrysostomos [Mon, 27 May 2013 07:49:03 +0000 (00:49 -0700)]
perldiag: reflow another entry for nice splain output

10 years agoMake \N{ } deprecation warnings fatalizable
Father Chrysostomos [Mon, 27 May 2013 07:17:09 +0000 (00:17 -0700)]
Make \N{  } deprecation warnings fatalizable

What drew my attention to this was the missing category in
perldiag.pod.  I tried adding it, but diag.t complained that it should
be absent.

It thinks it should be absent, because Perl_warn (when used correctly)
does not put the warning in any category, and does not allow it to be
suppressed except via $SIG{__WARN__}.

Use of if(ckWARN) followed by Perl_warn is not correct.  ckWARN checks
to see whether the category is enabled, and then Perl_warn warns with-
out reference to the category at all, so whether it is fatal cannot
be looked up.

The result is that these warnings do not die under ‘use warnings
FATAL => 'deprecated'’.

10 years agoTurn \N{ } deprecation warnings on by default
Father Chrysostomos [Mon, 27 May 2013 07:10:57 +0000 (00:10 -0700)]
Turn \N{  } deprecation warnings on by default

All deprecation warnings are supposed to be on by default, but
these two were not.

10 years agoMake ‘Escape literal pattern white space’ a default warning
Father Chrysostomos [Mon, 27 May 2013 06:53:40 +0000 (23:53 -0700)]
Make ‘Escape literal pattern white space’ a default warning

All deprecated warnings are supposed to be default warnings.

10 years agoperldiag: mark two deprecated entries with D
Father Chrysostomos [Mon, 27 May 2013 06:52:56 +0000 (23:52 -0700)]
perldiag: mark two deprecated entries with D

10 years agoperldiag: wrap an entry for better splain output
Father Chrysostomos [Mon, 27 May 2013 06:50:25 +0000 (23:50 -0700)]
perldiag: wrap an entry for better splain output

10 years ago[perl #64126] ./Configure -de -Dusevendorprefix didn't default
H.Merijn Brand [Mon, 27 May 2013 07:42:58 +0000 (09:42 +0200)]
[perl #64126] ./Configure -de -Dusevendorprefix didn't default

10 years agoperldiag: more alphabetisation
Father Chrysostomos [Mon, 27 May 2013 06:17:29 +0000 (23:17 -0700)]
perldiag: more alphabetisation

10 years agodo not wrap long non-verbatim lines in perldiag.pod
Ricardo Signes [Sun, 26 May 2013 23:16:37 +0000 (19:16 -0400)]
do not wrap long non-verbatim lines in perldiag.pod

This is an unfortunate situation. gets its
explanation of an error or warning from perldiag.pod and (basically)
strips out Pod formatting sequences.  That means that if a line is
long because of a Pod sequence, it may be the "right" length for an
80 column terminal with the Pod stripped, even though the source
document will be "too long."  There isn't much of a presentation
layer here, because will not attempt to reflow text.

Adding such a layer may be better later, and the benefit to this
reversion is low, but the benefit of the commit itself was also low.
(In fact, this change may have had no value: the long lines about
which our Pod checker complains are in verbatim paragraphs, and this
line is not a verbatim paragraph.)

This regression was reported by Father Chrysostomos:

After 1dcc3c19f1c0:

  $ ./perl -Ilib -Mdiagnostics -e 'warn "Lexing code attempted to stuff non-Latin-1 character into Latin-1 input"'
  Lexing code attempted to stuff non-Latin-1 character into Latin-1 input at -e
    line 1 (#1)
      (F) An extension is attempting to insert text into the current parse (using
      lex_stuff_pvn or similar), but tried to insert a
      character that couldn't be part of the current input.  This is an inherent
      pitfall of the stuffing mechanism, and one of the reasons to avoid it.  Where
      it is necessary to stuff, stuffing only plain ASCII is recommended.

Note the awkward line break.

This commit reverts a change made in 1dcc3c19f1c0.

10 years agoperldiag: miscellaneous clean-up
Father Chrysostomos [Mon, 27 May 2013 02:12:50 +0000 (19:12 -0700)]
perldiag: miscellaneous clean-up

•‘Corrupted regexp opcode’ is a ‘can’t happen’ error, so it belongs
  in the P category.
• Two spaces after dots for consistency
• Rewrap for slightly better splain output
• The description usually begins on the same line as the category, so
  do so consistently
• Reorder alphabetically
• Missing category
• Single, not double, backslash
• Squash two adjacent (due to reordering) entries with identical
• ‘given’ does not depend on lexical $_ any more
• Remove duplicate entries (and placate diag.t with diag_listed_as)

10 years agoIncrease $Net::Ping::VERSION to 2.42
Father Chrysostomos [Mon, 27 May 2013 02:08:46 +0000 (19:08 -0700)]
Increase $Net::Ping::VERSION to 2.42

10 years agoregen pod issues
Father Chrysostomos [Sun, 26 May 2013 21:40:39 +0000 (14:40 -0700)]
regen pod issues

10 years agoPOSIX.pod: wrap/shorten long lines
Father Chrysostomos [Sun, 26 May 2013 21:12:25 +0000 (14:12 -0700)]
POSIX.pod: wrap/shorten long lines

10 years agoNet::Ping: wrap long pod lines
Father Chrysostomos [Sun, 26 May 2013 18:31:27 +0000 (11:31 -0700)]
Net::Ping: wrap long pod lines

10 years agoperl -V displayed PERL_NEW_COPY_ON_WRITE twice
David Mitchell [Wed, 22 May 2013 16:13:53 +0000 (17:13 +0100)]
perl -V displayed PERL_NEW_COPY_ON_WRITE twice

I didn't realise that the perl -V list of defines is now split between
perl.h and perl.c and so added it to one (thinking it was missing) when it
was already in the other).

10 years agore-enable Copy-on-Write by default.
David Mitchell [Wed, 22 May 2013 15:38:29 +0000 (16:38 +0100)]
re-enable Copy-on-Write by default.

COW was first introduced (and enabled by default) in 5.17.7.
It was disabled by default in 5.17.10, because it was though to have too
many rough edges for the 5.18.0 release.

By re-enabling it now, early in the 5.19.x release cycle, hopefully it
will be ready for production use by 5.20.

This commit mainly reverts 9f351b45f4 and e1fd41328c (with modifications),
then updates perldelta.

10 years agotypo fixes for Unicode UCD
David Steinbrunner [Sun, 26 May 2013 12:09:06 +0000 (08:09 -0400)]
typo fixes for Unicode UCD

10 years agoUpdate Sys-Syslog to CPAN version 0.33
Chris 'BinGOs' Williams [Sun, 26 May 2013 13:52:24 +0000 (14:52 +0100)]
Update Sys-Syslog to CPAN version 0.33


  0.33 -- 2013.05.24 -- Sebastien Aperghis-Tramoni (SAPER)
        [BUGFIX] CPAN-RT#82531: Invalid usage of POSIX::_exit (Alexander Berger).
        [OPTIM] No longer inherit from Exporter.
        [OPTIM] Load Fcntl only when necessary.
        [DOC] Add links to other logging modules.
        [DOC] CPAN-RT#80398: Typo spotted by
        [DOC] Typo spotted by David Steinbrunner.
        [TEST] CPAN-RT#79683: Added delays in t/facilities-routing.t

10 years agoUpdate DB_File to CPAN version 1.828
Chris 'BinGOs' Williams [Sun, 26 May 2013 13:50:15 +0000 (14:50 +0100)]
Update DB_File to CPAN version 1.828


  1.828 7 May 2013

   * Minor change to build with Berkeley DB 6.x

10 years agoUpdate autodie to CPAN version 2.19
Chris 'BinGOs' Williams [Sun, 26 May 2013 12:56:17 +0000 (13:56 +0100)]
Update autodie to CPAN version 2.19


2.19      2013-05-13 10:02:15 Australia/Melbourne

        * BUGFIX: Loading a file that does not change packages while
          autodie in effect no longer causes weird behaviour when
          slurpy built-ins (like open() and unlink()) are called. GH #22
          Thanks to Niels Thykier.

        * TEST: Tests for leak guard failures for slurpy core functions.

2.18      2013-05-12 18:12:14 Australia/Melbourne

        * TEST: More testing in scope_leak.t.

        * TEST: More testing around packages in truncate.t.

        * SPEED / INTERNAL: Significant improvements in load time,
          especially when autodie is used across multiple files,
          by caching reuseable subroutines and reducing calls to eval "".
          Huge thanks to Niels Thykier, who is a hero of the
          free people, and completely and utterly awesome.
          (RT #46984)

        * DOCUMENTATION: Spelling and correction fixes,
          courtesy David Steinbrunner.

        * DEVEL: Faster and more robust testing with travis-ci.

        * DEVEL: Some simple benchmarks bundled in the benchmarks/ directory.

2.17      2013-04-29 01:03:50 Australia/Melbourne

        * DOCS: Spelling fixes thanks to dsteinbrunner! (RT #84897)

        * DOCS: Fixed github links to point to 'pjf' rather than
          'pfenwick' (GH #18, thanks to Lx!)

        * INTERNAL: Silence warnings about experimental smart-match on
          5.17.11+ (via Brian Fraser and p5p)

        * TEST / BUILD: Generate .travis.yml files for CI testing via

2.16      2013-02-23 01:49:16 Australia/Melbourne

        * BUGFIX: Fix breakages under 5.8.x related to the new
          autodie::skip feature.

        * BUILD / BUGFIX: Remove dependency on

2.15      2013-02-22 23:55:22 Australia/Melbourne

        * BUILD / BUGFIX: Correct meta-info that wanted at least Perl
          v5.8.40, rather than v5.8.4.  Giant thanks to Paul Howarth
          for spotting this!

2.14      2013-02-22 15:43:33 Australia/Melbourne

        * FEATURE: Classes which claim they ->DOES('autodie::skip') are now
          skipped when generating exceptions.  This is mainly of use to
          utility classes. See `perldoc autodie::skip` for more details.
          (GH Issue #15)

        * FEATURE / BUGFIX / INCOMPAT: 'chmod' is now in the ':filesys'
          category (was in ':file').

        * BUGFIX: Added support for 'chown' and 'utime', that was
          previously overlooked. Mad props to RsrchBoy for spotting this.
          These are all in the ':filesys' category.
          (GH Pull #13)

        * BUGFIX: Added support for 'kill'. This is part of the
          ':ipc' category.

        * BUGFIX: Fixed bug whereby chmod, chown, kill, unlink and
          utime would not throw an exception when they didn't
          change all their files or signal all their processes.

        * TEST: truncate.t is now skipped on systems that don't have a
          working File::Temp.

        * TEST: open.t has a few more tests for exotic modes.

        * TEST: chown() tests are skipped on Win32, as chown on Windows
          is a no-op. (Thanks to Mithaldu for spotting this!)

        * TEST: Author tests now look for the AUTHOR_TESTING env
          variable (for dzil compliance).

        * TEST: Better testing for chown, chmod, and unlink.

        * TEST: Better testing for utime.

        * TEST: kwalitee.t is now only run when $ENV{RELEASE_TESTING} is set.

        * BUGFIX: Removed executable bits from some bundled text files.

        * BUILD: We now use dzil to manage autodie.

        * BUILD: Only Perl 5.8.4 and above is supported by autodie.
          Please upgrade your Perl distro if you're using 5.8.3 or

10 years ago[perl #118159] Make PVs take precedence in SvTRUE
Father Chrysostomos [Sun, 26 May 2013 06:59:45 +0000 (23:59 -0700)]
[perl #118159] Make PVs take precedence in SvTRUE

Commit 4bac9ae4 (probably inadvertently) changed SvTRUE to treat an SV
with any of PVX, IVX or NVX having a true value as true.

Traditionally, truth was based solely on stringification. The examina-
tion of the SvIVX and SvNVX slots was for those cases where there was
no string already and it could be deduced from IVX or NVX whether it
would stringify as "0" or no (bugs with -0 aside).

This changes things back to the way they have ‘always’ been.

10 years agoperldiag: Re-correct spelling of copiable
Father Chrysostomos [Sun, 26 May 2013 02:05:11 +0000 (19:05 -0700)]
perldiag: Re-correct spelling of copiable

Sorry, but ‘copyable’ is not a word in English.  It is spelt with an
I, not a Y.  I have already corrected this before, but 50a39ba4 just
‘corrected’ it.

10 years agoUse SvREFCNT_dec_NN in one place in mro.c
Father Chrysostomos [Sun, 23 Dec 2012 07:31:02 +0000 (23:31 -0800)]
Use SvREFCNT_dec_NN in one place in mro.c

10 years agomg.c: Use SvREFCNT_dec_NN
Father Chrysostomos [Sun, 23 Dec 2012 07:24:13 +0000 (23:24 -0800)]
mg.c: Use SvREFCNT_dec_NN

Using SvREFCNT_dec_NN in a couple of places eliminates needless
null checks.

10 years agotypo fix for obj pod
David Steinbrunner [Tue, 21 May 2013 11:28:36 +0000 (07:28 -0400)]
typo fix for obj pod

10 years agomake corelist switches always case sensitive
Ricardo Signes [Sun, 26 May 2013 01:17:53 +0000 (21:17 -0400)]
make corelist switches always case sensitive

10 years agoBump Tie::File's test suite's version to match modules.
James E Keenan [Sat, 25 May 2013 14:46:53 +0000 (16:46 +0200)]
Bump Tie::File's test suite's version to match modules.

10 years agotypo fix for reguts pod
David Steinbrunner [Tue, 21 May 2013 11:40:05 +0000 (07:40 -0400)]
typo fix for reguts pod

10 years agotypo fix for re pod change use of optimise to be consistent with other uses of optimize
David Steinbrunner [Tue, 21 May 2013 11:38:42 +0000 (07:38 -0400)]
typo fix for re pod change use of optimise to be consistent with other uses of optimize

10 years agochanged uses of initialise to be consistent with other uses of initialize in guts pod
David Steinbrunner [Tue, 21 May 2013 11:36:05 +0000 (07:36 -0400)]
changed uses of initialise to be consistent with other uses of initialize in guts pod

10 years agotypo fixes for diag changed use of initialise to be consistent with other uses of...
David Steinbrunner [Tue, 21 May 2013 11:34:50 +0000 (07:34 -0400)]
typo fixes for diag changed use of initialise to be consistent with other uses of initialize

10 years agotypo fix for vms pod
David Steinbrunner [Tue, 21 May 2013 11:31:55 +0000 (07:31 -0400)]
typo fix for vms pod

10 years agotypo fixes for uniintro pod
David Steinbrunner [Tue, 21 May 2013 11:31:36 +0000 (07:31 -0400)]
typo fixes for uniintro pod

10 years agotypo fix for unicode pod
David Steinbrunner [Tue, 21 May 2013 11:31:12 +0000 (07:31 -0400)]
typo fix for unicode pod

10 years agotypo fix for reref pod
David Steinbrunner [Tue, 21 May 2013 11:30:50 +0000 (07:30 -0400)]
typo fix for reref pod

10 years agotypo fixes for recharclass pod
David Steinbrunner [Tue, 21 May 2013 11:29:39 +0000 (07:29 -0400)]
typo fixes for recharclass pod