perl.git
2 years agohv.c: fixup args assert for HV_FREE_ENTRIES
Yves Orton [Sat, 1 Jul 2017 14:40:24 +0000 (16:40 +0200)] 
hv.c: fixup args assert for HV_FREE_ENTRIES

2 years agohv.c: rename static function S_hfreeentries() to S_hv_free_entries()
Yves Orton [Sat, 1 Jul 2017 14:32:28 +0000 (16:32 +0200)] 
hv.c: rename static function S_hfreeentries() to S_hv_free_entries()

hfreeentries() reads very poorly - hv_free_entries() makes more sense too.

2 years agofixup typo in comment
Yves Orton [Sat, 1 Jul 2017 14:30:37 +0000 (16:30 +0200)] 
fixup typo in comment

2 years ago5.27.0 contained 5.20170531; 5.27.1 contained 5.20170621
Steve Hay [Thu, 29 Jun 2017 17:07:55 +0000 (18:07 +0100)] 
5.27.0 contained 5.20170531; 5.27.1 contained 5.20170621

The 5.27.0 data was correct until commit a6b08d8b5d, which wrongly updated
it to 5.20170620 instead of adding 5.27.1 stubs saying that.
That mistake was perhaps the reason that 5.27.1 ended up containing
5.20170621 rather than the expected 5.20170620?

2 years agoImpending 5.27.2 release will be 20 July, not 22 June
Steve Hay [Thu, 29 Jun 2017 16:49:45 +0000 (17:49 +0100)] 
Impending 5.27.2 release will be 20 July, not 22 June

2 years agoTick off 5.27.1 release
Steve Hay [Thu, 29 Jun 2017 16:44:00 +0000 (17:44 +0100)] 
Tick off 5.27.1 release

2 years agoadd an additional test for whitespace tolerance in caret word-vars
Yves Orton [Thu, 29 Jun 2017 11:20:49 +0000 (13:20 +0200)] 
add an additional test for whitespace tolerance in caret word-vars

2 years agoParse caret vars with subscripts the same as normal vars inside of ${..} escaping
Yves Orton [Thu, 29 Jun 2017 09:31:14 +0000 (11:31 +0200)] 
Parse caret vars with subscripts the same as normal vars inside of ${..} escaping

This behavior is discussed in perl #131664, which complains that
"${^CAPTURE}[0]" does not work as expected. Abigail explains the
behavior is by design and Eirik Berg Hanssen expands on that explanation
pointing out that what /should/ work, "${^CAPTURE[0]}" does not,
which Sawyer then ruled was a bug.

So this patch makes "${^CAPTURE[0]}" (and "${^CAPTURE [0]}" [hi
abigial]) work the same as they would if the var was called @foo.

2 years agot/op/hash.t: fixup intermittently failing test
Yves Orton [Tue, 27 Jun 2017 14:36:57 +0000 (16:36 +0200)] 
t/op/hash.t: fixup intermittently failing test

2 years agoUpdate release schedule
Steve Hay [Tue, 27 Jun 2017 12:43:57 +0000 (13:43 +0100)] 
Update release schedule

I'm hoping to get 5.22.4/5.24.2 released in the next few weeks,
with 5.26.1 following around a month after that.

2 years agoPERL_SNPRINTF_CHECK(): off by 1 error
David Mitchell [Tue, 27 Jun 2017 08:59:41 +0000 (09:59 +0100)] 
PERL_SNPRINTF_CHECK(): off by 1 error

PERL_SNPRINTF_CHECK() is used as part of a wrapper for snprintf()
to check that snprintf didn't return more bytes than the buffer size
given it to it (which should never happen anyway). But it was checking
return_value >= buf_size rather than >. So a spurious panic could ensue
if the formatted string exactly matched the buffer size.

This hadn't been detected before because the old Perl_sv_vcatpvfn_flags()
implementation added lots of fudge factors to the buffer size.

At the same time, change the code in Perl_sv_vcatpvfn_flags() which grows
PL_efloatbuf if its not big enough for float_need:

1) Make it require the buf size to be at least float_need + 1 rather than
just float_need, to accommodate the \0 appended by snprintf() (we don't
strictly need the \0, and a conforming snprintf() implementation should
just return the string without trailing \0 if there isn't room for it,
but its possible an snprintf() out there might stumble).

