This is a live mirror of the Perl 5 development currently hosted at
4 years agoperlrebackslash: Fix a couple of nits.
Karl Williamson [Wed, 21 Jun 2017 03:50:05 +0000 (21:50 -0600)]
perlrebackslash: Fix a couple of nits.

4 years agoperldelta for Unicode 10
Karl Williamson [Wed, 21 Jun 2017 03:49:43 +0000 (21:49 -0600)]
perldelta for Unicode 10

4 years ago[MERGE] test and fix up Porting/
David Mitchell [Wed, 21 Jun 2017 10:29:01 +0000 (11:29 +0100)]
[MERGE] test and fix up Porting/ didn't have  a proper test suite, and some command-line options
had suffered from bit rot. For example, --bisect no longer worked.
This branch adds such a test suite, and includes various fix ups and
improvements. In particular:

* Conceptually reorganise into input, benchmark, output:
   1) read in zero or more previous runs;
   2) possibly do another run, and aggregate results with any reads;
   3) output the aggregate of (1) and (2) in various ways. There are three
      possible outputs: save raw data for later with --write, display in
      human-readable form with --show, and alter exit value with --bisect. kind of did all that anyway, but with that model, I've made it
   allow --bisect with --show or --read for example. There's no reason
   why you can't do all three of: --write the results, --show the results,
   and alter the exit value with --bisect.
   Options like --norm, --compact etc are now conceptually sub-options of
   The pod has been re-organised to reflect this.

* add -autolabel option, which generates unique labels for those perls
  which haven't got one.

* new syntax for per-perl args and environment:
    ./perl --args=..., --env=....

* fix broken --bisect; it also now displays the field value on stdout.

* Allow 1 only perl under --raw

* better error checks

* General code cleanup

4 years agoPorting/ test --fields with 1 field
David Mitchell [Wed, 21 Jun 2017 09:41:34 +0000 (10:41 +0100)]
Porting/ test --fields with 1 field

When only one field is specified, e.g. --fields=Ir, it prints in a more
compact form. Test this format.

4 years agoPorting/ comments: s/perl_name/perl_label/
David Mitchell [Wed, 21 Jun 2017 09:27:27 +0000 (10:27 +0100)]
Porting/ comments: s/perl_name/perl_label/

The second-level hash n %results etc is now keyed by the label of the perl
executable rather than the name of the executable. So update code comments

4 years agoPorting/ fix up pod
David Mitchell [Wed, 21 Jun 2017 09:21:31 +0000 (10:21 +0100)]
Porting/ fix up pod

General tweaking and proof-reading.

I also removed the long obscure example for --grindargs, on the grounds
that it was long and obscure.

4 years agot/porting/bench.t: add tests for display options
David Mitchell [Wed, 21 Jun 2017 08:41:18 +0000 (09:41 +0100)]
t/porting/bench.t: add tests for display options

Add some tests for

They're only basic expected-output-format tests - for example it checks
that the --sort option doesn't crash and outputs in the right general
format, but doesn't verify that the results are actually sorted correctly.

4 years agoPorting/ --bisect: output field value
David Mitchell [Wed, 21 Jun 2017 07:45:10 +0000 (08:45 +0100)]
Porting/ --bisect: output field value

As well as giving an exit value indicating whether the field value
is in range, display the value on stdout.

4 years agoPorting/ tweak local vars
David Mitchell [Wed, 21 Jun 2017 07:30:45 +0000 (08:30 +0100)]
Porting/ tweak local vars

rename $perl_args to $cmd_line_args (less ambiguous), and the @putargs var
is no longer used.

4 years agoPorting/ add --autolabel option
David Mitchell [Tue, 20 Jun 2017 11:00:30 +0000 (12:00 +0100)]
Porting/ add --autolabel option

This automatically creates a unique label per perl interpreter.
For example

    Porting/ --autolabel \
        ~/bin/perl-5.20.0 ~/bin/perl-5.22.0 ~/bin/perl-5.24.0

is equivalent to

    Porting/ \
        ~/bin/perl-5.20.0=5.20.0 ~/bin/perl-5.22.0=5.22.0 \

As part of adding a test, this commit also slightly fixes up the test code
which generates a regex from an NNN.NN part of a template.

4 years agoPorting/ improve 'no such test' err msg
David Mitchell [Mon, 19 Jun 2017 14:17:23 +0000 (15:17 +0100)]
Porting/ improve 'no such test' err msg

With --tests=A,B,.. if a test isn't found, it gives an error message,
and under --vebrose lists all available tests.

Make it:

not under --verbose: suggest running under verbose to get a list;
under --verbose: list available tests one per line rather than all on one

4 years agoPorting/ trivial var changes
David Mitchell [Mon, 19 Jun 2017 13:56:31 +0000 (14:56 +0100)]
Porting/ trivial var changes

$hash->{perls} has been assigned to $read_perls, so use that var
rather than $hash. Ditto $read_results.

Also, the results/test sub-hash is indexed by label rather than perl
executable name, so rename the $perl var to $label.

