This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
6 years agoForce LONG_DOUBLEKIND always to be probed for.
Jarkko Hietaniemi [Sun, 2 Nov 2014 18:51:48 +0000 (13:51 -0500)]
Force LONG_DOUBLEKIND always to be probed for.

6 years agoConfigure: 84e6cb05 left quadmath detritus to longdblkind testing.
Jarkko Hietaniemi [Sun, 2 Nov 2014 15:55:14 +0000 (10:55 -0500)]
Configure: 84e6cb05 left quadmath detritus to longdblkind testing.

6 years agoConfigure: echo the less common long double kinds.
Jarkko Hietaniemi [Sun, 2 Nov 2014 15:52:03 +0000 (10:52 -0500)]
Configure: echo the less common long double kinds.

6 years agoConfigure: add doublekind for the format of double.
Jarkko Hietaniemi [Sun, 2 Nov 2014 15:48:43 +0000 (10:48 -0500)]
Configure: add doublekind for the format of double.

6 years agoDefine my_rint() only when necessary.
Jarkko Hietaniemi [Fri, 31 Oct 2014 01:21:14 +0000 (21:21 -0400)]
Define my_rint() only when necessary.

6 years agoUpdate Test-Simple to alpha 071
Chad Granum [Sun, 2 Nov 2014 05:29:19 +0000 (22:29 -0700)]
Update Test-Simple to alpha 071

6 years agoop/index.t: Fix tests for EBCDIC
Karl Williamson [Tue, 26 Mar 2013 20:06:50 +0000 (14:06 -0600)]
op/index.t: Fix tests for EBCDIC

Commit 8a38a836 erroneously translates literals into the native
encoding, causing a double translation, which is garbage.

6 years agoregen/ebcdic.pl: Allow making tables in hex
Karl Williamson [Thu, 19 Jun 2014 21:28:45 +0000 (15:28 -0600)]
regen/ebcdic.pl: Allow making tables in hex

This allows the source to be easily edited to create ebcdic translations
tables in hex which is easier to debug, but won't fit in an 80 column
window.  I suppose it could be controlled by an environment variable,
but for now, it's just going to be hard-set to 1 or 0.