2) When growing PL_efloatbuf, grow by an extra margin of 0x20, to
reduce the likelihood of multiple reallocs.

2 years agoFile::Glob - tweak rt131211.t to be less sensitive on wonky boxes
Yves Orton [Tue, 27 Jun 2017 08:22:23 +0000 (10:22 +0200)] 
File::Glob - tweak rt131211.t to be less sensitive on wonky boxes

make the test less senstive and avoid divide by zero errors,
also we skip the test if either elapsed_match or elapsed_fail is
true, as we can not rely on the timings then. For the operations
we are doing we should get a non-zero timing from Time::HiRes.

This should mean that running this test on boxes with heavy
load, etc, will no longer result in false positives.

2 years agoregcomp.c: correct the regdata which paratermers under DEBUG
Yves Orton [Tue, 27 Jun 2017 08:28:05 +0000 (10:28 +0200)] 
regcomp.c: correct the regdata which paratermers under DEBUG

this worked because 'a' and 'o' are treated the same for all intents
and purposes, but it is confusing as 'a' stands for array, and 'o'
for hash, and the DEBUG mode code here adds two arrays not hashes.

2 years agoregcomp.c: document reg_data types better in reg_dup
Yves Orton [Tue, 27 Jun 2017 08:27:37 +0000 (10:27 +0200)] 
regcomp.c: document reg_data types better in reg_dup

2 years agoUpdate Math-BigRat to CPAN version 0.2613
Eric Herman [Mon, 26 Jun 2017 14:48:58 +0000 (16:48 +0200)] 
Update Math-BigRat to CPAN version 0.2613

Includes test addressing Bug #131410:
 "Math::BigRat in perl-5.26.0-RC2 severely broken"

https://rt.perl.org/Public/Bug/Display.html?id=131410
See Also:
http://code.activestate.com/lists/perl5-porters/236513/
https://rt.cpan.org/Ticket/Display.html?id=121139

2 years agoS_gen_constant_list(): initialise si_stack_hwm
David Mitchell [Mon, 26 Jun 2017 13:34:20 +0000 (14:34 +0100)] 
S_gen_constant_list(): initialise si_stack_hwm

This is purely to shut up valgrind.

S_gen_constant_list() directly calls Perl_pp_anonlist() while not
in a runops loop. So PL_curstackinfo->si_stack_hwm doesn't get
initialised. Which is harmless, as only a runops loop is concerned with
its value. But valgrind gets upset:

    Conditional jump or move depends on uninitialised value(s)
       at 0x651D90: Perl_pp_anonlist (pp.c:5257)

Can be reproduced with '@a = (1,0..0);' (or any list that can be constant
folded).

2 years agot/porting/customized.t: delete stale entries.
David Mitchell [Sat, 24 Jun 2017 09:56:26 +0000 (10:56 +0100)] 
t/porting/customized.t: delete stale entries.

I just ran

    t/porting/customized.t --regen

It seems that /customized.t doesn't complain about stale entries.