4 years agoPorting/ new syntax for perl args and env
David Mitchell [Mon, 19 Jun 2017 11:47:35 +0000 (12:47 +0100)]
Porting/ new syntax for perl args and env

The existing syntax for supplying per-perl-executable command-line
arguments and environment was clunky and buggy.

Replace it with the following syntax and add tests:

One of more perls to execute is listed on the command line after all
switches have been processed. Each perl is of the form:

    some-perl [--args='-Mstrict -Mwarnings' ] \
              [ --env='A=a' --env='B=b' .... ]

i.e. the name of a perl executable, optionally succeeded by --args and
--env switches.

E.g. the above invokes

    'some-perl -Mstrict -Mwarnings'

with the A and B environment variables set.


4 years agoPorting/ ban duplicate labels in multiread
David Mitchell [Mon, 19 Jun 2017 08:38:35 +0000 (09:38 +0100)]
Porting/ ban duplicate labels in multiread

With multiple --read options, die if the same label appears twice.

A duplicate between a --read file and on the command line was already
checked for, but not from two reads.

Also, improve the error messages.

Finally, regenerate the callsub2.json  test file using a './perl2' label
this time, so that both callsub.json and callsub2.json can still be read
without error.

4 years ago t/porting/bench.t: bisect vis --read
David Mitchell [Sun, 18 Jun 2017 20:42:42 +0000 (21:42 +0100)]
 t/porting/bench.t: bisect vis --read

Rather than running a real benchmark for the --bisect test (slow), test it
via a previous run (faster). Can do this now that --bisect supports

4 years agoPorting/ ban --benchfile under --read
David Mitchell [Sun, 18 Jun 2017 20:37:04 +0000 (21:37 +0100)]
Porting/ ban --benchfile under --read

In the presence of one or more --reads, the tests to benchmark are
decided by what tests were previously run and the benchfile is ignored.
make it an error to specify a benchfile in this case.

4 years agoPorting/ better handle multiple --read
David Mitchell [Sat, 17 Jun 2017 20:22:54 +0000 (21:22 +0100)]
Porting/ better handle multiple --read

Fix up the code which checks and merges multiple results files:

* better error messages;

* remove redundant filter_tests() calls;

* check each --read file for internal consistency in test names;

* add tests

* fixup pod

4 years agoPorting/ only use used sort elems
David Mitchell [Sat, 17 Jun 2017 19:01:33 +0000 (20:01 +0100)]
Porting/ only use used sort elems

The @$order list of test names in sorted order: pare it down to only the
tests actually being run. This will make --write files smaller.

4 years agoPorting/ remove unneeded sort order calcs
David Mitchell [Sat, 17 Jun 2017 18:54:11 +0000 (19:54 +0100)]
Porting/ remove unneeded sort order calcs

In a couple of places when --reading from previous runs, it calculates a
default default order if one wasn't read from the file. Since the file
should always contain an 'order', this is redundant.

4 years agoPorting/ add $done_read to do_grind()
David Mitchell [Sat, 17 Jun 2017 15:19:12 +0000 (16:19 +0100)]
Porting/ add $done_read to do_grind()

It was using $loop_counts to test whether a file had previously been read.
Since $loop_counts is set merely as a side-effect of the read, it was
slightly confusing to see if ($loop_counts) { ... } when the code in
question had nothing particularly to do with loop counts.

So add an explicit boolean var.

4 years agoPorting/ add croak tests
David Mitchell [Sat, 17 Jun 2017 14:40:05 +0000 (15:40 +0100)]
Porting/ add croak tests

Add tests to t/porting/bench.t for (nearly) every possible die()
in Porting/, plus a few minor fixups to those dies.

4 years re-organise option processing
David Mitchell [Sat, 10 Jun 2017 15:45:32 +0000 (16:45 +0100)] re-organise option processing

Conceptually re-organise command-line options into categories such as
input, benchmarking, and output; and update the pod accordingly.

In particular, The flow is now seen as:

    read in zero or more old results with --read;

    combine with zero or more new results generated via benchmarking any
    perls specified on the command line;

    output the results in one or more forms.

The output part is what has conceptually changed.  Now there are
fundamentally three ways to output the results, and you can do any or all
three if you want:

    --write   - save results for later analysis;
    --bisect  - set the process exit value based on the results;
    --show    - display the results in human readable form.

Most of the remaining options, such as --norm, --raw, --compact
are then modifiers to --show.

--show is on by default apart from in the presence of --write or --bisect.

The main functional difference is with bisect; since it is now just
another output type, it can be combined with --read, --write and even

The changes to the pod are mainly mainly moving individual =items
around and adding new sections and sub-lists. The text of the individual
items hasn't been changed (that I recall).

4 years agoPorting/ fix broken --bisect option
David Mitchell [Sat, 10 Jun 2017 13:54:11 +0000 (14:54 +0100)]
Porting/ fix broken --bisect option

This option had bit-rotted: checks for the right number of perl executables
weren't taking account of --bisect.

Fix, and add tests.

4 years agoadd t/porting/bench.t
David Mitchell [Wed, 7 Jun 2017 15:47:42 +0000 (16:47 +0100)]
add t/porting/bench.t