6 years agot/re/regexp.t: Properly handle \c?[ in regex_sets
Karl Williamson [Tue, 21 Oct 2014 16:22:01 +0000 (10:22 -0600)]
t/re/regexp.t: Properly handle \c?[ in regex_sets

t/re/regex_sets.t is actually handled by regexp.t, skipping all tests
that don't have a [bracketed character class].  Prior to this commit,
\[ and \c[ were thought to be such a class, when in fact they aren't.

6 years agoMakefile.SH: Fix so works in EBCDIC
Yaroslav Kuzmin [Fri, 24 Oct 2014 18:01:33 +0000 (12:01 -0600)]
Makefile.SH: Fix so works in EBCDIC

6 years agot/uni/variables.t: Fix typo
Karl Williamson [Fri, 24 Oct 2014 17:54:15 +0000 (11:54 -0600)]
t/uni/variables.t: Fix typo

This caused failures only in EBCDIC.  The variable $chr is what was
intended, but due to a missing '$', we got the variable $_ which differs
from $chr only on EBCDIC.

6 years agoregcomp.c: Comment fixes
Karl Williamson [Tue, 28 Oct 2014 16:04:37 +0000 (10:04 -0600)]
regcomp.c: Comment fixes

6 years agoperlfunc: Mention map {;...} convention
Father Chrysostomos [Sat, 1 Nov 2014 05:30:21 +0000 (22:30 -0700)]
perlfunc: Mention map {;...} convention

since it is probably more common than { +... }.

6 years ago$a,$b deprecation in perlop.pod.
Shlomi Fish [Wed, 29 Oct 2014 09:43:19 +0000 (11:43 +0200)]
$a,$b deprecation in perlop.pod.

For: RT #123081 (partial)

6 years agoMove away from $a and $b for examples.
Shlomi Fish [Wed, 29 Oct 2014 09:19:21 +0000 (11:19 +0200)]
Move away from $a and $b for examples.

pod/perlvar.pod this time.

For: RT #123081 (partial)

6 years agoMove the POD away from $a and $b.
Shlomi Fish [Wed, 29 Oct 2014 09:06:30 +0000 (11:06 +0200)]
Move the POD away from $a and $b.

They are built ins and should not be used or overrided. Currently doing
pod/perlthrtut.pod .

For: RT #123081 (partial)

6 years agoUpdate Test-Simple to alpha 070
Chad Granum [Fri, 31 Oct 2014 22:43:23 +0000 (15:43 -0700)]
Update Test-Simple to alpha 070

Fix thread issue from 069

6 years agofree up CvPADLIST slot for XSUBs for future use
Daniel Dragan [Fri, 31 Oct 2014 07:23:17 +0000 (03:23 -0400)]
free up CvPADLIST slot for XSUBs for future use

CvRESERVED is a placeholder, it will be replaced with a sentinal value
from future revised BOOTCHECK API.

CvPADLIST_set was helpful during development of this patch, so keep it
around for now.

PoisonPADLIST's magic value is from PERL_POISON 0xEF pattern. Some
PoisonPADLIST locations will get code from future BOOTCHECK API.

Make padlist_dup a NN function to avoid overhead of calling it for XSUBs
during closing.

Perl_cv_undef_flags's else if (CvISXSUB(&cvbody)) is to avoid whitespace
changes.

Filed as perl [#123059].

6 years agoBump XSLoader version after 4821216b2814.
Craig A. Berry [Fri, 31 Oct 2014 18:26:32 +0000 (13:26 -0500)]
Bump XSLoader version after 4821216b2814.

6 years agoBump POSIX version following a7ea4c68ecf.
Craig A. Berry [Fri, 31 Oct 2014 18:23:40 +0000 (13:23 -0500)]
Bump POSIX version following a7ea4c68ecf.

6 years agoReplace Test::More with t/test.pl in DynaLoader.t.
Craig A. Berry [Fri, 31 Oct 2014 14:46:43 +0000 (09:46 -0500)]
Replace Test::More with t/test.pl in DynaLoader.t.

Test::More has dependencies on dynamically loaded modules and thus
isn't appropriate for running a basic test of whether dynamic
loading is working.  Plus it provides no features we're using
that aren't also in t/test.pl.  (Just had to make the second
argument to like() a regex instead of a string.)

6 years agoXS::APItest, svpeek.t: Test the correct thing
Brian Fraser [Thu, 30 Oct 2014 15:45:30 +0000 (16:45 +0100)]
XS::APItest, svpeek.t: Test the correct thing

6 years agoXSLoader: Amend the mod2fname generation to detect more cases
Brian Fraser [Thu, 30 Oct 2014 13:34:39 +0000 (14:34 +0100)]
XSLoader: Amend the mod2fname generation to detect more cases

6 years agoPOSIX/t/posix.t: Fix skip count for localeless systems
Brian Fraser [Thu, 30 Oct 2014 12:23:05 +0000 (13:23 +0100)]
POSIX/t/posix.t: Fix skip count for localeless systems

6 years agoPOSIX: C99 support exceptions on Android
Brian Fraser [Mon, 6 Oct 2014 21:34:45 +0000 (23:34 +0200)]
POSIX: C99 support exceptions on Android

6 years agoAndroid hints: No locales here, so undef d_lc_monetary_2008
Brian Fraser [Mon, 29 Sep 2014 18:34:02 +0000 (20:34 +0200)]
Android hints: No locales here, so undef d_lc_monetary_2008

6 years agooverload.pm: Removed an unused variable
Brian Fraser [Mon, 29 Sep 2014 18:33:19 +0000 (20:33 +0200)]
overload.pm: Removed an unused variable

6 years agoUpdate to Test-Simple Alpha 068
Chad Granum [Thu, 30 Oct 2014 22:31:35 +0000 (15:31 -0700)]
Update to Test-Simple Alpha 068

 * performance enhancements
 * bug fixes
 * comaptability improvements

6 years agoSpecial handling of Cwd and List::Util in configure.com.
Craig A. Berry [Thu, 30 Oct 2014 22:20:42 +0000 (17:20 -0500)]
Special handling of Cwd and List::Util in configure.com.

This is a follow-up to d689efaf4740b25, where the same thing was
done to Configure.  They weren't getting into $Config{dynamic_ext}
which caused DynaLoader.t to start failing once Test::More started
requiring List::Util.

I question the wisdom of expecting dynamic loading to be working
flawlessly before we can test whether dynamic loading is working
at all.

6 years agoDecouple quadmath from longdouble.
Jarkko Hietaniemi [Thu, 30 Oct 2014 01:30:18 +0000 (21:30 -0400)]
Decouple quadmath from longdouble.

6 years agoUnixify the new Test::Simple temp dir on VMS.
Craig A. Berry [Thu, 30 Oct 2014 02:42:32 +0000 (21:42 -0500)]
Unixify the new Test::Simple temp dir on VMS.

We're going to be combining the temporary directory with hard-coded
forward slashes in various path components, so make sure the thing
we're appending to is also in Unix format.

Without this the core test suite on a threaded build hangs in
Thread::Queue because the Test::Simple bug causes lots of things to
fail and Thread::Queue doesn't handle threads that fail.

Hopefully submitted upstream at

<https://github.com/Test-More/test-more/issues/468>

but I have no idea what the relationship is between Test::More
and Test::Simple -- I just followed the link from search.cpan.org
and tried to open an "issue."

6 years agot/base/lex.t: Dodge warning
Father Chrysostomos [Thu, 30 Oct 2014 01:05:57 +0000 (18:05 -0700)]
t/base/lex.t: Dodge warning

Spotted by Jarkko Hietaniemi.

6 years agorefactor Perl_cv_undef_flags
Daniel Dragan [Wed, 29 Oct 2014 06:56:16 +0000 (02:56 -0400)]
refactor Perl_cv_undef_flags

On VC 2003 32bits size of this function decreased from 0x321 bytes of
machine code to 0x2d8.

cv.h:
- partially reorder Cv* macros to match XPVCV member order
- create CvDEPTHunsafe which never uses SV head except for SvANY ptr since
  Perl_cv_undef_flags uses a fake SV head

pad.c
- remove var slabbed, frees a C auto/non-vol register, there are only 2
  uses, on CvSTART branch, CvFLAGS is reused frm CvISXSUB test by optimizer
- use a CV struct to fake a CV, to avoid rereading SvANY ptr after each
  func call, CVs can't be upgraded or have their bodies realloced
- dont write NULL to CvFILE if CvFILE is NULL, also move NULL assignment
  so CPU address generation can be reused by compiler
- refactor CvROOT/CvSTART/CvXSUB freeing conditionals to simplify code and
  dont check CvISXSUB twice
- CvDEPTH requires a real CV*/CV*, since it checks the SV head with an
  assert, use CvDEPTHunsafe instead, and inline the assert using the real
  CV*. Also move runtime, non-debug "SvTYPE(cv) == SVt_PVCV" check to
  debug  builds per ML post
  "about FC commit "CV-based slab allocation for ops""
- Perl_croak->Perl_croak_nocontext, remove push arg my_perl instruction
- refactor CvPADLIST freeing for provision for future XSUB sub usage of
  CvPADLIST in a union
- in CvOUTSIDE freeing, move NULL assignment so CPU address generation can
  be reused by compiler

6 years agoReduce the number of null ops for \$x=\$y
Father Chrysostomos [Wed, 29 Oct 2014 05:07:16 +0000 (22:07 -0700)]
Reduce the number of null ops for \$x=\$y

Assignment to a reference to a package var or element leaves extra
null ops that I didn’t bother removing before because it was incon-
venient.  And I didn’t think the first iteration of the code needed
to do that.

However, all these ops are doing is taking up memory, so this commit
removes some of them.

For scalar assignment, \$x = ... becomes:

  refassign
    rhs expression...
    ex-srefgen
      ex-list
        ex-rv2sv
          gv

The refassign op uses the GV directly, so we can remove all three ex-
ops on the lhs.  For elements, we have

  refassign
    rhs expression...
    ex-srefgen
      ex-list
        ex-aelem (or -helem)
          rv2av
            expression inside ${...}[0]
          index or key

which means refassign gets three arguments.  To make deparsing easier,
we’ll just remove the ex-srefgen and ex-list, leaving the left-hand
expression under a single node (ex-aelem).

Assignment to lexical scalar references was already obliterating the
left-hand expression completetly.

For list assignment, it’s much harder to do, so I’ll leave it for now.

6 years agoUpdate Test-Simple to alpha 065
Chad Granum [Wed, 29 Oct 2014 04:35:07 +0000 (21:35 -0700)]
Update Test-Simple to alpha 065

This includes a patch from Father Chrysostomos which was already in
blead. An additional fix to some windows configs. And a version bump.

6 years agoManual revert of 0f83c5a4.
Jarkko Hietaniemi [Tue, 28 Oct 2014 23:15:42 +0000 (19:15 -0400)]
Manual revert of 0f83c5a4.

(Automatic revert didn't work any more because of too many intervening
overlapping changes.)

The 0f83c5a4 tried avoiding coercing Inf/NaN to IV/UV, but it also
introduced 20-25% slowdown in floating point operations, because of
repeated redundant calling of Perl_isinfnan().  There was noticeable
compiler dependency: the effect was especially visible with gcc 4.8.
Please see the thread "significant slowdown in float arithmetic" by
Dave Mitchell, Message-Id: 20141025155040.GR5204@iabyn.com

6 years agosemctl() on cygwin throws SIGSYS if the cygserver isn't running
Tony Cook [Wed, 29 Oct 2014 03:50:54 +0000 (14:50 +1100)]
semctl() on cygwin throws SIGSYS if the cygserver isn't running

6 years agoDemonstrate that RT #121360 has been resolved.
James E Keenan [Tue, 21 Oct 2014 23:29:33 +0000 (19:29 -0400)]
Demonstrate that RT #121360 has been resolved.

Bug report filed by James Avera argued that "File::Spec->abs2rel($path, $base)
is supposed to allow $path and/or $base to be relative to the current working
directory, and the pod says that if either are relative, they are converted to
absolute using 'rel2abs()'."

The cases reported as failing were subsequently reported as passing.  Adding a
test file to confirm this.  TODO:  Adapt test for VMS.

For: RT #121360

6 years ago[perl #122782] map{no strict;...} etc.
Father Chrysostomos [Tue, 28 Oct 2014 23:52:18 +0000 (16:52 -0700)]
[perl #122782] map{no strict;...} etc.

After the lexer (toke.c) has decided in the case of ‘map{’ or ‘print{’
that it has a block, not a hash constructor, it has then preceded to
treat the contents as an expression.

Since it is the parser (perly.y) that ultimately decides whether it is
an expression or statement, most of the time things just work.  But in
those cases where the lexer behaves differently whether it is expect-
ing a statement or expression, it usually just does the wrong thing.
Most notable is map {no strict;...}, which dies with ‘"no" not
allowed in expression’.  See the RT ticket for more examples of the
term/statement discrepancies.

This commit changes it to expect a statement most of the time.  These
changes also apply to the contents of ${...}, which has always fol-
lowed the same rules.  Two cases where it used simply to dwim that
would break with a statement expectation are special-cased, to pre-
serve backward-compatibility as much as possible.  See the comments
added to toke.  We already have an exception for ‘sub’ in the case of
${sub{...}}, which is not treated as $sub{...} as happens with other
barewords, so this is consistent with that.

6 years ago[perl #122829] Flip-flop under recursion
Father Chrysostomos [Tue, 28 Oct 2014 21:34:28 +0000 (14:34 -0700)]
[perl #122829] Flip-flop under recursion

Each recursion level of a sub was maintaining separate states for
flip-flop operators within the sub, contrary to the documentation.

This commit makes different recursion levels share the same internal
state.  Closures have been keeping separate state, so I have preserved
that behaviour.  This makes flip-flop state have the same scope as
state variables, so the pad entries used by flip-flop operators can be
allocated just like state vars.

6 years agosplit.t: More tests for perl #123057
Father Chrysostomos [Tue, 28 Oct 2014 21:34:10 +0000 (14:34 -0700)]
split.t: More tests for perl #123057

There are three different variants to split-to-array, so test that
op_lvalue_flags can handle all three.

6 years agoConsistent spaces after dots in perlapi.pod
Father Chrysostomos [Mon, 27 Oct 2014 11:09:03 +0000 (04:09 -0700)]
Consistent spaces after dots in perlapi.pod

6 years agotest line numbers in arity errors
Lukas Mai [Tue, 28 Oct 2014 20:24:43 +0000 (21:24 +0100)]
test line numbers in arity errors

6 years agofix line numbers in arity errors [#121374]
Lukas Mai [Mon, 27 Oct 2014 21:32:34 +0000 (22:32 +0100)]
fix line numbers in arity errors [#121374]

6 years agoRestore previous Test::More::skip functionality
Father Chrysostomos [Mon, 27 Oct 2014 19:49:15 +0000 (12:49 -0700)]
Restore previous Test::More::skip functionality

Even though it would warn about no skip count, it would default to 1.
The latest alpha breaks that, causing test failures on Windows.

6 years agoUpdate to Test::More alpha 064
Chad Granum [Mon, 27 Oct 2014 04:32:27 +0000 (21:32 -0700)]
Update to Test::More alpha 064

 * Fixes some docs
 * Fixes TODO behavior change

6 years agosilence new compiler warning
David Mitchell [Mon, 27 Oct 2014 15:24:45 +0000 (15:24 +0000)]
silence new compiler warning

8b9781c905d8 added a new arg to regprop(), but it's only used on debugging
builds. Also, moving the definition of regprop() in embed.fnc left a
stranded comment, so delete that too.

6 years agoUpdate Digest-SHA to CPAN version 5.93
Chris 'BinGOs' Williams [Mon, 27 Oct 2014 10:05:32 +0000 (10:05 +0000)]
Update Digest-SHA to CPAN version 5.93

  [DELTA]

5.93  Sun Oct 26 06:00:48 MST 2014
  - corrected alignment problem in SHA struct (src/sha.h)
    -- thanks to H. Merijn Brand and J. Hietaniemi for
      analysis and suggested patch
  - provided workaround in t/methods.t for unreliable -T test
    -- Some Perl 5.8's mistake text for binary

6 years agoUpdate experimental to CPAN version 0.013
Chris 'BinGOs' Williams [Mon, 27 Oct 2014 09:59:24 +0000 (09:59 +0000)]
Update experimental to CPAN version 0.013

  [DELTA]

0.013     2014-10-25 21:54:47+02:00 Europe/Amsterdam
          Rename lvalue_refs to refaliasing

6 years agoPerlIO_list_push() accepts a non-const PerlIO_funcs pointer
Tony Cook [Mon, 27 Oct 2014 03:35:53 +0000 (14:35 +1100)]
PerlIO_list_push() accepts a non-const PerlIO_funcs pointer

but under -DPERL_GLOBAL_STRUCT_PRIVATE, most PerlIO_funcs objects
and pointers are const, so cast to match the function parameter.

This was broken by f814d560e84f which changed from looking up the
layer by the name in tab (or osLayer) to adding those directly.

6 years ago[perl #123057] Allow split-to-array in lvalue context
Father Chrysostomos [Mon, 27 Oct 2014 00:01:07 +0000 (17:01 -0700)]
[perl #123057] Allow split-to-array in lvalue context

In some cases @a=split gets optimised to something akin to split(\@a,
...) or split(..., \@a), so lvalue context applied to it sees a split
op instead of a list assignment.  And split can’t be assigned to.  So (@a=split//,"foo")=bar() fails.  This bug probably goes back to perl
3, when this optimisation was added.

(Actually, the array is usually stowed away in the pushre op that
holds the regular expression, though sometimes it becomes the last
argument.)

Recent commits such as ef7999f have extended this optimisation, so
it happens in more places, and ended up breaking chomp(my @array =
split...).

This commits checks specifically for split-to-array when lvalue con-
text is applied.

6 years agoTest file fails to compile.
James E Keenan [Sun, 26 Oct 2014 14:14:40 +0000 (10:14 -0400)]
Test file fails to compile.

For: RT #123057

6 years agofix type incompatibilities between format strings/args
Lukas Mai [Sun, 26 Oct 2014 11:11:36 +0000 (12:11 +0100)]
fix type incompatibilities between format strings/args

Building a debugging perl triggered warnings such as

warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘U32’
warning: field width specifier ‘*’ expects argument of type ‘int’, but argument 5 has type ‘long unsigned int’
warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘wchar_t’

6 years agorename convert to op_convert_list and APIfy
Lukas Mai [Sun, 26 Oct 2014 10:17:47 +0000 (11:17 +0100)]
rename convert to op_convert_list and APIfy

6 years ago[MERGE] add t/perf/ hierarchy
David Mitchell [Sun, 26 Oct 2014 16:54:08 +0000 (16:54 +0000)]
[MERGE] add t/perf/ hierarchy

Add some new files that help with testing and measuring
performance-related issues.

6 years agofix 't/TEST -benchmark'
David Mitchell [Tue, 21 Oct 2014 14:44:44 +0000 (15:44 +0100)]
fix 't/TEST -benchmark'

This has never worked, as it would look for t/benchmark/*.t files in
the wrong place.

6 years agoadd note about t/perf/ to t/README
David Mitchell [Tue, 21 Oct 2014 14:43:01 +0000 (15:43 +0100)]
add note about t/perf/ to t/README

6 years agoadd t/perf/benchmarks, t/perf/benchmarks.t
David Mitchell [Tue, 21 Oct 2014 14:26:08 +0000 (15:26 +0100)]
add t/perf/benchmarks, t/perf/benchmarks.t

t/perf/benchmarks is a file intended to contain snippets of code
that can be usefully benchmarked or otherwise profiled.

The basic idea is that any time you add an optimisation that is intended
to make a particular construct faster, then you should add that construct
to this file.

Under the normal test suite, the test file benchmarks.t does a basic
compile and run of each of these snippets; not to test performance,
but just to ensure that the code doesn't have errors.

Over time, it is intended that various measurement and profiling tools
will be written that can run selected (or all) snippets in various
environments. These will not be run as part of a normal test suite run.

6 years agoadd t/perf/speed.t
David Mitchell [Tue, 21 Oct 2014 13:03:21 +0000 (14:03 +0100)]
add t/perf/speed.t

This test file is similar to /re/speed.t, but to test general-purpose
optimisations.

The idea is to run snippets of code that are 100s or 1000s times slower
if a particular optimisation is broken. We are not so much interested
in the individual tests passing, as in the whole file failing with a
watchdog timeout (or just observing that it running more slowly)

6 years agot/perf/optree.t: expand blurb
David Mitchell [Tue, 21 Oct 2014 12:49:10 +0000 (13:49 +0100)]
t/perf/optree.t: expand blurb

explain (kind of) why this file is called optree.t

6 years agorename t/op/opt.t -> t/perf/optree.t
David Mitchell [Tue, 21 Oct 2014 12:41:16 +0000 (13:41 +0100)]
rename t/op/opt.t -> t/perf/optree.t

Now that we have a directory, t/perf/, for perfomance /optimsation
tests, move this test file there, and rename to something slightly
clearer.

6 years agoadd t/perf/, t/perf/opcount.t
David Mitchell [Tue, 21 Oct 2014 12:25:25 +0000 (13:25 +0100)]
add t/perf/, t/perf/opcount.t

Add a new directory designed to hold performance / optimising tests
and infrastructure, and add the first test file, opcount.t, that
checks that a sub has the right numbers of particular op types

6 years agoImport Test-More 1.301001 alpha 63
Chad Granum [Thu, 23 Oct 2014 19:03:23 +0000 (12:03 -0700)]
Import Test-More 1.301001 alpha 63

6 years agotoke.c: Report the proper type for assign ops
Father Chrysostomos [Sat, 25 Oct 2014 23:38:31 +0000 (16:38 -0700)]
toke.c: Report the proper type for assign ops

For combined assignment operators like *= and +=, the lexer passes an
ASSIGNOP token to the parser, but the -DT output said MULOP or ADDOP;
i.e., it was reporting the type *before* the check for a following
‘=’, instead of after it.

6 years agoOptimise ($foo)x1 and ($foo)x0 in list cx
Father Chrysostomos [Tue, 21 Oct 2014 06:29:01 +0000 (23:29 -0700)]
Optimise ($foo)x1 and ($foo)x0 in list cx

If the repeat count is 1, then we simply remove the repetition operator
and have the ops of the lhs evaluated, regardless of what they are.

If the repeat count is 0, then we only optimise if the lhs is a simple
scalar or constant.  We optimise the whole thing down to the empty
list.

This only happens currently for integer constants on the right-
hand side.

In the 0 case it could be extended to multiple scalars/constants, but
that would be more work.

6 years agoDeparse list repetition assignment properly
Father Chrysostomos [Sat, 25 Oct 2014 21:41:52 +0000 (14:41 -0700)]
Deparse list repetition assignment properly

This only applies to the almost useless case of nothing but a repetition
on the lhs of list assignment:  ((undef)x3) = foo();

Other cases where the repetition is part of a larger list already
deparsed correctly.

Checking whether the lhs begins with a parenthesis is not sufficient
to determine whether the lhs is parenthesized.  I believe repetition
is the only binary op other than the comma that is allowed on the
lhs, so we can just check for that in the op tree.

6 years agoMake repeat op tree more consistent
Father Chrysostomos [Sat, 25 Oct 2014 20:58:56 +0000 (13:58 -0700)]
Make repeat op tree more consistent

Formerly, ck_repeat would sometimes make the right-hand argument of
list repetition accessible via cBINOPo->op_last and sometimes via
cLISTOPx(cBINOP->op_first)->op_last.

In the case of ($x)x1,

  repeat
    rv2sv
      gv
    const

would become

  repeat
    ex-list
      pushmark
      rv2sv
        gv
      const

while in the case of ($x,$y)x1,

  repeat
    list
      pushmark
      rv2sv
        gv
      rv2sv
        gv
    const

would just have the list changed to an ex-list.

Having the right-hand argument accessible from two different places
makes things more complicated elsewhere in op.c, so keep the second
kid where it was.

The old approach was to detach all kids, and then wrap them in a list
op if the first kid was not a list already.  Instead, just detach the
first kid.

6 years agofix change description has incorrect proto
Doug Bell [Sat, 25 Oct 2014 22:32:59 +0000 (17:32 -0500)]
fix change description has incorrect proto

The incompatible change deals with the (*) proto

6 years agoMove newDEFSVOP into the right perlapi.pod section
Lukas Mai [Sat, 25 Oct 2014 10:25:14 +0000 (12:25 +0200)]
Move newDEFSVOP into the right perlapi.pod section

6 years agoop.c: Fix C++-incompatible typo
Father Chrysostomos [Sat, 25 Oct 2014 20:09:24 +0000 (13:09 -0700)]
op.c: Fix C++-incompatible typo

from 82209a5d9db5.

6 years agounbreak threaded builds
Lukas Mai [Sat, 25 Oct 2014 19:51:11 +0000 (21:51 +0200)]
unbreak threaded builds

6 years agoperldata: Document list repetition assignment
Father Chrysostomos [Sat, 25 Oct 2014 18:56:12 +0000 (11:56 -0700)]
perldata: Document list repetition assignment

6 years agoAllow list assignment to list repetition
Father Chrysostomos [Sat, 25 Oct 2014 18:49:57 +0000 (11:49 -0700)]
Allow list assignment to list repetition

(undef,undef,undef,$foo,$bar)=that_function();

can now be written as

((undef)x3, $foo, $bar) = that_function();

Furthermore, (($a)x$assign_to_a,$b) = @c will include $a in the list
of variables ta assign to if $assign_to_a is 1, assign $c[0] to $b
if $assign_to_a is 0.  In other words, assuming $assign_to_a is 1 or
0, it is equivalent to:

($assign_to_a ? ($a, $b) : $b) = @c

6 years agoAPIfy block_start/block_end/intro_my
Lukas Mai [Sat, 25 Oct 2014 10:25:14 +0000 (12:25 +0200)]
APIfy block_start/block_end/intro_my

6 years agoRemove redundant op_lvalue calls in perly.y
Father Chrysostomos [Sat, 25 Oct 2014 04:38:01 +0000 (21:38 -0700)]
Remove redundant op_lvalue calls in perly.y

When (\$x)=\$y is compiled, the \ on the lhs gives lvalue context to
its argument by calling op_lvalue.  Then later the = gives lvalue con-
text to the \, calling op_lvalue again, which transforms the $x into
an lvref op (via op.c:S_lvref).

I just copied that logic when I extended aliasing via reference to
foreach \$x.  But here, we don’t need to call op_lvalue on the $x,
because we know it is going to go through op.c:S_lvref, which doesn’t
care whether it has been through op_lvalue already or not.  The end
result is the same.

6 years agodo not lock files when doing open() on :win32 layer
Daniel Dragan [Fri, 12 Sep 2014 19:36:34 +0000 (15:36 -0400)]
do not lock files when doing open() on :win32 layer

MS CRT uses _SH_DENYNO flag internally for all open() calls. Not passing
FILE_SHARE_READ and FILE_SHARE_WRITE to CreateFile means we want exclusive
access to the file, otherwise CreateFile fails. Always locking the files
causes :win32 is base layer perl to not be able to have 2
handles/FDs/PIOs open simultaneously to the same disk file. This causes a
behavior different from :unix is base layer win32 perl, and also causes a
number of test fails to fail. See #122224 for details of test fails.
Getting read/write lock on open behavior comes from initial
commit a8c08ecdc5 of win32 layer.

6 years agoadd /dev/null support to :win32 io layer
Daniel Dragan [Tue, 9 Sep 2014 14:03:32 +0000 (10:03 -0400)]
add /dev/null support to :win32 io layer

:unix layer on Win32 OS supports this, so :win32 also has to. Without this
base/term.t dies with

ok 5
Can't open /dev/null. at base/term.t line 41.

C:\perl521\src\t>

After this, all tests in base/term.t pass when :win32 is the default OS
layer.

6 years agormv redundant PerlIO_find_layer from PerlIO_default_layers
Daniel Dragan [Fri, 12 Sep 2014 17:49:45 +0000 (13:49 -0400)]
rmv redundant PerlIO_find_layer from PerlIO_default_layers

Obsolete as of commit fcf2db383b , prior to that commit, PerlIO_find_layer
was needed to convert a PerlIO_funcs * (var osLayer) to a SV * since
PL_def_layerlist wasn't a PerlIO_list_t * but a AV *. After that commit
PerlIO_find_layer returns a PerlIO_funcs *, and we start with a
PerlIO_funcs * (var osLayer), so PerlIO_find_layer is redundant.

Also _NN a stack arg for smaller code.

6 years agocleanup perlio.c and doio.c
Daniel Dragan [Sun, 31 Aug 2014 05:40:27 +0000 (01:40 -0400)]
cleanup perlio.c and doio.c

IoIFP will be assigned to again in say_false block. This redundant code is
from commit 6e21c824d9 perl 4.0 patch 6.

in PerlIO_allocate replace a duplicate block with a goto

in PerlIO_resolve_layers replace a func call with a macro, this couldn't
have been using magic due to the previous SvROK

6 years agoAPIfy newDEFSVOP
Lukas Mai [Fri, 24 Oct 2014 22:39:03 +0000 (00:39 +0200)]
APIfy newDEFSVOP

6 years agoMake Deparse.t test just added less sensitive
Father Chrysostomos [Sat, 25 Oct 2014 03:36:22 +0000 (20:36 -0700)]
Make Deparse.t test just added less sensitive

I don’t know why, but the ‘-e syntax OK’ comes out last on my machine
but first on dromedary.

6 years agoDeparse stash subs stores as RVs
Father Chrysostomos [Sat, 25 Oct 2014 01:20:01 +0000 (18:20 -0700)]
Deparse stash subs stores as RVs

Commit 2eaf799e74b stop most declarations like ‘sub foo{}’ from creat-
ing GVs.  Instead, simple sub refs are stored in the stash.

That broke deparsing of package subs:

$ perl5.21.4 -MO=Deparse -e 'sub foo{die}'
-e syntax OK

Deparse needs to know about these references, so that we get this:

$ ./perl -Ilib -MO=Deparse -e 'sub foo{die}'
sub foo {
    die;
}
-e syntax OK

6 years agoExtend void list optimisation to two lexicals
Father Chrysostomos [Fri, 24 Oct 2014 21:33:26 +0000 (14:33 -0700)]
Extend void list optimisation to two lexicals

The list+pushmark optimisation and the padrange optimisation conflict.
In void context, the former is avoided if it looks as though padrange
is possible (pushmark followed by lexical var), but now that padrange
happens only for two or more lexicals, we can check for that.  This
makes ‘my $a, our $b’ marginally faster.  (There are still cases where
this optimisation doesn’t happen though it could, but things would
get even more compilcated and we would only be optimising for rare
edge cases.)

6 years agoRevert "Update ExtUtils-MakeMaker to CPAN version 7.00"
Father Chrysostomos [Fri, 24 Oct 2014 21:03:55 +0000 (14:03 -0700)]
Revert "Update ExtUtils-MakeMaker to CPAN version 7.00"

This reverts commit 7b01e4b183c6629065260ae2befad5e5d4ab6b94.

The newest ExtUtils::MakeMaker uses the :utf8 layers, which is not
available under miniperl on Windows.  So the build fails.

Revert this for now until a fixed version is released.

6 years agorecharclass: Corrections and nits
Karl Williamson [Fri, 24 Oct 2014 16:30:59 +0000 (10:30 -0600)]
recharclass: Corrections and nits

6 years agoperldelta for Unicode erratum fix
Karl Williamson [Wed, 22 Oct 2014 18:45:59 +0000 (12:45 -0600)]
perldelta for Unicode erratum fix

cb4ea3e667c17d04aceb8aa99c7314653561f238

6 years agoFix a bug with customized.t when CUSTOMIZED is empty arrayref
Chris 'BinGOs' Williams [Fri, 24 Oct 2014 12:15:19 +0000 (13:15 +0100)]
Fix a bug with customized.t when CUSTOMIZED is empty arrayref

6 years agoUpdate ExtUtils-MakeMaker to CPAN version 7.00
Chris 'BinGOs' Williams [Fri, 24 Oct 2014 11:23:00 +0000 (12:23 +0100)]
Update ExtUtils-MakeMaker to CPAN version 7.00

  [DELTA]

7.00 Wed Oct 22 20:13:38 BST 2014

    No changes from 6.99_18

6.99_18 Mon Oct 20 10:02:58 BST 2014
    Bug fixes:
    - Resolve regression with taint and get_version() [RT#99580]

    VMS fixes:
    - Avoid .NOTPARALLEL on VMS as it is a syntax error for MMS and MMK
    - Quotes are not stripped from argv[0] on VMS so need stripping
    - Move MCR from PERL to PERLRUN on VMS and other *RUN variables

6.99_17 Sun Oct 12 19:37:04 BST 2014
    Bug fixes:
    - Fix test that got broke under core since 6.99_15

6.99_16 Thu Oct  2 19:29:49 BST 2014
    Dist fixes:
    - Move File::Copy::Recursive from bundled to where it is
      used, so that it will not get installed as a runtime
      prereq

6.99_15 Sun Sep 21 13:21:46 BST 2014
    Enhancements:
    - If core, add ccwarnflags and ccstdflags, if available

    Doc fixes:
    - Fix internal links

6.99_14 Fri Sep 19 14:59:08 BST 2014
    Bug fixes:
    - Fixes to fallback version module for core integration problems

6.99_13 Mon Sep 15 20:02:47 BST 2014
    Enhancements:
    - Bundle Encode::Locale as ExtUtils::MakeMaker::Locale

    Bug fixes:
    - Make included version module have standardised dist versioning

6.99_12 Thu Sep 11 15:27:31 BST 2014
    Enhancements:
    - Now include a fallback version module for bootstrapping

    Bug fixes:
    - Support libfoo.0.dylib style libraries on Darwin

6.99_11 Mon Sep  8 14:20:26 BST 2014
    Bug fixes:
    - Handle chcp failure better on MSWin32
    - Tests should be parallelisable once again

    Doc fixes:
    - Document that GNU make is usable on MSWin32 now

6.99_10 Thu Sep  4 14:28:01 BST 2014
    Bug fixes:
    - Fixes for being integrated with core
    - Fixed the code page reset on MSWin32
    - Fixed test failures on BSD with UTF8 filenames
    - Fixed regression with quoting of $(PERL) when
      command line flags are used

6.99_09 Thu Aug 28 11:01:37 BST 2014
    Enhancements:
    - Support GNU Make on Windows
    - Support paths and filenames that are UTF8 encoded
    - MM->can_run() added for finding programs (ported from
      IPC::Cmd)

    Bug fixes:
    - Handle UTF8 when generating manpages correctly
    - Generated Makefile contents are now consistently sorted

6.99_08 Mon Aug 18 14:17:04 BST 2014
    Bug fixes:
    - Liblist::Kid: can now handle -l:foo.so invocations properly
    - Scripts will no longer have the 'not running under some shell' code
      applied when rewriting shebang lines.
    - version is now used to parse prereqs versions internally
    - Support UTF8 encoded command-line args and Makefile.PL args
    - Generated META.files will now always have linefeed EOLs, even on
      Windows
    - Rewrite the version line eval handling to have less insane edge cases

    Doc fixes:
    - Documentation now includes links to Dist::Zilla, File::ShareDir and
      File::ShareDir::Install
    - Clarified support policy for < v5.8.1 in README

    Misc:
    - Updated bundled CPAN::Meta::Requirements to version 2.126
    - Updated bundled ExtUtils::Manifest to version 1.65

6.99_07 Wed Jul 30 17:36:14 BST 2014
    Bug fixes:
    - Resolve 'wide character in print' warnings

6.99_06 Mon Jul 28 15:02:25 BST 2014
    Enhancements:
    - Improvements and tests for the spaces-in-stuff handling

6.99_05 Tue Jul 22 12:32:03 BST 2014
    Enhancements:
    - Enable working with (including installing to) directories with spaces in names

6.99_04 Sat Jul 12 12:43:08 BST 2014
    Enhancements:
    - No longer report each file being manified. Only summarise.

6.99_03 Fri Jul  4 11:02:21 BST 2014
    Doc Fixes:
    - PATCHING document has been rewritten as CONTRIBUTING and TODO
      document has been removed

    Bug Fixes:
    - Rearranged bundled prereqs so CPAN::Meta::Requirements won't
      get stomped on if it is installed already, but CPAN::Meta isn't

6.99_02 Thu Jun  5 12:15:28 BST 2014
    Bug fixes:
    * MM->parse_version will no longer warn if it could
      not determine the $VERSION due to syntax errors etc.

6.99_01 Tue Jun  3 22:17:30 BST 2014
    Bug fixes:
    * Disregard some warnings during tests when cross-compiling

    Doc fixes:
    * Clarified the use and limitations of META_ADD, META_MERGE

    Test fixes:
    * Sanitise env vars in tests

6 years agoUpdate Encode to CPAN version 2.63
Chris 'BinGOs' Williams [Fri, 24 Oct 2014 11:16:34 +0000 (12:16 +0100)]
Update Encode to CPAN version 2.63

  [DELTA]

$Revision: 2.63 $ $Date: 2014/10/19 07:01:15 $
! Encode.xs
  Applied: RT #99264: call_pv() can reallocate the stack
  https://rt.cpan.org/Ticket/Display.html?id=99264
! Byte/Makefile.PL CN/Makefile.PL EBCDIC/Makefile.PL Encode.xs
  JP/Makefile.PL KR/Makefile.PL Symbol/Makefile.PL TW/Makefile.PL
  bin/enc2xs encengine.c
  Pulled: add PERL_NO_GET_CONTEXT to all dynamic libs
  https://github.com/dankogai/p5-encode/pull/24

6 years agoSynchronise versions in Maintainers.pl for recent updates
Chris 'BinGOs' Williams [Fri, 24 Oct 2014 11:14:59 +0000 (12:14 +0100)]
Synchronise versions in Maintainers.pl for recent updates

6 years ago[perl #122695] Fix line number for else{foo}
Father Chrysostomos [Thu, 23 Oct 2014 02:32:04 +0000 (19:32 -0700)]
[perl #122695] Fix line number for else{foo}

where there is no space after the opening brace.

The code that was responsible for the wrong line number:

if (isSPACE(*s) || *s == '#')
    PL_copline = NOLINE;   /* invalidate current command line number */

was added in perl *2.0* (378cc40b3)!  It looked a little different
back then:

if (isspace(*s) || *s == '#')
    cmdline = NOLINE;   /* invalidate current command line number */

I don’t know what the condition was for.  I can only imagine that it
seemed logical to skip the setting of cmdline if it appeared to be
something on the same line (e.g., if($foo){bar()} as opposed to
if($foo){<newline>...}).  Clearly that doesn’t work for ‘else{foo()}’
because we end up giving that statement the line number where the
‘if’ occurs.  (cmdline/PL_copline is for remembering the first line of
a multi-line construct.)

6 years agopp.c:pp_repeat: Remove #if 0 code
Father Chrysostomos [Tue, 21 Oct 2014 02:32:44 +0000 (19:32 -0700)]
pp.c:pp_repeat: Remove #if 0 code

This was intended to fix 20010809.028, but treating
20010809.028 as not-a-bug is the only way to preserve
backward-compatibility.  See the previous commit’s
explanation.

6 years agorepeat.t: Remove to-do test for 20010809.028
Father Chrysostomos [Tue, 21 Oct 2014 02:29:43 +0000 (19:29 -0700)]
repeat.t: Remove to-do test for 20010809.028

Aka #7505, the bug was that list repeat didn’t copy its
elements.  But list repeat hasn’t copied its elements for
years now, and code could be relying on the current
behaviour of foreach(($var)x2) { ... } which aliases $_
to $var twice.  We also have tests for the current
behaviour.

6 years ago[perl #121159] use the updated win32_popenlist() even with USE_IMP_SYS
Tony Cook [Wed, 22 Oct 2014 23:59:11 +0000 (10:59 +1100)]
[perl #121159] use the updated win32_popenlist() even with USE_IMP_SYS

6 years ago5.21.5 has been ticked off
Abigail [Wed, 22 Oct 2014 22:04:28 +0000 (00:04 +0200)]
5.21.5 has been ticked off

6 years ago[perl #122680] Omit <-- HERE marker from (?=){3} warning
Father Chrysostomos [Wed, 22 Oct 2014 19:57:11 +0000 (12:57 -0700)]
[perl #122680] Omit <-- HERE marker from (?=){3} warning

‘Quantifier unexpected on zero-length expression’ was always putting
the marker at the end of the regular expression, instead of where
it actually goes.

6 years agoFix Unicode errata
Karl Williamson [Wed, 22 Oct 2014 17:20:31 +0000 (11:20 -0600)]
Fix Unicode errata

This is an error correction from http://www.unicode.org/errata/

6 years agoperldelta for 8334cae656b5
Tony Cook [Wed, 22 Oct 2014 05:38:54 +0000 (16:38 +1100)]
perldelta for 8334cae656b5

6 years ago[perl #122703] ensure $! is set when chmod() and utime() fail
Tony Cook [Wed, 22 Oct 2014 05:20:08 +0000 (16:20 +1100)]
[perl #122703] ensure $! is set when chmod() and utime() fail

When called with a closed file handle, neither chmod nor utime set
errno when they failed,

chown() did set errno, but this wasn't tested.

6 years agogit format-patch -M option takes branch
Doug Bell [Sun, 31 Aug 2014 08:15:35 +0000 (03:15 -0500)]
git format-patch -M option takes branch