2 years agoPATCH: [perl #131646] Assertion fail UTF-8 error msg
Karl Williamson [Sat, 24 Jun 2017 17:47:19 +0000 (11:47 -0600)] 
PATCH: [perl #131646] Assertion fail UTF-8 error msg

Instead of croaking with a proper message, creating the message creates
an assertion failure.

The cause was that there were two ++ operators on a string, so one
should subtract 2 to get to the string start, but only 1 was being
subtracted.

This is a 5.26 regression, but not terribly consequential, as the
program is about to die, but it is a trivial fix that allows the reason
the crash is happening to be properly displayed to aid debugging, so I'm
adding my vote for it for 5.26.1.

2 years agoUpdate Time-HiRes to CPAN version 1.9742
Chris 'BinGOs' Williams [Sat, 24 Jun 2017 13:48:59 +0000 (14:48 +0100)] 
Update Time-HiRes to CPAN version 1.9742

  [DELTA]

1.9742 [2017-04-16]
  - prefer 3-argument open: blead 1ae6ead9
  - fix dist/Time-HiRes/t/*.t that assumed '.' in @INC: blead 465db51d
  - fix cases where 'do file' should be 'do ./file'.: blead 8b69401c

2 years agoparanoia: parenthesize macro parameters
Lukas Mai [Sat, 24 Jun 2017 12:57:36 +0000 (14:57 +0200)] 
paranoia: parenthesize macro parameters

2 years agofix #ifdef directives with extra tokens
Lukas Mai [Sat, 24 Jun 2017 12:56:50 +0000 (14:56 +0200)] 
fix #ifdef directives with extra tokens

2 years agoadd PL_curstackinfo->si_stack_hwm
David Mitchell [Tue, 13 Jun 2017 08:11:13 +0000 (09:11 +0100)] 
add PL_curstackinfo->si_stack_hwm

On debugging builds only, add a mechanism for checking pp function calls
for insufficient stack extending. It works by:

* make the runops loop set a high-water-mark (HWM) variable equal to
  PL_stack_sp just before calling each pp function;

* make EXTEND() etc update this HWM;

* on return from the pp function, panic if PL_stack_sp is > HWM.

This detects whether pp functions are pushing more items onto the stack
than they are requesting space for.

There's a possibility of false positives if the code is doing weird stuff
like direct manipulation of stacks via PL_curstack, SWITCHSTACK() etc.

It's also possible that one pp function "knows" that a previous pp
function will have already grown the stack enough. Currently the only
place in core that seems to do this is pp_enteriter, which allocates 1
stack slot so that pp_iter doesn't have to check each time it returns
&PL_sv_yes/no. To accommodate this, the new macro EXTEND_SKIP() has been
added, that tells perl that it's safely skipping an EXTEND() here.

2 years agoupgrade Time-Piece from 1.31 to 1.3201
David Mitchell [Sat, 24 Jun 2017 08:27:50 +0000 (09:27 +0100)] 
upgrade Time-Piece from 1.31 to 1.3201

1.3201  2017-06-22
        - Fix compile errors on MS
        - Use macro for buf sizes
        - Remove some compile warnings
        - SP of by 1 in _crt_localtime

1.32    2017-06-20
        - Since 1.31:
        - New truncate() method
        - Add new flags: %F, %T, %P + more
        - Add rudimentary locale support via use_locale()
        - More tests
        - Less bugs (hopefully)

1.31_04 2017-06-16
        - Tests for %F and %T
        - Fix wrong test count on Windows
        - Use sensible defaults for strptime

1.31_03 2017-06-14
        - Don't use localization on default
        - Bugs with %s in strptime fixed

1.31_02 2017-01-16
        - Add better localization between strftime and strptime

1.31_01 2017-01-13
        - Respect singular for 1 sec, min, etc. in pretty (choroba)
        - Add truncate() (openstrike)
        - Add many more tests (openstrike)
        - Add more compatibility to strf/strptime

2 years agoupgrade Scalar-List-Utils from 1.47 to 1.48
David Mitchell [Sat, 24 Jun 2017 08:16:02 +0000 (09:16 +0100)] 
upgrade Scalar-List-Utils from 1.47 to 1.48

[CHANGES]
 * Note in documentation that outer function's @_ can be accessed in
   some blocks, but ought not be (thanks wchristian)

[BUGFIXES]
 * Ensure pairmap extends its stack correctly (thanks davem)
 * Fix name of List::Util::unpairs in its error messages

2 years agoadd DEBUGGING_RE_ONLY define
David Mitchell [Fri, 23 Jun 2017 11:25:30 +0000 (12:25 +0100)] 
add DEBUGGING_RE_ONLY define

re.xs and re_top.h both turn DEBUGGING on. make them set
DEBUGGING_RE_ONLY too so that its easy to tell this is a fake DEBUGGING.

2 years agoporting/bench.t: skip under ASAN
David Mitchell [Fri, 23 Jun 2017 07:37:08 +0000 (08:37 +0100)] 
porting/bench.t: skip under ASAN

Address Sanitizer and cachegrind don't play nicely together

Also change a couple of 'is length($out), 0' to 'is $out, ""'
so that $out is displayed to stderr if not empty.

2 years ago[perl #131627] Fix multideref for $x{qw/a/->$*}
Dagfinn Ilmari Mannsåker [Thu, 22 Jun 2017 19:41:58 +0000 (20:41 +0100)] 
[perl #131627] Fix multideref for $x{qw/a/->$*}

qw// sets OPf_PARENS on the OP_CONST it generates, which persists when
->$* turns it into an OP_GV.

This used to cause an assertion failure on debugging builds, and didn't
get the multideref optimisation on non-debugging.

2 years agoModule-CoreList/Changes for 5.20170622
Eric Herman [Thu, 22 Jun 2017 18:28:52 +0000 (20:28 +0200)] 
Module-CoreList/Changes for 5.20170622

2 years agoupdate Module::CoreList to reflect v5.27.2
Eric Herman [Thu, 22 Jun 2017 18:20:15 +0000 (20:20 +0200)] 
update Module::CoreList to reflect v5.27.2

Note that porting tests pass again.

2 years agoBump the perl version 5.27.1 -> 5.27.2
Eric Herman [Thu, 22 Jun 2017 15:20:08 +0000 (17:20 +0200)] 
Bump the perl version 5.27.1 -> 5.27.2

Note that at this stage, porting tests fail:
Failed 3 tests out of 2390, 99.87% okay.
../dist/Module-CoreList/t/is_core.t
../dist/Module-CoreList/t/maintainer.t
porting/corelist.t

2 years agoXS::APItest::test_hv_free_ent: extend stack
David Mitchell [Thu, 15 Jun 2017 10:24:02 +0000 (11:24 +0100)] 
XS::APItest::test_hv_free_ent: extend stack

... when pushing results. Ditto for

XS::APItest::Hash::test_hv_delayfree_ent

2 years agorecv: reset stack when returning undef
David Mitchell [Thu, 15 Jun 2017 10:43:42 +0000 (11:43 +0100)] 
recv: reset stack when returning undef

When recv() detects an error, it returns undef: but it was failing to pop
its args off the stack first. So in list context it returned both its
original args and undef. It was also then not extending the stack to push
the undef.

After this commit  it resets SP to the base of its args list first,
like the other ops already do which share the Perl_pp_systread() function
body.

2 years agopp_leavewrite: extend stack for return value
David Mitchell [Tue, 13 Jun 2017 12:40:50 +0000 (13:40 +0100)] 
pp_leavewrite: extend stack for return value

When pushing &PL_sv_yes/no on the stack, make room for it.

Normally this isn't an issue as previous formlines() will have caused the
stack to be extended anyway; but for the null format:

    format FOO =
    .

this isn't the case.

2 years agoargless reset(): extend stack
David Mitchell [Tue, 13 Jun 2017 10:19:31 +0000 (11:19 +0100)] 
argless reset(): extend stack

Make space to return &PL_sv_yes if an arg wasn't popped earlier.

2 years agoextend stack on scalar empty list slice
David Mitchell [Tue, 13 Jun 2017 10:11:50 +0000 (11:11 +0100)] 
extend stack on scalar empty list slice

In scalar context, an empty list slice returns PL_sv_undef.
Extned the stack for this return value, since if there were no elements
or indices, nothing was popped from the stack

2 years agoscalar reverse(): extend stack if no arg
David Mitchell [Tue, 13 Jun 2017 10:02:42 +0000 (11:02 +0100)] 
scalar reverse(): extend stack if no arg

If we';re using the implicit $_ there's nothing to pop off the stack,
so there may not be a spare stack slot to push the result.

2 years agopp_match/subst: extend stack
David Mitchell [Tue, 13 Jun 2017 08:36:13 +0000 (09:36 +0100)] 
pp_match/subst: extend stack

For: scalar($lex =~ /foo/)
and  scalar($lex =~ s/foo/$1/)

there are no args on the stack, but we push PL_sv_yes/no
without extending the stack first.

2 years ago[MERGE] Upgrade Scalar-List-Utils to 1.47
David Mitchell [Thu, 22 Jun 2017 12:03:53 +0000 (13:03 +0100)] 
[MERGE] Upgrade Scalar-List-Utils to 1.47

including reverting any customisations.

2 years agoUpgrade Scalar-List-Utils from 1.46 to 1.47
David Mitchell [Thu, 22 Jun 2017 11:53:29 +0000 (12:53 +0100)] 
Upgrade Scalar-List-Utils from 1.46 to 1.47

Note that the last few commits have reverted any local customisations to
1.46.  These were of two kinds. First, fixes for a tainting issue, the
last of which was just a cherry-pick from upstream, which should have made
it into 1.47 anyway.

The second were fixes to tests for netbsd-vax and Inf/Nan. I don't think
blead urgently needs these - we should wait for them to re-appear via the
normal upstream merging process. See
    https://rt.cpan.org/Public/Bug/Display.html?id=118470

2 years agoundo Scalar-List-Utils customisation.dat entries
David Mitchell [Thu, 22 Jun 2017 11:37:14 +0000 (12:37 +0100)] 
undo Scalar-List-Utils customisation.dat entries

to reflect the revert in the last few commits

2 years agoremove Scalar-List-Utils customisation list
David Mitchell [Thu, 22 Jun 2017 11:33:40 +0000 (12:33 +0100)] 
remove Scalar-List-Utils customisation list

.. in preparation for installing new release

Revert "Scalar-List-Utils: customize Maintainers.pl"

This reverts commit 1476bbfa98fcd0efc3a4d1ccdd0b021ad7403986.

2 years agoundo a Scalar-List-Utils customisation
David Mitchell [Thu, 22 Jun 2017 11:30:51 +0000 (12:30 +0100)] 
undo a Scalar-List-Utils customisation

.. in preparation for installing new release

Revert "Scalar-List-Utils: netbsd-vax: no inf/nan"

This reverts commit 5b15f36c4b1c5025dccabeef937495997e37e512.

2 years agoundo a Scalar-List-Utils customisation
David Mitchell [Thu, 22 Jun 2017 11:30:27 +0000 (12:30 +0100)] 
undo a Scalar-List-Utils customisation

.. in preparation for installing new release

Revert "Scalar-List-Utils: netbsd-vax: no inf/nan"

This reverts commit 3ad3fb7edd9a5db1e0cf38ad50a84824ef641c39.

2 years agoundo a Scalar-List-Utils customisation
David Mitchell [Thu, 22 Jun 2017 11:30:03 +0000 (12:30 +0100)] 
undo a Scalar-List-Utils customisation

.. in preparation for installing new release

Revert "Scalar-List-Utils: customized VERSION bump"

This reverts commit cdeaf44d582bf74f4c686dc58b288d8d33f25b95.

2 years agoundo a Scalar-List-Utils customisation
David Mitchell [Thu, 22 Jun 2017 11:29:15 +0000 (12:29 +0100)] 
undo a Scalar-List-Utils customisation

.. in preparation for installing new release

Revert "netbsd-vax: also the 1E1000 is toxic (in compiletime)."

This reverts commit d1deb742f98169ce12c103478382902d83f6717a.

2 years agoundo a Scalar-List-Utils customisation
David Mitchell [Thu, 22 Jun 2017 11:28:46 +0000 (12:28 +0100)] 
undo a Scalar-List-Utils customisation

.. in preparation for installing new release

Revert "Scalar::List-Utils/t/tainted.t: Skip failing tests"

This reverts commit 71a0317b30064fe6979f8616f6d11553b35de971.

2 years agoundo a Scalar-List-Utils customisation
David Mitchell [Thu, 22 Jun 2017 11:27:31 +0000 (12:27 +0100)] 
undo a Scalar-List-Utils customisation

.. in preparation for installing new release

Revert "Cherry-pick Scalar-List-Utils tainted.t fix from upstream"

This reverts commit a76614debec3c698069bcf0fa012318ed15461cc.

2 years agoutf8.c: Fix comment
Karl Williamson [Wed, 14 Jun 2017 17:22:40 +0000 (11:22 -0600)] 
utf8.c: Fix comment

2 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.

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

2 years ago[MERGE] test and fix up Porting/bench.pl
David Mitchell [Wed, 21 Jun 2017 10:29:01 +0000 (11:29 +0100)] 
[MERGE] test and fix up Porting/bench.pl

bench.pl 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 bench.pl 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.

   bench.pl 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
   --show.
   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

2 years agoPorting/bench.pl: test --fields with 1 field
David Mitchell [Wed, 21 Jun 2017 09:41:34 +0000 (10:41 +0100)] 
Porting/bench.pl: 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.

2 years agoPorting/bench.pl comments: s/perl_name/perl_label/
David Mitchell [Wed, 21 Jun 2017 09:27:27 +0000 (10:27 +0100)] 
Porting/bench.pl 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
accordingly.

2 years agoPorting/bench.pl: fix up pod
David Mitchell [Wed, 21 Jun 2017 09:21:31 +0000 (10:21 +0100)] 
Porting/bench.pl: 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.

2 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
    --average
    --fields
    --norm
    --sort

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.

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

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

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

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

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

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

    Porting/bench.pl --autolabel \
        ~/bin/perl-5.20.0 ~/bin/perl-5.22.0 ~/bin/perl-5.24.0

is equivalent to

    Porting/bench.pl \
        ~/bin/perl-5.20.0=5.20.0 ~/bin/perl-5.22.0=5.22.0 \
        ~/bin/perl-5.24.0=5.24.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.

2 years agoPorting/bench.pl: improve 'no such test' err msg
David Mitchell [Mon, 19 Jun 2017 14:17:23 +0000 (15:17 +0100)] 
Porting/bench.pl: 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
line.

2 years agoPorting/bench.pl: trivial var changes
David Mitchell [Mon, 19 Jun 2017 13:56:31 +0000 (14:56 +0100)] 
Porting/bench.pl: 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.

2 years agoPorting/bench.pl: new syntax for perl args and env
David Mitchell [Mon, 19 Jun 2017 11:47:35 +0000 (12:47 +0100)] 
Porting/bench.pl: 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.

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

2 years agoPorting/bench.pl ban duplicate labels in multiread
David Mitchell [Mon, 19 Jun 2017 08:38:35 +0000 (09:38 +0100)] 
Porting/bench.pl 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.

2 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
--read.

2 years agoPorting/bench.pl: ban --benchfile under --read
David Mitchell [Sun, 18 Jun 2017 20:37:04 +0000 (21:37 +0100)] 
Porting/bench.pl: 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.

2 years agoPorting/bench.pl: better handle multiple --read
David Mitchell [Sat, 17 Jun 2017 20:22:54 +0000 (21:22 +0100)] 
Porting/bench.pl: 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

2 years agoPorting/bench.pl: only use used sort elems
David Mitchell [Sat, 17 Jun 2017 19:01:33 +0000 (20:01 +0100)] 
Porting/bench.pl: 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.

2 years agoPorting/bench.pl: remove unneeded sort order calcs
David Mitchell [Sat, 17 Jun 2017 18:54:11 +0000 (19:54 +0100)] 
Porting/bench.pl: 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.

2 years agoPorting/bench.pl: add $done_read to do_grind()
David Mitchell [Sat, 17 Jun 2017 15:19:12 +0000 (16:19 +0100)] 
Porting/bench.pl: 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.

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

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

2 years agobench.pl re-organise option processing
David Mitchell [Sat, 10 Jun 2017 15:45:32 +0000 (16:45 +0100)] 
bench.pl 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
--show.

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).

2 years agoPorting/bench.pl: fix broken --bisect option
David Mitchell [Sat, 10 Jun 2017 13:54:11 +0000 (14:54 +0100)] 
Porting/bench.pl: 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.

2 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/bench.pl - 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
t/porting/bench_selftest.t.)

Its minimal at the moment; it will be added to as bugs in bench.pl are
addressed.

2 years agoPorting/bench.pl: allow 1 perl under --raw
David Mitchell [Fri, 9 Jun 2017 12:34:43 +0000 (13:34 +0100)] 
Porting/bench.pl: 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.

2 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 Bench.pl which doesn't just
invoke it with --action=selftest

2 years agoPorting/bench.pl: don't print usage on err
David Mitchell [Fri, 9 Jun 2017 10:57:03 +0000 (11:57 +0100)] 
Porting/bench.pl: 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.

2 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
files.

2 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.

2 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

2 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

2 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)
      CLEAR_POSIX_WARNINGS_AND_RETURN(42);

would have expanded to

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

2 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.

2 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

2 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

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

2 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

2 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

2 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.

2 years agoadd new release to perlhist 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

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

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

2 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

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

2 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]

2 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

2 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.

2 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
88b1365899.)

2 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
checks.

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

2 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

2 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

  [DELTA]

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 filter-util.pl 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

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

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.