3 weeks ago(perl #128316) preserve errno from failed system calls tonyc/128316-errno-sanity
Tony Cook [Thu, 16 Jun 2016 04:08:18 +0000]
(perl #128316) preserve errno from failed system calls

3 weeks ago[perl #127885] enhancements to bench.pl
Tony Cook [Wed, 15 Jun 2016 01:58:52 +0000]
[perl #127885] enhancements to bench.pl

3 weeks agoPorting/bench.pl --grindargs can be abused, usefully.
Jim Cromie [Tue, 12 Apr 2016 22:59:37 +0000]
Porting/bench.pl --grindargs can be abused, usefully.

Add an example where --grindargs='3>foobar' opens an extra file
descriptor for writing, and PERL_MEM_LOG=3 causes perl to log to the
file instead of STDERR, so that the output doesnt cause
parse_cachegrind() to choke, which would abort the test.

The example also demonstrates overriding default grind options, ie
--cachegrind-out-file=junk.$$.  This has no obvious utility at
present, and perhaps buries the lead.

3 weeks agoprovide per-PUT environment
Jim Cromie [Sun, 10 Apr 2016 22:43:46 +0000]
provide per-PUT environment

This patch lets user specify ENVAR=value pairs for individual PUTs,
thereby altering runtime behavior.  For some combination of module and
ENVAR, this should result in measurable benchmark differences.

This example benchmarks a PERL_MEM_LOG configured perl, 1st PUT with
PERL_MEM_LOG disabled, but enabled in the 2nd:

 $ perl Porting/bench.pl --jobs=2 \
   --verbose --debug --tests=/loop::for::pkg_/ \
   -- \
   perl5.23.9:+bare \
   perl5.23.9=+full:PERL_MEM_LOG=3mst,PERLIO=:stdio -MData::Dumper

this will run:

Command: PERL_HASH_SEED=0 PERLIO=:stdio PERL_MEM_LOG=3mst valgrind --tool=cachegrind  --branch-sim=yes --cachegrind-out-file=/dev/null  perl5.23.9  -MData::Dumper - 20 2>&1

Note that ':' is now a valid separator between the perl & label, but
not between ENVAR=value pairs, where a ',' is required.

3 weeks agoadd =+label feature, which appends the label to perl-name
Jim Cromie [Sun, 10 Apr 2016 17:58:11 +0000]
add =+label feature, which appends the label to perl-name

Using this reduces the burden of keeping each label unique,
simplifying the use of labels to name varying workloads created by
-Mfoo -M<something-heavy>

This enables an invocation like the following to run -DDEBUGGING
perls-A,B in bare mode, and heavily encumbered by -Dflag induced
overhead:

 $] perl Porting/bench.pl --jobs=2 \
    --tests=/loop::for::my/ \
    -- \
    perl-A=+bare perl-A=+workload -DpsltocPmfr \
    perl-B=+bare perl-B=+workload -DpsltocPmfr

Unfortunately, that example falls over, because the -D<blah> output
upsets cachegrind_parser.  That might be fixable by removing the
'2>&1' in the $cmd.  Nonetheless, workloads are constructible.

more prosaically:

 $] perl Porting/bench.pl --jobs=2 \
    --tests=/loop::for::my/ \
    -- perl5.18.2=+strict -Mstrict perl5.18.0=+dumper -MData::Dumper

yields:

Got eof for pid 11377 (loop::for::my_array4/perl5.18.0+dumper active/long loop)
...

loop::for::my_array4
empty for loop with my var and 4 integer array

       perl5.18.2+strict perl5.18.0+dumper
       ----------------- -----------------
    Ir            100.00            114.20
    Dr            100.00            119.35
    Dw            100.00            135.03
  COND            100.00             99.71
   IND            100.00            100.00

COND_m            100.00            119.64
 IND_m            100.00             92.31

 Ir_m1            100.00            100.00
 Dr_m1            100.00            100.00
 Dw_m1            100.00            100.00

 Ir_mm            100.00                 -
 Dr_mm            100.00                 -
 Dw_mm            100.00            100.00

AVERAGE

       perl5.18.2+strict perl5.18.0+dumper
       ----------------- -----------------
    Ir            100.00            114.56
    Dr            100.00            118.87
    Dw            100.00            133.30
  COND            100.00            100.41
   IND            100.00            100.00

COND_m            100.00             69.14
 IND_m            100.00             89.95

 Ir_m1            100.00            100.00
 Dr_m1            100.00            100.00
 Dw_m1            100.00            100.00

 Ir_mm            100.00            100.00
 Dr_mm            100.00            100.00
 Dw_mm            100.00            100.00

3 weeks agos/@results/@res_puts/ in process_puts
Jim Cromie [Sun, 10 Apr 2016 17:50:13 +0000]
s/@results/@res_puts/ in process_puts

3 weeks agoadd pod for PUT
Jim Cromie [Sun, 10 Apr 2016 13:46:40 +0000]
add pod for PUT

3 weeks agogrind_print: adjust for labels
Jim Cromie [Sun, 10 Apr 2016 06:15:31 +0000]
grind_print: adjust for labels

since HEAD~1, data is stored by the label, not the perlname.
simplify grind-print based upon this.

3 weeks agostore data using unique label, not perl-exe, which may be used 2x
Jim Cromie [Sun, 10 Apr 2016 06:06:50 +0000]
store data using unique label, not perl-exe, which may be used 2x

Since we want that a perl-name can be used in 2 separate PUTs, we
cannot use it alone to store PUT results.  Instead, use the PUTs
labels, which are enforced unique.

And use "$test/$label" instead of "$test/$perl" in debug msg, since
thats how we store it now.

This change has downstream data-indexing ramifications, which are not
fully understood yet, and which are NOT handled here.

3 weeks agoPorting/bench.pl: allow per-PUT (perl under test) options and modules
Jim Cromie [Sun, 10 Apr 2016 05:20:10 +0000]
Porting/bench.pl: allow per-PUT (perl under test) options and modules

Rework process_perls() to give a richer usage / API, allowing
additional command-line options, specific to each Perl-Under-Test.
For example:

  bench.pl -- perl=plain perl=slower -Mstrict -DmpMA

The above runs the same perl-exe for 2 different tests (PUTS), but
adds expensive debugging options to only the 2nd PUT.

Do this by changing strategy; we scan the list backwards, and
test/treat each item as a perlexe (ie qx/$perlexe -e 'print "ok"/).
Instead of dieing on a not-perl, they're collected and submitted as a
PUT once a $perlexe is found.

Added 'require_order' to terminate arg processing when '--' is
encountered on cmdline; without it the PUT options are in-validated by
GetOptions.

3 weeks agoPorting/bench.pl: protect against data loss
Jim Cromie [Sun, 10 Apr 2016 04:51:48 +0000]
Porting/bench.pl: protect against data loss

Due to %data storage using $perl_name (rather than $label),
blead silently loses data when running like so:

   perl Porting/bench.pl -- perl perl

patch complains about above, but allows following:

   perl Porting/bench.pl -- perl=FOO perl=BAR

With this 1/2 fix, we can further probe the underlying key probs,
evident in the results from above

   ...
   loop::for::lex_range4
   empty for loop with lexical var and 4 integer range

         BAR    BAR
      ------ ------
   Ir 100.00 100.00
   Dr 100.00 100.00

3 weeks agoprep grind-run to accept args from PUTs
Jim Cromie [Sun, 10 Apr 2016 04:45:25 +0000]
prep grind-run to accept args from PUTs

3 weeks agoPorting/bench.pl: --verbose assist on tests failure
Jim Cromie [Sun, 10 Apr 2016 04:33:10 +0000]
Porting/bench.pl: --verbose assist on tests failure

with --verbose, --tests=foo will fail loudly, so user can pick a test.

3 weeks ago(perl #128199) rmscopy() is VMS specific and not exported
Tony Cook [Wed, 15 Jun 2016 00:11:26 +0000]
(perl #128199) rmscopy() is VMS specific and not exported

The first is kind of implied by the text, but make it explicit.

Added minor punctuation fixes suggested by Reuben Thomas.

3 weeks agoFix customised for Encode
Chris 'BinGOs' Williams [Tue, 14 Jun 2016 17:19:40 +0000]
Fix customised for Encode

3 weeks agoUpdate META.json after JSON-PP update
Chris 'BinGOs' Williams [Tue, 14 Jun 2016 16:42:32 +0000]
Update META.json after JSON-PP update

3 weeks ago[PATCH] Bump Locale-Codes from 3.38 to 3.39
Sullivan Beck [Tue, 14 Jun 2016 16:33:26 +0000]
[PATCH] Bump Locale-Codes from 3.38 to 3.39

Signed-off-by: Chris 'BinGOs' Williams <[email protected]>

3 weeks agoUpdate JSON-PP to CPAN version 2.27400
Chris 'BinGOs' Williams [Tue, 14 Jun 2016 16:26:00 +0000]
Update JSON-PP to CPAN version 2.27400

  [DELTA]

2.27400  2016-04-23
  [JSON::PP] appleid and merged long term neglected patches & PRs.
             thanks to charsbar

  - document patches
    by AM909, leon[at]astray.com, dsteinbrunner, jwilk, alfiedotwtf
  - modified Makefile.PL to set UNINST=1 if needed on old perls
    by dagolden
  - decode decimals to Perl's internal NV type
    by dagolden

  see to https://github.com/makamaka/JSON-PP/commits/master

3 weeks agoUpdate HTTP-Tiny to CPAN version 0.058
Chris 'BinGOs' Williams [Tue, 14 Jun 2016 16:24:30 +0000]
Update HTTP-Tiny to CPAN version 0.058

  [DELTA]

0.058     2016-05-03 11:29:57-04:00 America/New_York

    - No changes from 0.057

0.057     2016-04-18 10:17:00-04:00 America/New_York (TRIAL RELEASE)

    [ADDED]

    - Added support for the SSL_CERT_FILE environment variable.

    - Added 'peer' attribute to force a connection to a particular
      server.

    - Added 'connected' method to allow introspection of persistent
      connections.

    - An array reference of redirection result hash references is included
      in the final response hash reference (but only if redirects occur).

    [CHANGED]

    - Because folded headers are obsoleted in the revised RFCs, if CRLF is
      found in header values followed by one or more spaces, they are all
      replaced by a single space.

    [FIXED]

    - Per the RFC, control headers are now sent first before other headers
      (which are sent in arbitrary order).

    - Only well-known headers have their case canonicalized; all other
      headers are sent in the case provided by the user.

    - The 'keep_alive' option now also sets the SO_KEEPALIVE option
      on the underlying socket to help with long-lived, idle connections.

    - Request header field values are now validated against the RFC rules
      (i.e. empty or else space-or-tab separated tokens of printable
      characters).

3 weeks agoUpdate Getopt-Long to CPAN version 2.49
Chris 'BinGOs' Williams [Tue, 14 Jun 2016 16:22:41 +0000]
Update Getopt-Long to CPAN version 2.49

[DELTA]

Changes in version 2.49
-----------------------

* Fix bug https://rt.cpan.org/Ticket/Display.html?id=114999

  Thanks Roy Ivy III for finding and fixing this.

* Fix bug https://rt.cpan.org/Ticket/Display.html?id=113748

  Thanks Tom Wyant for finding and fixing this.

3 weeks agoAPItest.xs: silence compiler warning
David Mitchell [Tue, 14 Jun 2016 09:34:12 +0000]
APItest.xs: silence compiler warning

3 weeks agoperlio.c: silence a couple of warnings
David Mitchell [Tue, 14 Jun 2016 09:24:30 +0000]
perlio.c: silence a couple of warnings

3 weeks ago[perl #128313] test for memory leak in POSIX classes
Dan Collins [Wed, 8 Jun 2016 20:26:07 +0000]
[perl #128313] test for memory leak in POSIX classes

3 weeks agoPOSIX.xs: avoid "defined but not used" warning
David Mitchell [Mon, 13 Jun 2016 10:36:06 +0000]
POSIX.xs: avoid "defined but not used" warning

The static function not_here() is used for any methods that aren't
implemented. On Linux at least, *all* methods are implemented, so you get:

POSIX.xs:1639:1: warning: ‘not_here’ defined but not used [-Wunused-function]
 not_here(const char *s)

Ensure at least one use of this function to avoid that warning.
A bit hacky, but I couldn't think of a better way.

3 weeks agoperldelta for 31b6f23ed55c
Tony Cook [Mon, 13 Jun 2016 01:12:47 +0000]
perldelta for 31b6f23ed55c

3 weeks ago[perl #126710] only touch pm_to_blib if files are copied
Tony Cook [Tue, 1 Dec 2015 05:10:55 +0000]
[perl #126710] only touch pm_to_blib if files are copied

Add checks similar to what the Makefile would do: only copy the
files if the source file is newer than pm_to_blib

4 weeks ago[perl #128260] Fix \substr %h
Father Chrysostomos [Sun, 12 Jun 2016 13:19:47 +0000]
[perl #128260] Fix \substr %h

This is a follow-up to 79409ac8, which propagated substr’s own lvalue
context to the first argument only if it was one that would not croak
at compile time.

We can’t propagate OP_REFGEN lvalue context to the first argument,
as it causes the same bug for which #128260 was originally reported;
namely, that it prevents a hash or array from being flattened, causing
an unflattened aggregate to follow code paths that expect only sca-
lars, resulting in assertion failures:

$ ./perl -Ilib -e '%h=1..100; print ${\substr %h, 0}'
Assertion failed: (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV && SvTYPE(sv) != SVt_PVFM), function Perl_sv_2pv_flags, file sv.c, line 2924.
Abort trap: 6
$ ./perl -Ilib -e '@h=1..100; print ${\vec @a, 0, 1}'
Assertion failed: (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV && SvTYPE(sv) != SVt_PVFM), function Perl_sv_2pv_flags, file sv.c, line 2924.
Abort trap: 6

4 weeks agoUpdate the notes on Synology/DSM
H.Merijn Brand [Sun, 12 Jun 2016 09:37:03 +0000]
Update the notes on Synology/DSM

4 weeks ago[perl #128260] Fix lvalue cx for substr and vec
Father Chrysostomos [Sat, 11 Jun 2016 01:08:50 +0000]
[perl #128260] Fix lvalue cx for substr and vec

When lvalue context was applied to the substr and vec at compile time,
that context was propagated to the first argument.  That meant that

    substr %foo, 1, = 3;

would correctly die, but give the wrong op in the error message, say-
ing ‘in scalar assignment’ whereas ‘in substr’ is more appropriate.

Contrariwise,

    (substr %foo, 1) = 3;

would apply list lvalue context to %foo, which does not die at compile
time and prevents flattening (that’s what allows %foo=... to work).

The unflattened hash would be passed to internal functions that only
expect scalars, resulting in assertion failures.

The fix is to introduce two new types of scalar lvalue context, namely
OP_SUBSTR and OP_VEC, and apply those to the first argument, causing
both the examples above to die at compile time with ‘Can't modify hash
dereference in substr’.

If the surrounding context is only potential modifiable context (such
as \substr), then that same non-fatal context is applied to the
first argument.

4 weeks agoop.c: Factor out common code for potential lv cx
Father Chrysostomos [Fri, 10 Jun 2016 15:54:56 +0000]
op.c: Factor out common code for potential lv cx

4 weeks agoMake lv keys distinguish scalar/list cx properly
Father Chrysostomos [Fri, 10 Jun 2016 15:49:59 +0000]
Make lv keys distinguish scalar/list cx properly

keys(%h) was special in that it did not use the same code path as
other ops that distinguish between scalar and list lvalue context.
Consequently, some scalar lvalue contexts worked:

    keys %h = 3;
    ${\scalar keys %h} = 3;
    sub { $_[0] = 3 }->(scalar keys %h);
    foreach(scalar keys %h) { $_ = 3 }
    grep { $_ = 3 } scalar keys %h;
    substr keys %h, 0, = 3;

while others did not:

    keys %h .= 0;
    read FH, keys %h, 0;

Fixing other bugs in the same code paths without breaking keys (or
adding *more* exceptions) is harder to do if keys is not consistent.
So this commit allows .= and read to assign to keys, by using the same
internal code (scalar_mod_type) that determines whether %h assignment
is allowed.  The logic is reversed (since %h is list-only and keys %h
is scalar-only), so where %h is a valid lvalue keys %h is not, and
vice versa.

4 weeks agobisect-runner.pl: Correct --no-module-tests example
Father Chrysostomos [Thu, 9 Jun 2016 19:30:14 +0000]
bisect-runner.pl: Correct --no-module-tests example

Copy-&-paste strikes again!

4 weeks agopod/*: remove deprecated L<"section"> and L<section> syntax
Lukas Mai [Sat, 11 Jun 2016 10:40:42 +0000]
pod/*: remove deprecated L<"section"> and L<section> syntax

4 weeks agoREADME*: remove deprecated L<"section"> and L<section> syntax
Lukas Mai [Sat, 11 Jun 2016 10:39:18 +0000]
README*: remove deprecated L<"section"> and L<section> syntax

4 weeks agoperldeltas: remove deprecated L<"section"> and L<section> syntax
Lukas Mai [Sat, 11 Jun 2016 10:07:23 +0000]
perldeltas: remove deprecated L<"section"> and L<section> syntax

4 weeks agohandy.h: remove deprecated L<"section"> syntax
Lukas Mai [Sat, 11 Jun 2016 10:06:41 +0000]
handy.h: remove deprecated L<"section"> syntax

4 weeks agoperlsyn: remove deprecated L<"section"> syntax
Lukas Mai [Sat, 11 Jun 2016 09:42:46 +0000]
perlsyn: remove deprecated L<"section"> syntax

... and fix a typo.

4 weeks agofixup, guard av_top_index() for null RExC_warn_text
Yves Orton [Fri, 10 Jun 2016 11:34:37 +0000]
fixup, guard av_top_index() for null RExC_warn_text

4 weeks agomove warning text to RExC_state (via RExC_warn_text)
Yves Orton [Fri, 10 Jun 2016 10:20:20 +0000]
move warning text to RExC_state (via RExC_warn_text)

This way we reuse the same AV each time, and avoid various refcount bookkeeping issues, all at a relatively modest cost (IMO)

4 weeks agoUpdates CPAN.pm to ANDK/CPAN-2.14-TRIAL.tar.gz
Sandbox [Wed, 8 Jun 2016 21:15:41 +0000]
Updates CPAN.pm to ANDK/CPAN-2.14-TRIAL.tar.gz

4 weeks ago[perl #128313] Fix leak in perl 5.24 with strict and regex posix char classes
Yves Orton [Wed, 8 Jun 2016 16:42:30 +0000]
[perl #128313] Fix leak in perl 5.24 with strict and regex posix char classes

This patch is a refinement of one written by Dan Collins.

Any thanks for this patch should go to him.

4 weeks agoperldelta for the 79881ad71252 merge
Tony Cook [Wed, 8 Jun 2016 06:41:38 +0000]
perldelta for the 79881ad71252 merge

4 weeks agoOnly produce perlio debug output when the -Di switch is supplied
Tony Cook [Wed, 8 Jun 2016 05:12:37 +0000]
Only produce perlio debug output when the -Di switch is supplied

4 weeks ago(perl #127380) Update PERLIO_DEBUG documentation.
Craig A. Berry [Thu, 14 Apr 2016 19:23:52 +0000]
(perl #127380) Update PERLIO_DEBUG documentation.

Now defaults to stderr if unspecified, and requires -Di (and thus
-DDEBUGGING).

TonyC: modify a couple of verbatim lines to bring them under the limit
enforced by the new podcheck.t changes

4 weeks ago(perl #127380) default PERLIO_DEBUG/-Di to use STDERR
Tony Cook [Thu, 7 Apr 2016 05:35:42 +0000]
(perl #127380) default PERLIO_DEBUG/-Di to use STDERR

This includes under taint, just as other -D switches write to stderr
when taint is on.

4 weeks ago(perl #127380) add tests for -Di
Tony Cook [Tue, 3 May 2016 00:41:15 +0000]
(perl #127380) add tests for -Di

4 weeks ago(perl #127380) only trace to $PERLIO_DEBUG if -Di is supplied
Tony Cook [Mon, 28 Mar 2016 03:58:56 +0000]
(perl #127380) only trace to $PERLIO_DEBUG if -Di is supplied

4 weeks agoUpdate to Test-Simple 1.302026
Chad Granum [Tue, 7 Jun 2016 15:04:02 +0000]
Update to Test-Simple 1.302026

    - Fix SHM leak
    - Update Porting/Maintainers.pl

4 weeks agoPorting/todo.pod: refaliasing needs fixing still
Father Chrysostomos [Tue, 7 Jun 2016 21:36:58 +0000]
Porting/todo.pod: refaliasing needs fixing still

I don’t know when I’ll be able to get to this.  This seems like a good
place to jot down the ideas that existed only in my head till now.

4 weeks agoPorting/todo.pod: Suggest Deparse improvements
Father Chrysostomos [Tue, 7 Jun 2016 21:17:38 +0000]
Porting/todo.pod: Suggest Deparse improvements

4 weeks agoop/lex_assign.t: fix intermittent failures
David Mitchell [Tue, 7 Jun 2016 16:41:20 +0000]
op/lex_assign.t: fix intermittent failures

The bulk of this test script tests whether ops which are capable of
the OA_TARGLEX optimisation return the same results with lexical and
package var assignments, i.e.

    my $a;
    $a = OP;
    $b = OP;
    is($a,$b);

When OP is 'time', the two calls can return different times, resulting in
occasional intermittent failures. So move time into it's custom test which
can cope with a delta of 1.

Similarly if the op is <*>, parallel testing can result in temporary files
appearing in the current directory, resulting in different returns.
However, since glob doesn't actually have the 'T' (OA_TARGLEX) set in
regen/opcodes, this test is moot - so skip it.

If glob ever does ever get OA_TARGLEX, and so need to be tested, it may
require some subtlety, such as globbing for a pattern that won't match any
temporary files.

4 weeks agoFix Pod-Checker version
Chris 'BinGOs' Williams [Tue, 7 Jun 2016 14:49:51 +0000]
Fix Pod-Checker version

4 weeks agoPorting/todo.pod: Add note to ‘repack the optree’
Father Chrysostomos [Tue, 7 Jun 2016 05:30:17 +0000]
Porting/todo.pod: Add note to ‘repack the optree’

4 weeks agoPorting/todo.pod: Hey, we have refaliasing
Father Chrysostomos [Tue, 7 Jun 2016 05:26:11 +0000]
Porting/todo.pod: Hey, we have refaliasing

4 weeks agoPorting/todo.pod: Rmv ‘LVALUE functions for lists’
Father Chrysostomos [Tue, 7 Jun 2016 05:25:19 +0000]
Porting/todo.pod: Rmv ‘LVALUE functions for lists’

$ ./perl -Ilib -e 'sub foo :lvalue{@hash{"foo","bar"}} (foo) = (3,4); use Data::Dumper; warn Dumper \%hash'
$VAR1 = {
          'foo' => 3,
          'bar' => 4
        };
$ ./perl -Ilib -e 'sub foo :lvalue{@arr[1,2]} (foo) = (3,4); use Data::Dumper; warn Dumper \@arr'
$VAR1 = [
          undef,
          3,
          4
        ];

Apparently slices do work.

4 weeks agoPorting/todo.pod: Update file name in ‘truncate() prototype’
Father Chrysostomos [Tue, 7 Jun 2016 05:21:11 +0000]
Porting/todo.pod: Update file name in ‘truncate() prototype’

4 weeks agoPorting/todo.pod: Point out problem with readpipe(LIST)
Father Chrysostomos [Tue, 7 Jun 2016 05:19:46 +0000]
Porting/todo.pod: Point out problem with readpipe(LIST)

4 weeks agoPorting/todo.pod: Suggest documenting XS & lex subs
Father Chrysostomos [Tue, 7 Jun 2016 05:13:42 +0000]
Porting/todo.pod: Suggest documenting XS & lex subs

4 weeks agoPorting/todo.pod: Delete strcat/strcpy test entry
Father Chrysostomos [Tue, 7 Jun 2016 05:11:15 +0000]
Porting/todo.pod: Delete strcat/strcpy test entry

We have t/porting/libperl.t.

4 weeks agoperldelta for 0a44e30b028e99
Tony Cook [Tue, 7 Jun 2016 05:11:44 +0000]
perldelta for 0a44e30b028e99

4 weeks ago[perl #127333] add warning for until(assignment)
Dan Collins [Tue, 7 Jun 2016 01:04:46 +0000]
[perl #127333] add warning for until(assignment)

while ($a = 1) emits a warning "Found = in conditional, should be ==".
However, until ($a = 1) does not. The parser breaks down until
(condition) into while (!(condition)), which defeats the check in
S_scalarboolean, since it is looking for a conditional that /is/ an
assignment, but we have a conditional that is a thinly veiled assignment.

A similar bug is [perl #127122]. That bug was fixed by treating
unless (a) {b} else {c} as if (a) {c} else {b}, instead of treating it
as if (!a) {b} else {c}. That approach will not work here.

Instead, the test in S_scalarboolean has been widened. It previously
looked for an OP_SASSIGN with op_first OP_CONST, it now also detects an
OP_NOT surrounding that construct.

Tests for both while() and until() were also added to t/lib/warnings/op.

4 weeks agoskip a Tets-Simple test that's leaking shm blocks
Tony Cook [Tue, 7 Jun 2016 01:30:03 +0000]
skip a Tets-Simple test that's leaking shm blocks

Reported upstream as

https://github.com/Test-More/test-more/issues/679

4 weeks agoPorting/todo.pod: Don't need pod fixes anymore
Karl Williamson [Mon, 6 Jun 2016 21:12:53 +0000]
Porting/todo.pod: Don't need pod fixes anymore

I recently fixed just about all the core perl pod errors that are
fixable, so this task can be considered completed.

4 weeks agoFix compiler warning -Wuninitialized
Andy Lester [Mon, 6 Jun 2016 19:13:53 +0000]
Fix compiler warning -Wuninitialized

4 weeks agoIncrease $XS::APItest::VERSION to 0.82
Father Chrysostomos [Mon, 6 Jun 2016 20:41:39 +0000]
Increase $XS::APItest::VERSION to 0.82

4 weeks agoAdd intro_my to XS::APItest::lexical_import
Father Chrysostomos [Mon, 6 Jun 2016 20:40:12 +0000]
Add intro_my to XS::APItest::lexical_import

so that code thieves will have some correct code to steal.

Without intro_my(), the lexical subs installed in a ‘use’ block will
not be visible to the following statement, but only the one after it.
BEGIN blocks already get intro_my called, so it worked already with a
BEGIN block, but not with ‘use’.

4 weeks ago(perl #127993) test reporting of multiple conflict markers
Tony Cook [Mon, 6 Jun 2016 00:43:48 +0000]
(perl #127993) test reporting of multiple conflict markers

4 weeks agouse yyerror instead of croaking immediately (RT #127993)
Lukas Mai [Sat, 4 Jun 2016 11:05:36 +0000]
use yyerror instead of croaking immediately (RT #127993)

5 weeks agoconstant: don't skip the E2BIG test on Hurd, but improve comments
Dominic Hargreaves [Sun, 5 Jun 2016 10:44:51 +0000]
constant: don't skip the E2BIG test on Hurd, but improve comments

As Father Chrysostomos explained on [perl #128319] the previous change
was based on a misunderstanding of the purpose of the test, which is
only to test that constant.pm can create a dualvar out of $! which
has an error string, and nothing specifically to do with E2BIG.

The new comments, also suggested by Father Chrysostomos, make this more
clear.

5 weeks agoconstant: skip E2BIG test on GNU/Hurd
Dominic Hargreaves [Sat, 4 Jun 2016 13:36:26 +0000]
constant: skip E2BIG test on GNU/Hurd

Hurd doesn't use 7 for E2BIG, so this string test would fail if the
test itself were more precise.

5 weeks agofix bogus "at end of line" error message for "my (my $x, $y, $z)"
Lukas Mai [Sat, 4 Jun 2016 10:44:57 +0000]
fix bogus "at end of line" error message for "my (my $x, $y, $z)"

5 weeks agospelling: s/delimeter/delimiter/
Lukas Mai [Sat, 4 Jun 2016 10:23:06 +0000]
spelling: s/delimeter/delimiter/

5 weeks ago[perl #128307] Fix ‘foo ? require : bar’
Father Chrysostomos [Fri, 3 Jun 2016 05:35:10 +0000]
[perl #128307] Fix ‘foo ? require : bar’

The lexer’s bareword-parser that kicks in after it sees ‘require’ was
getting confused by the single colon, since it assumed that if the
thing that followed began with a letter or colon it must be a package
or module name.  Hence, require with : after it was parsed as
require "", but with a ‘bareword’ "".  The lexer should be checking
for two colons, not just one.

5 weeks agoDon’t use yyerror for each($scalar) experiment err
Father Chrysostomos [Fri, 3 Jun 2016 05:10:04 +0000]
Don’t use yyerror for each($scalar) experiment err

This is a follow-up to 69e7f50e50.  69e7f50e50 resulted in yyerror
being called twice for the same error, resulting in double diagnos-
tics for where the error occurred:

$ ./perl -e 'keys $scalar, $1'
Experimental keys on scalar is now forbidden at -e line 1, near "$scalar,"
Type of arg 1 to keys must be hash or array (not scalar dereference) at -e line 1, near "$scalar,"
Execution of -e aborted due to compilation errors.

We don’t need ‘near "$scalar,"’ twice.

For the first one we should queue the error directly, using qerror()
(which yyerror itself normally calls), so we don’t get double
diagnostics.

5 weeks agoAdd Configure probe for strerror_l()
Aaron Crane [Thu, 2 Jun 2016 18:11:12 +0000]
Add Configure probe for strerror_l()

As requested by khw++

Until the relevant symbol is used, HAS_STRERROR_L must be mentioned
explicitly in metaconfig.h.

This corresponds to metaconfig d0838744f03cfe7642950ea91dd48f575d0bfd15.

5 weeks agoAdd Configure probe for querylocale()
Aaron Crane [Thu, 2 Jun 2016 18:04:49 +0000]
Add Configure probe for querylocale()

As requested by khw++

Until the relevant symbol is used, HAS_QUERYLOCALE must be mentioned
explicitly in metaconfig.h.

This corresponds to metaconfig 541f0dd272df4f9326996727898393ac8f6626f7.

5 weeks agoRebuild Configure from current metaconfig
Aaron Crane [Thu, 2 Jun 2016 17:56:02 +0000]
Rebuild Configure from current metaconfig

  Relevant changes:

  commit 5d3ffa97290d2d3d65a42a0ed8b69d945b661ee7
  Author: H.Merijn Brand - Tux <[email protected]>
  Date:   Sun May 29 15:30:33 2016 +0200

      Finish.U isn't modified anymore

      All changes accepted by upstream. One down, 164 to go

  commit 5d805d83bd4663831594540ddadeeb6213d19736
  Author: H.Merijn Brand - Tux <[email protected]>
  Date:   Sat May 14 18:48:26 2016 +0200

      Remove trailing whitespace on meta-lines in unit files

      This change has also been proposed as PR to dist upstream

  commit b9807b5fe3f4c97fa34e19b8a9b265f91f0e4aca
  Author: H.Merijn Brand - Tux <[email protected]>
  Date:   Sat May 14 18:30:03 2016 +0200

      Merged changes to Finish.U

5 weeks agoGet EUMM basic.t passing again on Win32.
Craig A. Berry [Thu, 2 Jun 2016 12:18:20 +0000]
Get EUMM basic.t passing again on Win32.

There are dueling uses of PERL_CORE.  On Windows, the FIXIN macro
assumes it can run pl2bat.bat from the installed Perl if PERL_CORE
is not set, so deleting PERL_CORE from the environment as this
test was doing makes you get the wrong one (or none at all).

But if PERL_CORE is set, the metafile target is not generated in
the Makefile, so you can't test that or things that depend on it
(e.g. disttest).  So at least for now, get basic.t passing by
skipping those tests.

5 weeks agoRenée Bäcker will be doing the October release, 5.25.10
Sawyer X [Wed, 1 Jun 2016 09:21:33 +0000]
Renée Bäcker will be doing the October release, 5.25.10

5 weeks agoallow ext/XS-APItest/t/win32.t to pass with both E: and T: drives
Tony Cook [Wed, 1 Jun 2016 07:23:05 +0000]
allow ext/XS-APItest/t/win32.t to pass with both E: and T: drives

Encountered while testing locally on Windows 7 x64.

cmd.exe stores the current directory for each drive as entries in the
environment, like:

  C:\Users\tony>set "" | findstr "^="
  =::=::\
  =C:=C:\Users\tony
  =D:=D:\ASM1061

When a Win32 build of perl built with USE_IMP_SYS starts up it saves
the current directories of each drive in a per-thread structure so
that each pseudo-forked process can have it's own set of drive current
directories.

If you run an external command, some versions of cmd.exe will add
an entry to the environment storing the result of that command, for
example:

  C:\Users\tony>set "" | find "ExitCode"

  C:\Users\tony>git status
  fatal: Not a git repository (or any of the parent directories): .git

  C:\Users\tony>set "" | find "ExitCode"
  =ExitCode=00000080

which is similar to the current directory entries.

The sloppy parsing by VDir::FromEnv[WA]() would treat that as a
current directory entry for the E: drive, copying the "tCode=...."
into the current directory.  Normally these values include a leading
drive letter and \, like "E:\", but this case leaves us without that.

Later, when harness spawns the child process it builds a new environment
block, including the drive current directories, which is done by
VDir::BuildEnvironmentSpace().  This, rather than using the index of
the drive to build the "=C:=..." entries above, uses the first
letter of the stored entry, so the environment block would have
something like:

  t:=tCode=00000080

which the child perl would treat as the current directory for the T:
drive.

5 weeks ago[perl #128294] bisect-runner.pl: --no-module-tests
Father Chrysostomos [Tue, 31 May 2016 13:32:16 +0000]
[perl #128294] bisect-runner.pl: --no-module-tests

5 weeks agoUnicode/UCD.t: better handling of errors
Karl Williamson [Mon, 30 May 2016 16:39:05 +0000]
Unicode/UCD.t: better handling of errors

This now looks for the PERL_DIFF_TOOL environment variable, and if found
uses that to display some problems.  If not found, it uses is(), with a
message that better output is available through setting this variable.

PERL_DIFF_TOOL is a convention I wasn't familiar with.

5 weeks agoAdd an example of the '0x' string format.
Jarkko Hietaniemi [Sat, 28 May 2016 17:56:27 +0000]
Add an example of the '0x' string format.

I am not certain that I find the 'leading zero means hex' format
recommendable ('0123' meaning '0x123', the octal format has poisoned
the well); but water under the bridge.

5 weeks agoModify hints for Hurd per Debian ticket 825020.
Samuel Thibault [Mon, 30 May 2016 15:11:00 +0000]
Modify hints for Hurd per Debian ticket 825020.

For:  RT #128279

Patch written by Samuel Thibault, forwarded by Dominic Hargreaves.

5 weeks agoUpdate Test-Simple in blead
Chad Granum [Mon, 30 May 2016 12:56:31 +0000]
Update Test-Simple in blead

This updates to the latest Test-Simple. This fixes several small bugs
including noisy STDERR in the test suite, and leaking TEMP files.

5 weeks agoop.c:S_my_kid: Remove obsolete comment
Father Chrysostomos [Sun, 29 May 2016 22:48:24 +0000]
op.c:S_my_kid: Remove obsolete comment

/* XXX does this let anything illegal in? */

The commit that added that comment indeed allowed ‘our $$x’ and even
‘my $$x’, so it was a problem at the time.  It was this commit:

commit 77ca0c92d2c0e47301d906d355d9ab3afb6f6bcb
Author: Larry Wall <[email protected]>
Date:   Fri Sep 24 14:59:37 1999 -0700

    Re: [PATCH 5.005_61] "our" declarations

This commit fixed the problem:

commit b6512f489e761186d508cf0b8b7705805cfefc52
Author: Mark-Jason Dominus <[email protected]>
Date:   Mon Dec 24 13:14:48 2001 -0500

    PATCH: Restore "Can't declare scalar dereference in my" error

so the comment is no longer relevant.

5 weeks ago[perl #128266] libperl.t: Ignore $UNIX2003 suffix
Father Chrysostomos [Sun, 29 May 2016 21:18:07 +0000]
[perl #128266] libperl.t: Ignore $UNIX2003 suffix

6 weeks agoext/POSIX/t/sigaction.t: Skip uid and pid tests on GNU/Hurd
Dominic Hargreaves [Sat, 28 May 2016 14:51:53 +0000]
ext/POSIX/t/sigaction.t: Skip uid and pid tests on GNU/Hurd

SA_SIGINFO does not include uid and pid on GNU/Hurd, and this is
unlikely to change in the near future, so skip these tests.

Thanks to Samuel Thibault for the report.

Bug-Debian: https://bugs.debian.org/825016

6 weeks agopodcheck.t: Include tr// and y// detection
Karl Williamson [Wed, 25 May 2016 19:22:26 +0000]
podcheck.t: Include tr// and y// detection

These are like regular expressions, and for syntactic purposes can be
treated as such.

6 weeks agoMerge branch to update Pod::Checker into blead
Karl Williamson [Fri, 27 May 2016 17:24:57 +0000]
Merge branch to update Pod::Checker into blead

This merge branch contains two commits, which should be considered
inseperable.  The first updates Pod::Checker, and the second changes
podcheck.t to use the new Pod::Checker.

This is the biggest remaining step in allowing Pod::Parser to be
removed from core.  podcheck.t still uses Pod::Parser to extract just
the pod from files.  That dependency can be removed when Pod::Simple
changes to allow equivalent functionality, something I myself am working
on.

There are two cpan .t files (both in pod2usage) that use subcomponents
of Pod::Parser (Pod::Find and Pod::PlainText).  There appears to be
similar functionality in Pod::Simple, so that shouldn't be too hard to
fix, but I haven't looked further than finding that these aren't drop-in
replacements.  The pod2usage maintainer has been notified.

6 weeks agopodcheck.t: Use new Pod::Checker
Karl Williamson [Wed, 25 May 2016 17:10:18 +0000]
podcheck.t: Use new Pod::Checker

podcheck.t extends the Pod::Checker class.  Pod::Checker has been
rewritten to base off of Pod::Simple instead of Pod::Parser, and so
podcheck.t must switch to use use the completely new methods defined.

6 weeks agoUpdate Pod::Checker to CPAN version 1.72
Karl Williamson [Wed, 25 May 2016 17:10:23 +0000]
Update Pod::Checker to CPAN version 1.72

This is now based on Pod::Simple instead of Pod::Parser

podcheck.t will fail until the next commit is done.

6 weeks agoSubject: Pod::Checker: convert files from DOS to unix
Karl Williamson [Thu, 26 May 2016 23:33:32 +0000]
Subject: Pod::Checker: convert files from DOS to unix

This is in preparation for applying patches to these.  git am failed on
these.  Only files that need to be DOS should be.

The version is bumped to 1.72, which is what version the real patches
are from.

6 weeks agopodcheck.t: Move a declaration
Karl Williamson [Wed, 25 May 2016 16:40:51 +0000]
podcheck.t: Move a declaration

This just moves a variable declaration and initialization to elsewhere
in the file where it can be used in a different place in a future
commit.  And it is now placed where it is more visible, as it really is
a program-level definition.

The code is outdented as well, and the comment unwrapped to be on a
single line, but no other changes were made.

6 weeks agoregcomp.c: Add shortcuts to some inversion list ops
Karl Williamson [Thu, 3 Mar 2016 21:24:39 +0000]
regcomp.c: Add shortcuts to some inversion list ops

When taking the union or intersection of two inversion lists, not
infrequently the result is the same as one of the inputs.  An example is
the union of a set that contains all code points with any other set.
The result is the set that contains all code points.  Also, not
infrequently, the result is to overwrite one of the inputs.  If the
other input contributed nothing to the result, the whole operation is
effectively a no-op, as the result has the same contents as the input it
overwrites.

It turns out that it is cheap to keep track of if just one input
contributes to the result.  This commit does that, and short-circuits
the rest of the code if it is going to turn out to be a no-op.

6 weeks agoext/VMS-DCLsym/DCLsym.pm: Fix missing pod reference
Karl Williamson [Thu, 26 May 2016 01:23:57 +0000]
ext/VMS-DCLsym/DCLsym.pm: Fix missing pod reference

This looks like it was meant to point to a later heading or item in the
document, but which was removed at some point, with the reference left
dangling.  I confirmed with Craig Berry that what it is referring to is
the text in the next paragraph.

6 weeks agoDevel::Peek: Fix a couple of pod glitches
Karl Williamson [Wed, 25 May 2016 04:14:59 +0000]
Devel::Peek: Fix a couple of pod glitches

6 weeks agoporting/dual-life.t: Clarify test messages
Karl Williamson [Wed, 25 May 2016 01:35:17 +0000]
porting/dual-life.t: Clarify test messages

This changes the message output by the ok() sub to show precisely what
is being tested

6 weeks agofix locale.c under -DPERL_GLOBAL_STRUCT(_PRIVATE)
David Mitchell [Wed, 25 May 2016 18:15:27 +0000]
fix locale.c under -DPERL_GLOBAL_STRUCT(_PRIVATE)

With that build option initialised statics aren't allowed (no BSS).
So just disable using $ENV{PERL_DEBUG_LOCALE_INIT} under
-DPERL_GLOBAL_STRUCT.

6 weeks agoporting/libperl.t: better diag output
David Mitchell [Wed, 25 May 2016 17:50:10 +0000]
porting/libperl.t: better diag output

when it complains about unexpected BSS symbols, list them