This script tests the functionality of Porting/ - but currently
only on Linux, and only when valgrind and the .git/ dir are present.

(an earlier script of the same name has recently been renamed to

Its minimal at the moment; it will be added to as bugs in are

4 years agoPorting/ allow 1 perl under --raw
David Mitchell [Fri, 9 Jun 2017 12:34:43 +0000 (13:34 +0100)]
Porting/ allow 1 perl under --raw

If not displaying relative percentages, then there's a valid use case for
running with a single perl under test.

4 years agorename t/porting/bench.t to bench_selftest.t
David Mitchell [Wed, 7 Jun 2017 15:11:42 +0000 (16:11 +0100)]
rename t/porting/bench.t to bench_selftest.t

so that I can add another test script for which doesn't just
invoke it with --action=selftest

4 years agoPorting/ don't print usage on err
David Mitchell [Fri, 9 Jun 2017 10:57:03 +0000 (11:57 +0100)]
Porting/ don't print usage on err

If there's a error with the command-line arguments, don't print the
full usage information (which drowns out the actual error message);
instead, just print this line:

    Use the -h option for usage information.

Also, allow -h as a synonym for --help.

4 years agoUse Unicode 10.0
Karl Williamson [Tue, 20 Jun 2017 23:41:00 +0000 (17:41 -0600)]
Use Unicode 10.0

The new file from Unicode "extracted/DerivedName.txt" is not delivered
here, as Perl doesn't need it, as it duplicates information in other

4 years agoPrepare for Unicode 10.0
Karl Williamson [Tue, 20 Jun 2017 22:49:27 +0000 (16:49 -0600)]
Prepare for Unicode 10.0

This informs mktables of the new files in 10.0, and updates some
comments in other files to reflect new Unicode terminology.

4 years agolinkify Perl 5.27.1 epigraph
Eric Herman [Tue, 20 Jun 2017 22:40:22 +0000 (00:40 +0200)]
linkify Perl 5.27.1 epigraph

4 years agogive Renee his "r" bäck
Lukas Mai [Tue, 20 Jun 2017 20:44:16 +0000 (22:44 +0200)]
give Renee his "r" bäck

4 years agowrap multi-statement macros in STMT_START/STMT_END
Lukas Mai [Tue, 20 Jun 2017 19:44:29 +0000 (21:44 +0200)]
wrap multi-statement macros in STMT_START/STMT_END

With the original code you'd have to be very, very careful:

  if (foo)

would have expanded to

  if (foo)
  return 42;  /* always returns! */

4 years agocmpVersion skip Module-CoreList modules
Chris 'BinGOs' Williams [Tue, 20 Jun 2017 11:07:26 +0000 (12:07 +0100)]
cmpVersion skip Module-CoreList modules

Versioning in Module-CoreList should not be dictated
by an automated script.

4 years agoRa ra Rasputin lover of the Russian Queen
Chris 'BinGOs' Williams [Tue, 20 Jun 2017 09:12:55 +0000 (10:12 +0100)]
Ra ra Rasputin lover of the Russian Queen

4 years agoFix release date for v5.27.1
Chris 'BinGOs' Williams [Tue, 20 Jun 2017 09:11:00 +0000 (10:11 +0100)]
Fix release date for v5.27.1

4 years agonew perldelta
Eric Herman [Tue, 20 Jun 2017 07:46:26 +0000 (09:46 +0200)]
new perldelta

4 years agoepigraph for 5.27.1
Eric Herman [Tue, 20 Jun 2017 07:35:38 +0000 (09:35 +0200)]
epigraph for 5.27.1

Also linkify and fixup 5.27.0 epigraph
 ... waiting on link for 5.27.1

4 years agoMerge branch 'release-5.27.1' into blead
Eric Herman [Tue, 20 Jun 2017 07:22:18 +0000 (09:22 +0200)]
Merge branch 'release-5.27.1' into blead

4 years agoPod correction.
E. Choroba [Tue, 20 Jun 2017 02:12:20 +0000 (22:12 -0400)]
Pod correction.

Based on submission from E Choroba in RT # 131603.

4 years agoadd new release to perlhist origin/release-5.27.1 v5.27.1
Eric Herman [Mon, 19 Jun 2017 18:48:25 +0000 (20:48 +0200)]
add new release to perlhist

4 years agoperldelta: one more
Sawyer X [Mon, 19 Jun 2017 18:47:52 +0000 (14:47 -0400)]
perldelta: one more

4 years agoperldelta: Linkify and C<>'ify
Sawyer X [Mon, 19 Jun 2017 18:43:40 +0000 (14:43 -0400)]
perldelta: Linkify and C<>'ify

4 years agoFirst cut at finalizing perldelta 5.27.1
Eric Herman [Mon, 19 Jun 2017 18:15:56 +0000 (20:15 +0200)]
First cut at finalizing perldelta 5.27.1

4 years agoUpdate Module::CoreList via
Eric Herman [Mon, 19 Jun 2017 17:28:41 +0000 (19:28 +0200)]
Update Module::CoreList via

4 years agoadd test for [perl #131522] and fix test for (related) [perl #127581]
Yves Orton [Sun, 18 Jun 2017 21:44:07 +0000 (23:44 +0200)]
add test for [perl #131522] and fix test for (related) [perl #127581]

4 years agoResolve Perl #131522: Spurious "Assuming NOT a POSIX class" warning
Yves Orton [Sun, 18 Jun 2017 18:45:30 +0000 (20:45 +0200)]
Resolve Perl #131522: Spurious "Assuming NOT a POSIX class" warning

4 years agoRemove unnecessary MSVC*FREE CCTYPEs from Windows makefiles
Steve Hay [Fri, 16 Jun 2017 07:49:52 +0000 (08:49 +0100)]
Remove unnecessary MSVC*FREE CCTYPEs from Windows makefiles

As was pointed out recently in perl #131487, there is little point in most
of these since the Express (now Community) versions are so close to the
full versions anyway these days. MSVC70FREE is retained since it was the
only one that was actually being made use of.

4 years agoWe now support building with Visual Studio 2017 (VC++ 14.1)
Steve Hay [Fri, 16 Jun 2017 07:46:23 +0000 (08:46 +0100)]
We now support building with Visual Studio 2017 (VC++ 14.1)

(Support was added by commits 58998b2a9182cad1440674102a88af and

4 years agodon't call Perl_fbm_instr() with negative length
David Mitchell [Fri, 16 Jun 2017 14:46:19 +0000 (15:46 +0100)]
don't call Perl_fbm_instr() with negative length

RT #131575

re_intuit_start() could calculate a maximum end position less than the
current start position. This used to get rejected by fbm_intr(), until
v5.23.3-110-g147f21b, which made fbm_intr() faster and removed unnecessary

This commits fixes re_intuit_start(), and adds an assert to  fbm_intr().

4 years agoperldelta: davem's contributions for 5.27.1 so far
David Mitchell [Fri, 16 Jun 2017 12:48:13 +0000 (13:48 +0100)]
perldelta: davem's contributions for 5.27.1 so far

4 years agoUpdate Filter-Util-Call to CPAN version 1.57
Chris 'BinGOs' Williams [Fri, 16 Jun 2017 12:07:11 +0000 (13:07 +0100)]
Update Filter-Util-Call to CPAN version 1.57


1.57 2017-01-22 rurban
  * Todo the t/exec.t test 2 on cygwin.
  * Fixed/Todo the t/decrypt.t test 7 utf8 failures.
    Skip with non UTF-8 locale.

1.56 2017-01-20 rurban

  * add binmode to the decrypt/encr,decrypt sample scripts
  * add utf8-encoded testcase to t/decrypt.t [cpan #110921]. use -C
  * stabilized some tests, add diag to sometimes failing sh tests
  * moved to t/
  * fixed INSTALLDIRS back to site since 5.12 [gh #2]
  * fixed exec/sh test races using the same temp. filenames
  * reversed this Changes file to latest first
  * added Travis CI

4 years agoAvoid ++ in
Dagfinn Ilmari Mannsåker [Thu, 15 Jun 2017 15:14:06 +0000 (16:14 +0100)]
Avoid ++ in

The header comment warns to keep it simple, and specifically against
++ due to its cleverness for string magic auto-increment, but a couple
of places had missed the memo.

4 years agopp_ref: do SvSETMAGIC(TARG)
David Mitchell [Thu, 15 Jun 2017 13:29:56 +0000 (14:29 +0100)]
pp_ref: do SvSETMAGIC(TARG)

With v5.27.0-317-g88b1365, I changed the SvSETMAGIC(TARG) at the end of
pp_ref() to a simple assert(!SvSMAGICAL(TARG)), on the grounds that it
always returned a simple string or similar, which should never be magic.

Turns out I didn't allow for taint magic. This commit restores the old
behaviour and fixes Module::Runtime (which is where I spotted the issue).

4 years agoUpdate gmake for VS 2017
Steve Hay [Thu, 15 Jun 2017 13:00:29 +0000 (14:00 +0100)]
Update gmake for VS 2017

Update GNUmakefile as per:
fe7ba59122 Fix dmake build breakage when using Visual C++
82cad14406 Update dmake for VS 2017
74102a88af Fix up CCINCDIR/CCLIBDIR for VC++ 14.1 (and VC++ 8.0-14.0 too!)

4 years agoUpdate Getopt-Long to CPAN version 2.50
Chris 'BinGOs' Williams [Thu, 15 Jun 2017 11:35:17 +0000 (12:35 +0100)]
Update Getopt-Long to CPAN version 2.50


Changes in version 2.50

* Fix bug

* Fix bug
  Unfortunately, this withdraws a small part of fix 114999.
  GNU getopt_long() does not accept the (optional)
  argument to be passed to the option without = sign.
  We do, since not doing so breaks existing scripts.

* Provide a default value for options (gnu_compat mode).
  Thanks to Andrew Gregory.

4 years agoUpdate Devel-PPPort to CPAN version 3.36
Chris 'BinGOs' Williams [Thu, 15 Jun 2017 11:31:13 +0000 (12:31 +0100)]
Update Devel-PPPort to CPAN version 3.36


3.36 - 2017-05-14

    * Support Perl 5.26.* which no longer has '.' in @INC

4 years agoUpdate IO-Socket-IP to CPAN version 0.39
Chris 'BinGOs' Williams [Thu, 15 Jun 2017 11:30:05 +0000 (12:30 +0100)]
Update IO-Socket-IP to CPAN version 0.39


0.39    2017/03/06 16:40:30
         * Handle EOPNOTSUPP in resposne of efforts to disable V6ONLY
           (RT119780) (thanks XENU)

4 years agoadd File::Glob changes to perldelta
Yves Orton [Thu, 15 Jun 2017 01:35:04 +0000 (03:35 +0200)]
add File::Glob changes to perldelta

4 years agoadd perldelta entry about new hash stuff
Yves Orton [Fri, 2 Jun 2017 19:43:22 +0000 (21:43 +0200)]
add perldelta entry about new hash stuff

4 years agoUpdate JSON-PP to CPAN version 2.94
Chris 'BinGOs' Williams [Wed, 14 Jun 2017 19:34:37 +0000 (20:34 +0100)]
Update JSON-PP to CPAN version 2.94


2.94  2017-05-29
    - fix a test to support perl 5.6

2.93  2017-05-15
    - fix packaging issue

2.92  2017-05-15
    - production release

2.91_04  2017-01-10
  - fixed isa tests for bignum

2.91_03  2017-01-09
  - reworked documentation, based on the one for JSON::XS
  - let json_pp utility to show the version of JSON::PP
  - applied a patch to fix loading order of B module (pali++)

2.91_02  2016-12-04
  - fixed not to fail tests under Perl 5.25.* (srezic++)

2.91_01  2016-12-03
  - changed the number detection logic, patched by haarg
  - merged PR from dagolden to correct 0 handling
  - removed dependency (dolmen)
  - fixed wrong character offset spotted by ilmari
  - applied patches from Jarkko Hietaniemi to address VAX issues
  - small doc fixes from bessarabov, gregoa, Chris Anderson
  - applied a patch to remove . in @INC in json_pp (Tony Cook)
  - removed $VAR1 from json_pp output, spotted by tokuhirom
  - fixed an issue to ignore trailing 0
  - added Scalar::Util dependency for Perl 5.8+
  - fixed issues spotted by Nicolas Seriot's JSON Test Suite
    including experimental UTF-16/32 support and backward
    incompatible change of C style comment handling (now disabled
    by default)
  - moved the guts of JSON::PP::Boolean into lib/JSON/PP/
    and gave it a proper version
  - refactored incremental parser to let it handle incomplete
    JSON text properly
  - imported and tweaked tests from
  - minor code clean up

4 years agoUpdate File-Path to CPAN version 2.14
Chris 'BinGOs' Williams [Wed, 14 Jun 2017 19:29:55 +0000 (20:29 +0100)]
Update File-Path to CPAN version 2.14


2.14 2017-06-07
    - When creating subdirectories for testing underneath
      File::Spec::Functions::tmpdir(), use randomly generated strings.
    - No change in functionality from 2.13.

2.13 2017-05-31
    - Document security vulnerability reported as CVE-2017-6512.

2.12_008 2017-05-07
    - Patch from John Lightsey.

2.12_007 2017-04-22
    - Skip tests where filesystem doesn't support permissions (RT 121248).
    - Add AppVeyor configuration; thanks to Charlie Gonzalez and Hayo Baan.

2.12_006 2017-04-21
    - Modernize README, Makefile.PL, updating of version number
      and release date in documentation.

2.12_005 2017-04-21
    - Recommend use of 'safe => 1' in remove_tree() and rmtree().
    - Warn if mkpath() or make_path() is passed implausible options on
    - Corrections to errors in previous release.

2.12_004 2017-04-18
    - Certain functions used in tests are not available on Windows;
      skip them.
    - Move certain functions used in testing to t/

2.12_003 2017-04-07
    - Add tests to improve coverage ratios as measured by Devel::Cover
    - No functional changes.

2.12_002 2017-03-12
    - GH#41 RT 117019 Fixed File::Path::remove_tree option hash is auto
                      populated and cannot be reused
    - GH#40 Unskip in path root t
    - GH#39 Remove superfluous assignment to $arg{perm}
    - GH#38 Minor grammatical doc fixes.
    - GH#37 Minor grammatical doc fixes.

2.12_001 2016-09-18
    - RT 94209  document that the thread safety issue will not change and
      communicate alternative.
    - RT 85878  be more generous with error check regex given we could be
      dealing with a pre-1.25 Carp.
    - GH #33    Be more precise in documentation example for make_path
      error checking.
    - GH #34 Skip Windows 2000 and earlier unit tests (test change).
    - GH #36 Do not hardcode ENOENT (test change).

4 years agoUpdate IPC-Cmd to CPAN version 0.98
Chris 'BinGOs' Williams [Wed, 14 Jun 2017 19:23:55 +0000 (20:23 +0100)]
Update IPC-Cmd to CPAN version 0.98


0.98 Fri May 12 17:00:07 BST 2017

  * Added wait_loop_callback for run_forked()

  Bug fixes:
  * Only search in curdir in can_run() when on Win32

4 years agoUpdate Archive-Tar to CPAN version 2.26
Chris 'BinGOs' Williams [Wed, 14 Jun 2017 19:22:27 +0000 (20:22 +0100)]
Update Archive-Tar to CPAN version 2.26


2.26  12/05/2017
- '0' is a valid name for an archive, change 'iter' to check definedness

4 years agoAllow bitwise & ^ | to accept trailing UTF-8
Karl Williamson [Wed, 14 Jun 2017 04:09:25 +0000 (22:09 -0600)]
Allow bitwise & ^ | to accept trailing UTF-8

Commit 08b6664b858b8fd4b5c0c27542763337b6d78e46 breaks things like

$foo = "" & "\x{100}";

We have deprecated using above-FF code points in bitwise operations, and
made them illegal in 5.27.  However, the case where the illegal code
points don't play a part in the operation never raised deprecation
warnings.  The example above is one such, because the \x{100} comes
after the operation stops since the other operand has length 0.

We can't make something illegal without warning people about it for 2

Rather than revert that commit, and reinstate a bunch of slow code that
is far more general than now needed, this commit adds some extra code to
deal with these situations, but the basic operations still take place in
tight loops, which 08b6664b858b8fd4b5c0c27542763337b6d78e46 caused to

In the case of "&", the illegal code points get truncated away.  In the
case of ^ and |, they get catenated as-is.  This preserves earlier

It has not been decided if these should at least warn, or the usage
should be deprecated.  A commit can easily be done to change to whatever
the final decision is, but this commit doesn't raise any warnings, hence
preserves existing behavior.

The breaking commit looks like it might create some havoc with CPAN, and
fixing it now will save the CPAN testers effort, as they won't have to
deal with a bunch of broken distributions.

4 years agoutf8.c: White-space only
Karl Williamson [Wed, 14 Jun 2017 03:50:40 +0000 (21:50 -0600)]
utf8.c: White-space only

Outdent some code that had a surrounding block removed in the previous

4 years agoAdd new function utf8_from_bytes_loc()
Karl Williamson [Wed, 14 Jun 2017 03:37:22 +0000 (21:37 -0600)]
Add new function utf8_from_bytes_loc()

This is currently undocumented externally, so we can change the API if

This is like utf8_from_bytes(), but in the case of not being able to
convert the whole string, it converts the initial substring that is
convertible, and tells you where it had to stop.

4 years agoClarify pod for bytes to/from utf8()
Karl Williamson [Wed, 14 Jun 2017 03:15:50 +0000 (21:15 -0600)]
Clarify pod for bytes to/from utf8()

4 years agoembed.fnc: Add some comments
Karl Williamson [Fri, 9 Jun 2017 20:21:01 +0000 (14:21 -0600)]
embed.fnc: Add some comments

4 years agobytes_from_utf8(): parameter must not be NULL
Karl Williamson [Fri, 9 Jun 2017 17:44:58 +0000 (11:44 -0600)]
bytes_from_utf8(): parameter must not be NULL

The function assumes that the parameter is not NULL.  Declare that to
embed.fnc.  Also change the name to indicate that it is a pointer.

4 years agoFix up CCINCDIR/CCLIBDIR for VC++ 14.1 (and VC++ 8.0-14.0 too!)
Steve Hay [Wed, 14 Jun 2017 16:44:22 +0000 (17:44 +0100)]
Fix up CCINCDIR/CCLIBDIR for VC++ 14.1 (and VC++ 8.0-14.0 too!)

These settings just end up in $Config{incpath}/$Config{libpth} and don't
otherwise affect the build, but we might as well get them right if we can.

4 years agoUpdate dmake for VS 2017
Steve Hay [Sat, 3 Jun 2017 22:09:35 +0000 (17:09 -0500)]
Update dmake for VS 2017

Patch by Eric Lindblad, who asked for his email address not to be
published. [perl #131487]

4 years agoUpdate nmake for VS 2017
Steve Hay [Sat, 3 Jun 2017 17:17:37 +0000 (12:17 -0500)]
Update nmake for VS 2017

Patch by Eric Lindblad, who asked for his email address not to be
published. [perl #131487]

4 years agoperldelta for 3135e2b23ba4
Tony Cook [Wed, 14 Jun 2017 06:49:12 +0000 (16:49 +1000)]
perldelta for 3135e2b23ba4

4 years ago[perl #123981] Travis-CI support
Tony Cook [Mon, 8 Aug 2016 05:11:55 +0000 (15:11 +1000)]
[perl #123981] Travis-CI support

This is largely based on work done by "c9s <>" and
Dennis Kaarsemaker (Seveas)

4 years agoperldelta for e80af1fd276d
Tony Cook [Wed, 14 Jun 2017 05:02:33 +0000 (15:02 +1000)]
perldelta for e80af1fd276d

4 years ago(perl 129183) don't treat \ as an escape in PATH for -S
Tony Cook [Tue, 11 Oct 2016 23:42:47 +0000 (10:42 +1100)]
(perl 129183) don't treat \ as an escape in PATH for -S

4 years ago(perl #131526) don't go beyond the end of the NUL in my_atof2
Tony Cook [Tue, 13 Jun 2017 23:42:31 +0000 (09:42 +1000)]
(perl #131526) don't go beyond the end of the NUL in my_atof2

Perl_my_atof2() calls GROK_NUMERIC_RADIX() to detect and skip past
a decimal point and then can increment the parse pointer (s) before
checking what it points at, so skipping the terminating NUL if the
decimal point is immediately before the NUL.

4 years agokeep PERL_HASH_SEED_BYTES as an int
David Mitchell [Mon, 12 Jun 2017 15:26:02 +0000 (16:26 +0100)]
keep PERL_HASH_SEED_BYTES as an int

adding a sizeof() expression was converting it into an unsigned long,
which was triggering this warning in Hash-Util:

Util.xs:99:45: warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat]

4 years agogv.c, mg.c: fix 32-bit compiler warnings
David Mitchell [Mon, 12 Jun 2017 12:31:22 +0000 (13:31 +0100)]
gv.c, mg.c: fix 32-bit compiler warnings

    mg.c:641:21: warning: cast from pointer to integer of different size
             UV uv = (UV)mg->mg_obj;

It's storing a char-ranged integer value as an SV*. By using SSize_t
rather than UV to store the char, it avoids mismatched size warnings.

4 years agoStorable: fix a couple of 32-bit warnings
David Mitchell [Mon, 12 Jun 2017 12:05:23 +0000 (13:05 +0100)]
Storable: fix a couple of 32-bit warnings

Storable.xs: In function 'retrieve_blessed':
Storable.xs:1015:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  else if (PerlIO_read(cxt->fio, x, y) != y)  { \
Storable.xs:4078:2: note: in expansion of macro 'SAFEPVREAD'
  SAFEPVREAD(classname, len, malloced_classname);

4 years agoPerlIO-scalar: fix 32-bit compiler warning
David Mitchell [Mon, 12 Jun 2017 11:57:27 +0000 (12:57 +0100)]
PerlIO-scalar: fix 32-bit compiler warning

4 years agofix utf char > IV_MAX on 32-bit platforms
David Mitchell [Mon, 12 Jun 2017 10:42:22 +0000 (11:42 +0100)]
fix utf char > IV_MAX on 32-bit platforms

Commit v5.27.0-132-g13f4dd3 forbade out of range Unicode code points,
and fixed/removed tests that no longer apply.

However, this was probably only tested on a 64-bit platform.  Several
tests now fail on 32-bit platforms, due to things like "\x{80000000}".
This commit fixes up those tests too.

4 years agoSimpler hints fix for [perl #131337].
Andy Dougherty [Mon, 12 Jun 2017 12:02:10 +0000 (08:02 -0400)]
Simpler hints fix for [perl #131337].

The Configure scan fails to find dlopen() with g++.  Explicitly making
it availble allows Configure to default to using dynamic loading, but
still allows the user to override and use static loading.

4 years agoUpdate ExtUtils-MakeMaker to CPAN version 7.30
Chris 'BinGOs' Williams [Mon, 12 Jun 2017 12:36:19 +0000 (13:36 +0100)]
Update ExtUtils-MakeMaker to CPAN version 7.30


7.30 Mon Jun 12 13:17:29 BST 2017

    No changes since v7.29_02

7.29_02 Sun Jun 11 12:00:33 BST 2017

    Doc fixes:
    - Fixed POD errors in FAQ

7.29_01 Wed May 31 08:34:10 BST 2017

    Bug fixes:
    - Prune .a without extralibs.ld from search paths

4 years agoperldelta: Use new boiler plate
Karl Williamson [Sun, 11 Jun 2017 14:31:06 +0000 (08:31 -0600)]
perldelta: Use new boiler plate

This uses for the current perldelta, the boiler plate from the perldelta
template added in the previous commit.

It also documents a significant test change in the current development

4 years agoPorting/perldelta_template.pod: Add boiler plate
Karl Williamson [Sun, 11 Jun 2017 14:20:21 +0000 (08:20 -0600)]
Porting/perldelta_template.pod: Add boiler plate

This adds text about documentation and testing changes, as agreed to in
the thread starting with

4 years agoutf8.c: Add missing 'const' to formal parameter
Karl Williamson [Fri, 12 May 2017 00:30:34 +0000 (18:30 -0600)]
utf8.c: Add missing 'const' to formal parameter

This makes it match the embed.fnc entry.  For some reason no warning was
given except by the Win32 compiler

4 years agoUpdate Test-Harness to CPAN version 3.39
Chris 'BinGOs' Williams [Sat, 10 Jun 2017 11:29:23 +0000 (12:29 +0100)]
Update Test-Harness to CPAN version 3.39


3.39    06-04-2017
        - Make tests pass when PERL_USE_UNSAFE_INC=0

4 years agocommit c93f220f failed to update DirHandle's $VERSION.
James E Keenan [Fri, 9 Jun 2017 23:06:57 +0000 (19:06 -0400)]
commit c93f220f failed to update DirHandle's $VERSION.

4 years agoDirHandle: document as obsolete
Aristotle Pagaltzis [Wed, 7 Sep 2016 20:20:52 +0000 (22:20 +0200)]
DirHandle: document as obsolete

4 years agoRegularise @_ unpacking in Module::CoreList
Aristotle Pagaltzis [Sat, 23 Apr 2016 18:43:00 +0000 (20:43 +0200)]
Regularise @_ unpacking in Module::CoreList

Mainly this means regularising the awful heuristic for detecting when
a function is being called as a method.

4 years agoUpdate ExtUtils-MakeMaker to CPAN version 7.28
Chris 'BinGOs' Williams [Fri, 9 Jun 2017 16:41:20 +0000 (17:41 +0100)]
Update ExtUtils-MakeMaker to CPAN version 7.28


7.28  Tue May 30 22:01:08 BST 2017

    No changes since v7.27_02

7.27_02 Tue May 30 09:27:56 BST 2017

    Bug fixes:
    - Prune auto/share from search paths RT#121918

7.27_01 Sun May 28 11:35:46 BST 2017

    Bug fixes:
    - Fix regression with metadata RT#121913

7.26  Sat May 27 21:01:47 BST 2017

    No changes since 7.25_06

7.25_06 Tue May 23 20:18:01 BST 2017

    Bug fixes:
    - Fix regression with XS tests on MSWin32 with MS toolchain

7.25_05 Mon May 15 10:18:01 BST 2017

    Bug fixes:
    - Make MakeMaker pass compilation tests on AIX again
    - Test, fix test dep on SKIPped linktype

7.25_04 Fri May 12 12:24:09 BST 2017

    - Add os_unsupported() function

7.25_03 Thu May 11 17:51:23 BST 2017

    Bug fixes:
    - processPL now depends on 'pure_all' instead of 'all'

7.25_02 Thu May 11 11:54:42 BST 2017

    Bug fixes:
    - Only add staticlibs that are installed under auto/
    - Correct the order of tests of chmod()

    Doc fixes:
    - Fixed typo in

7.25_01 Fri Feb  3 13:36:25 GMT 2017

    Bug fixes:
    - Make perllocal.pod files reproducible
    - META_ADD/MERGE default meta version based on each other
    - Eliminate an ancient, unneeded, dangerous call to Carp::longmess

4 years agoMake LOCK_LC_NUMERIC_STANDARD recursive
Karl Williamson [Sat, 3 Jun 2017 15:08:50 +0000 (09:08 -0600)]


This partially fixes [perl #128207]

4 years agoutf8.c: Clarify pod for three functions
Karl Williamson [Tue, 6 Jun 2017 07:54:46 +0000 (01:54 -0600)]
utf8.c: Clarify pod for three functions

utf8_to_bytes(), bytes_from_utf8(), bytes_to_utf8()

4 years agoutf8.c: Change formal parameter name
Karl Williamson [Tue, 6 Jun 2017 07:45:32 +0000 (01:45 -0600)]
utf8.c: Change formal parameter name

The parameter "len" really is a pointer in utf8_to_bytes(),
bytes_from_utf8(), and bytes_to_utf8().  Call it lenp.  The
documentation was sloppy about it; clean that up.

4 years agoutf8.c: White-space, comment only
Karl Williamson [Tue, 6 Jun 2017 01:26:37 +0000 (19:26 -0600)]
utf8.c: White-space, comment only

This adjusts the indentation to reflect changes in the previous commit.

4 years agoutf8_to_bytes(): Avoid work if possible
Karl Williamson [Tue, 6 Jun 2017 01:21:41 +0000 (19:21 -0600)]
utf8_to_bytes(): Avoid work if possible

This converts to use the new function is_utf8_invariant_string_loc() to
find the first variant in the input.  If none are found, the function is
a no-op.  If the intial part of the input is all invariants, they are
now skipped during conversion, resulting in less work for such input.

The new function could also be optimized to speed up searching.

4 years agoutf8.c: Change UTF8 to UVCHR
Karl Williamson [Tue, 6 Jun 2017 08:01:10 +0000 (02:01 -0600)]
utf8.c: Change UTF8 to UVCHR

There is no practical difference between UTF8_IS_INVARIANT and
UVCHR_IS_INVARIANT, except that the latter is supposed to be used on
characters.  Fix to conform.

4 years agosv.c: Refactor slightly to avoid a goto
Karl Williamson [Thu, 8 Jun 2017 03:51:03 +0000 (21:51 -0600)]
sv.c: Refactor slightly to avoid a goto

The introduction of the inline function in the previous commit makes it
clear that the code can be refactored to be more structured.

4 years agosv.c: Convert to use is_utf8_invariant_string_loc
Karl Williamson [Tue, 6 Jun 2017 00:51:28 +0000 (18:51 -0600)]
sv.c: Convert to use is_utf8_invariant_string_loc

This inline function was added in the previous commit.

And the function has the potential to be sped up by using word-at-a-time