8 hours agot/op/pack.t: Fix some skipped tests on EBCDIC blead
Karl Williamson [Tue, 6 Oct 2015 16:23:34 +0000]
t/op/pack.t: Fix some skipped tests on EBCDIC

These tests were skipped on EBCDIC platforms because they failed there.
It turned out that the tests were ASCII-centric, and just had to be
modified slightly to pass.

8 hours agot/op/pack.t: Clarify comment; change variable name
Karl Williamson [Tue, 6 Oct 2015 16:22:10 +0000]
t/op/pack.t: Clarify comment; change variable name

The variable is really the bytes that compose the utf8, not the utf8.
Make the name clearer.

11 hours agopartial PL_statbuf removal
Daniel Dragan [Fri, 14 Aug 2015 22:34:09 +0000]
partial PL_statbuf removal

Perl_nextargv has to have access to the Stat_t that is written to inside
S_openn_cleanup or else run/switches.t, io/argv.t, io/inplace.t, and
io/iprefix.t will fail. Removing the uses of PL_statbuf that are using
PL_statbuf due to historical reason, and not using PL_statbuf to pass data
between different funcs/different callstacks. This patch makes it easier to
remove PL_statbuf in the future since the number uses of it has been

-in Perl_apply move SETERRNO before tot--; so the branch can be combined
 with other "tot--;" branches by CC optmizer
-combine 2 Perl_croak(aTHX_ "Illegal suidscript"); statements in
 S_validate_suid to make code look simpler, drop my_perl arg for space
 efficiency on threads of rarely executed code

11 hours agoProperly duplicate PerlIO::encoding objects
Vincent Pit [Fri, 28 Aug 2015 17:17:00 +0000]
Properly duplicate PerlIO::encoding objects

PerlIO::encoding objects are usually initialized by calling Perl methods,
essentially from the pushed() and getarg() callbacks. During cloning, the
PerlIO API will by default call these methods to initialize the duplicate
struct when the PerlIOBase parent struct is itself duplicated. This does
not behave so well because the perl interpreter is not ready to call
methods at this point, for the stacks are not set up yet.

The proper way to duplicate the PerlIO::encoding object is to call sv_dup()
on its members from the dup() PerlIO callback. So the only catch is to make
the getarg() and pushed() calls implied by the duplication of the underlying
PerlIOBase object aware that they are called during cloning, and make them
wait that the control flow returns to the dup() callback. Fortunately,
getarg() knows since its param argument is then non-null, and its return
value is passed immediately to pushed(), so it is enough to tag this
returned value with a custom magic so that pushed() can see it is being
called during cloning.

This fixes [RT #31923].

11 hours agomake sv_backoff tailcall friendly
Daniel Dragan [Fri, 25 Sep 2015 04:40:43 +0000]
make sv_backoff tailcall friendly

Reorder the body of Perl_sv_backoff slightly to make it more tail-call
friendly, and change its signature from returning an int (always 0) to

sv_backoff has only 1.5 function calls in it, there is a memcpy of a U32 *
for alignment reasons (I wont discuss U32_ALIGNMENT_REQUIRED) inside of
SvOOK_offset, and the explicit Move()/memmove. GCC and clang often inline
memcpy/memmove when the length is a constant and is small. Sometimes
a CC might also do unaligned memory reads if OS/CPU allows it
so I'll assume memcpy by short constant isn't a func call for discussion.
By moving SvFLAGS modification before the one and only func call, and
changing the return type to void, there is no code to execute after the
Move func call so the CC, if it wants (OS/ABI/CPU, specifically I am
thinking about x86-64) can tailcall jump to memmove. Also var sv can be
stored in a cheaper vol reg since it is not saved around any func calls
(SvFLAGS set was moved) assuming the memcpy by short constant was inlined.

The before machine code size of Perl_sv_backoff with VC 2003 -O1 was
0x6d bytes. After size is 0x61. .text section size of perl523.dll was
after was 0xD2733 bytes long, before was 0xD2743 bytes long. VC perl does
not inline memcpys by default.

In commit a0d0e21ea6 "perl 5.000" the return 0 was added. The int ret type
is from day 1 of sv_backoff function existing/day 1 of SV *s
from commit 79072805bf "perl 5.0 alpha 2". str_backoff didn't exist AFAIK,
only str_grow would retake the memory at the start of the block. Since
sv_backoff is usually used in a "&& func()" macro (SvOOK_off), it needed a
non void ret type, a simple ", 0" in the macro fixes that. All CCs optimize
and remove "if(0)" machine instructions so the ", 0" is optimized away in
the perl binary.

11 hours agoperlgit.pod: how to unescape 'git am' From lines
David Mitchell [Thu, 8 Oct 2015 15:07:06 +0000]
perlgit.pod: how to unescape 'git am' From lines

Due to Reasons, some UNIX mail systems escape any leading 'From ' lines
with a '>'. Explain how to un-escape them.

35 hours agoUpdate Encode to CPAN version 2.78
Chris 'BinGOs' Williams [Wed, 7 Oct 2015 15:31:48 +0000]
Update Encode to CPAN version 2.78


$Revision: 2.78 $ $Date: 2015/09/24 02:19:21 $
! Makefile.PL
  Mend pull/42 again.  This time correctly.
! lib/Encode/Supported.pod
  Applied: RT#107146: [PATCH] fix a spelling mistake

2 days agoperlsub.pod: note that anonymous subs can have signatures, too
Ricardo Signes [Tue, 6 Oct 2015 19:42:05 +0000]
perlsub.pod: note that anonymous subs can have signatures, too

2 days agoutf8.c: Slight code simplification
Karl Williamson [Sat, 3 Oct 2015 20:07:43 +0000]
utf8.c: Slight code simplification

The changed code computes the code point to output in a warning.
However, the function it calls will output essentially the same warning
if called with the proper flag.  So, just do that.  The slight change in
the output is that the calling function adds the operation name, like
"in print" to the end of the message, so this changes causes a better
message to be output.  I did not change the handling of surrogates here,
because the warning messages are too different.

2 days agoutf8.c: Fix comment
Karl Williamson [Fri, 25 Sep 2015 04:36:41 +0000]
utf8.c: Fix comment

2 days agoFix ext/File-Glob/t/rt114984.t for -DPERL_EXTERNAL_GLOB
Karl Williamson [Mon, 5 Oct 2015 22:54:24 +0000]
Fix ext/File-Glob/t/rt114984.t for -DPERL_EXTERNAL_GLOB

See https://rt.perl.org/Ticket/Display.html?id=126271

This commit changes a \n to a space so that when passed to a shell, it
doesn't think the 2nd line is a new sh command.

2 days agoperlapi: Note another exception to given rule
Karl Williamson [Mon, 5 Oct 2015 22:45:39 +0000]
perlapi: Note another exception to given rule

PERL_EXTERNAL_GLOB being defined also results in the described behavior.

2 days agoUpdate IO-Compress to CPAN version 2.069
Chris 'BinGOs' Williams [Tue, 6 Oct 2015 13:00:22 +0000]
Update IO-Compress to CPAN version 2.069


  2.069 26 Sept 2015

      * IO::Compress::FAQ
        - Added a section of bgzip
          RT #103295: IO::Compress Feature request

      * IO::Compress::Zip
        - Zip64 needs to be first in extra field to workaround a Windows Explorer Bug
          See http://www.info-zip.org/phpBB3/viewtopic.php?f=3&t=440 for details

2 days agoUpdate Compress-Raw-Zlib to CPAN version 2.069
Chris 'BinGOs' Williams [Tue, 6 Oct 2015 12:58:58 +0000]
Update Compress-Raw-Zlib to CPAN version 2.069


  2.069 26 Sept 2015

      * reduce compiler warnings and stderr noise

      * amigaos4: cpan/Compress-Raw-Zlib: also __amigaos4__

      * const all global data

      * Coverity finding: Unused value

      * Coverity findings

      * Coverity finding: Overlapping buffer in memory copy

2 days agoUpdate Compress-Raw-Bzip2 to CPAN version 2.069
Chris 'BinGOs' Williams [Tue, 6 Oct 2015 12:56:23 +0000]
Update Compress-Raw-Bzip2 to CPAN version 2.069


  2.069 26 Sept 2015

      * reduce compiler warnings and stderr noise

      * consting misc tables

3 days agoCleanup, document, and restructure regen/regcomp.pl
Yves Orton [Mon, 5 Oct 2015 16:49:46 +0000]
Cleanup, document, and restructure regen/regcomp.pl

We cleanup the parsing code, replacing our set of arrays of
properties with an array of hashes of properties, with
utility subs registering new items, etc.

We also split up the output code into a set of subs,
one sub per output "blob" (generaly a var definition),
so that we have some visibility of the higher level strucuture
of our output code. With this patch visibility of the structure
of what we generate emerges from the nest of here docs. :-)

Note this change does not (greatly) alter regcomp.sym or
perldebguts.pod, it merely cleans up and generally speaking
modernizes and most importantly documents the code.

3 days agofix perl #126186 make all verbs allow an optional arg
Yves Orton [Sun, 4 Oct 2015 22:03:10 +0000]
fix perl #126186 make all verbs allow an optional arg

In perl #126186 it was pointed out we had started allowing name
arguments for verbs where we did not document them to be supported,
albeit in an inconsistent way. The previous patch cleaned up some
of the cause of this, but it seems better to just generally allow
the existing verbs to all support a mark name argument.

So this patch reverses the effect of the previous patch, and makes
all verbs, FAIL, ACCEPT, etc, allow an optional argument, and
set REGERROR/REGMARK appropriately as well.

3 days agofix perl #126186 - (*ACCEPT) does not allow arguments
Yves Orton [Sun, 4 Oct 2015 14:22:17 +0000]
fix perl #126186 - (*ACCEPT) does not allow arguments

3 days agoadd some tests for perl #126186
Yves Orton [Sun, 4 Oct 2015 13:45:05 +0000]
add some tests for perl #126186

3 days agoFuture-proof pp_trans against a possible future undefined behaviour
Vincent Pit [Thu, 1 Oct 2015 15:28:51 +0000]
Future-proof pp_trans against a possible future undefined behaviour

If do_trans() ever wants to modify the stack in the future, this would
cause an undefined behaviour as mPUSHi() invokes its parameter on the same
argument list as PUSHmortal, which itself touches the stack.

4 days agoadd changelog for if.pm
Ricardo Signes [Sun, 4 Oct 2015 22:48:21 +0000]
add changelog for if.pm

4 days agofix perl-126222 - (?!) OPFAIL optimization does work in (?(?!)yes|no)
Yves Orton [Sun, 4 Oct 2015 12:13:44 +0000]
fix perl-126222 - (?!) OPFAIL optimization does work in (?(?!)yes|no)

OPFAIL should trigger the no branch when used in this context

Thanks to Victor Adam for the report.

4 days agoAdd a todo test for perl-126222
Yves Orton [Sun, 4 Oct 2015 12:04:51 +0000]
Add a todo test for perl-126222

4 days agoregcomp.c: make an expression more legible
Yves Orton [Sun, 4 Oct 2015 11:21:25 +0000]
regcomp.c: make an expression more legible

5 days agoUpdate Devel-PPPort to CPAN version 3.32
Chris 'BinGOs' Williams [Sat, 3 Oct 2015 17:58:57 +0000]
Update Devel-PPPort to CPAN version 3.32


3.32 - 2015-09-30

    * Lexical topic no longer works as of perl 5.23

5 days agoUpdate Perl-OSType to CPAN version 1.009
Chris 'BinGOs' Williams [Sat, 3 Oct 2015 17:56:56 +0000]
Update Perl-OSType to CPAN version 1.009


1.009     2015-09-21 10:09:35-04:00 America/New_York


    - Added 'sco' as a Unix-type OS

5 days agoUpdate experimental to CPAN version 0.015
Chris 'BinGOs' Williams [Sat, 3 Oct 2015 17:56:02 +0000]
Update experimental to CPAN version 0.015


0.015     2015-10-03 14:21:18+02:00 Europe/Amsterdam
          Make lexical_topic a deprecated feature

6 days agoResort MANIFEST for 95318fb6
Jarkko Hietaniemi [Fri, 2 Oct 2015 23:15:33 +0000]
Resort MANIFEST for 95318fb6

(somehow in smokes and Jenkins the porting/manifest.t passed?)

6 days ago[MERGE] branch symbol-cleanup
Jarkko Hietaniemi [Fri, 2 Oct 2015 22:35:58 +0000]
[MERGE] branch symbol-cleanup

Cleanup unused Configure symbols.
- d_modfl_pow32_bug
- filesystem stat
- sendmsg/recvmsg


Add a script for doing this kind of symbol cross-referencing.

There are plenty of remaining unused symbols, but these were
just some of the easy ones.

6 days agoUse <sys/poll.h> if available before going select().
Jarkko Hietaniemi [Mon, 17 Aug 2015 00:15:11 +0000]
Use <sys/poll.h> if available before going select().

Some BSD implementations might have <sys/poll.h> instead of <poll.h>.

Noticed while looking for unused symbols.

6 days agouconfig.h regen
Jarkko Hietaniemi [Thu, 1 Oct 2015 22:59:18 +0000]
uconfig.h regen

6 days agoRemove unused BSD sendmsg/recvmg symbols.
Jarkko Hietaniemi [Mon, 17 Aug 2015 00:24:17 +0000]
Remove unused BSD sendmsg/recvmg symbols.

Unused in CPAN, too.  There are uses of these symbols,
but under the Socket:: namespace.

6 days agoRemove unused d_modfl_pow32_bug symbol.
Jarkko Hietaniemi [Sun, 16 Aug 2015 20:02:59 +0000]
Remove unused d_modfl_pow32_bug symbol.

Even if the bug might still be present in ancient versions of glibc,
there's no code in the current Perl core using that.

6 days agoRemove unused filesystem stat symbols.
Jarkko Hietaniemi [Sat, 15 Aug 2015 16:54:08 +0000]
Remove unused filesystem stat symbols.

d_fs_data_s HAS_STRUCT_FS_DATA
d_fstatfs HAS_FSTATFS
d_fstatvfs HAS_FSTATVFS
d_getfsstat HAS_GETFSSTAT
d_getmnt HAS_GETMNT
d_getmntent HAS_GETMNTENT
d_hasmntopt HAS_HASMNTOPT
d_statfs_f_flags HAS_STRUCT_STATFS_F_FLAGS
d_ustat HAS_USTAT
i_mntent I_MNTENT
i_sysmount I_SYS_MOUNT
i_sysstatfs I_SYS_STATFS
i_sysstatvfs I_SYS_STATVFS
i_sysvfs I_SYS_VFS
i_ustat I_USTAT

Unused by the Perl core.

As far as I can remember I added these scans long ago, for some
purpose (df(1) kind of APIs?) but whatever it was, it obviously
hasn't exactly caught fire in the last 15 years.

Some rare uses of these APIs (not these defines, but e.g. statfs)
in CPAN (like the Quota module), but those seem to do their own

6 days agoScript for checking config symbol use.
Jarkko Hietaniemi [Sat, 15 Aug 2015 15:24:58 +0000]
Script for checking config symbol use.

6 days agoremove documentation for the now-removed lexical topic
Ricardo Signes [Fri, 2 Oct 2015 16:16:40 +0000]
remove documentation for the now-removed lexical topic

6 days agogiven(): remove support for lexical $_
David Mitchell [Fri, 2 Oct 2015 16:19:22 +0000]
given(): remove support for lexical $_

There is dead code that used to allow

    my $_;
    given ($foo) {
        # lexical $_ aliased to $foo here

Now that lexical $_ has been removed, remove the code.  I've left the
signatures of the newFOO() functions unchanged; they just expect a target
of 0 to always be passed now.

6 days agoadd removal of lexical topic to perldelta
Ricardo Signes [Fri, 2 Oct 2015 15:42:18 +0000]
add removal of lexical topic to perldelta

6 days ago[MERGE] EXTEND(), XSRETURN() wrap issues
David Mitchell [Fri, 2 Oct 2015 10:43:41 +0000]
[MERGE] EXTEND(), XSRETURN() wrap issues

6 days agoadd tests for XSRETURN* macros
Doug Bell [Wed, 3 Jun 2015 03:39:09 +0000]
add tests for XSRETURN* macros

6 days agoadd assertion to prevent stack corruption in XSUB
Doug Bell [Wed, 3 Jun 2015 03:34:42 +0000]
add assertion to prevent stack corruption in XSUB

We should not be able to return negative offsets from the stack in

6 days agofix up EXTEND() callers
David Mitchell [Mon, 21 Sep 2015 13:49:22 +0000]
fix up EXTEND() callers

The previous commit made it clear that the N argument to EXTEND()
is supposed to be signed, in particular SSize_t, and now typically
triggers compiler warnings where this isn't the case.

This commit fixes the various places in core that passed the wrong sort of
N to EXTEND(). The fixes are in three broad categories.

First, where sensible, I've changed the relevant var to be SSize_t.

Second, where its expected that N could never be large enough to wrap,
I've just added an assert and a cast.

Finally, I've added extra code to detect whether the cast could
wrap/truncate, and if so set N to -1, which will trigger a panic in

This also fixes
    [perl #125937] 'x' operator on list causes segfault with possible
    stack corruption

6 days agomake EXTEND() and stack_grow() safe(r)
David Mitchell [Mon, 7 Sep 2015 14:00:32 +0000]
make EXTEND() and stack_grow() safe(r)

This commit fixes various issues around stack_grow() and its
two main wrappers, EXTEND() and MEXTEND(). In particular it behaves
very badly on systems with 32-bit pointers but 64-bit ints.

One noticeable effect of this is commit is that various usages of EXTEND()
etc will now start to give compiler warnings - usually because they're
passing an unsigned N arg when it should be signed. This may indicate
a logic error in the caller's code which needs fixing. This commit causes
several such warnings to appear in core code, which will be fixed in the
next commit.

Essentially there are several potential false negatives in this basic

     if (PL_stack_max - p < (SSize_t)(n))

where it incorrectly skips the call to stack_grow() and then the caller
tramples over the end of the stack because it assumes that it has in fact
been extended. The value of N passed to stack_grow() can also potentially
get truncated or wrapped.

Note that the N arg of stack_grow() is SSize_t and EXTEND()'s N arg is
documented as SSize_t.  In earlier times, they were both ints.
Significantly, this means that they are both signed, and always have been.

In detail, the problems and their solutions are:

1) N is a signed value: if negative, it could be an indication of a
    caller's invalid logic or wrapping in the caller's code. This should
    trigger a panic. Make it so by adding an extra test to EXTEND() to
    always call stack_grow if negative, then add a check and panic in
    stack_grow() (and other places too). This extra test will be constant
    folded when EXTEND() is called with a literal N.

2) If the caller passes an unsigned value of N, then the comparison is
    between a signed and an unsigned value, leading to potential
    wrap-around. Casting N to SSize_t merely hides any compiler warnings,
    thus failing to alert the caller to a problem with their code. In
    addition, where sizeof(N) > sizeof(SSize_t), the cast may truncate N,
    again leading to false negatives. The solution is to remove the cast,
    and let the caller deal with any compiler warnings that result.

3) Similarly, casting stack_grow()'s N arg can hide any warnings issued by
    e.g. -Wconversion. So remove it.  It still does the wrong thing if the
    caller uses a non-signed type (usually a panic in stack_grow()), but
    coders have slightly more chance of spotting issues at compile time

4) If sizeof(N) > sizeof(SSize_t), then the N arg to stack_grow() may get
   truncated or sign-swapped. Add a test for this (basically that N is too
   big to fit in a SSize_t); for simplicity, in this case just set N to
   -1 so that stack_grow() panics shortly afterwards. In platforms where
   this can't happen, the test is constant folded away.

With all these changes, the macro now looks in essence like:

     if ( n < 0 || PL_stack_max - p < n)
            (sizeof(n) > sizeof(SSize_t) && ((SSize_t)(n) != n) ? -1 : n));

6 days agofix some 32/64-bit compiler warnings
David Mitchell [Wed, 9 Sep 2015 12:02:40 +0000]
fix some 32/64-bit compiler warnings

Some bits of code don't do well on a 32-bit system with 64-bit ints

In particular:

    if sizeof(MEM_SIZE) > sizeof(n), then the shift count could be

    ln and n were two different sizes and signesses, so comparing them
    warned. Since they were being mis-used as two convenient temporary
    booleans anyway, just use temporary booleans instead.

    the test/assertion (IV)elen < 0 was (I think) being used to test for
    signed/unsigned conversion wrap-around. elen is of type STRLEN which
    is a pointer-based type, so can be 32-bit while IV is 64-bit. Instead
    compare it to half the maximum value of a STRLEN var to see if it may
    have wrapped.

7 days agoUpgrade Module-Metadata from 1.000027 to 1.000029-TRIAL
Karen Etheridge [Thu, 1 Oct 2015 04:30:20 +0000]
Upgrade Module-Metadata from 1.000027 to 1.000029-TRIAL

1.000029  2015-09-11 16:25:43Z (TRIAL RELEASE)
  - fix missing "use" statement in refactored test helper (only affected older
    perls, due to other module interactions)

1.000028  2015-09-11 04:24:39Z (TRIAL RELEASE)
  - refactored and expanded test cases
  - fixed a $VERSION extraction issue on perl 5.6.2 (RT#105978, PR#17)
  - fix the detection of package Foo when $Foo::VERSION is set (RT#85961)


distribution files omitted:

7 days agoadd licensing information to pod
Karen Etheridge [Thu, 1 Oct 2015 01:44:35 +0000]
add licensing information to pod

8 days agoperlapi: Clarify process of using undocumented globals
Karl Williamson [Wed, 18 Jun 2014 00:49:53 +0000]
perlapi: Clarify process of using undocumented globals

One should send email to p5p first to get the go-ahead for documenting
and using an undocumented function or global variable.

8 days agoAdd a test for a goto regression from Aug 2010 fixed in Oct 2014.
Nicholas Clark [Wed, 30 Sep 2015 15:31:26 +0000]
Add a test for a goto regression from Aug 2010 fixed in Oct 2014.

An obscure bug involving goto within the same scope in the presence of
compile-time optimised away blocks was introduced in Aug 2010 by commit
ac56e7de46621c6f, "Peephole optimise adjacent pairs of nextstate ops."

The bug was fixed in Oct 2014 by commit f5b5c2a37af87535, "Simplify
double-nextstate optimisation"

Add a test, to ensure that we don't regress.

8 days agodocument the specific value of $!{E...}
Ricardo Signes [Wed, 30 Sep 2015 11:49:40 +0000]
document the specific value of $!{E...}

...and note that it is subject to change and not guaranteed

9 days agoperlfunc: Nit
Karl Williamson [Tue, 29 Sep 2015 17:55:02 +0000]
perlfunc: Nit

9 days agoMerge branch 'remove-lexical-topic' into blead
Ricardo Signes [Tue, 29 Sep 2015 15:16:52 +0000]
Merge branch 'remove-lexical-topic' into blead

9 days agoMatch ops no longer need OPpTARGET_MY rjbs/remove-lexical-topic
Father Chrysostomos [Wed, 19 Aug 2015 21:39:15 +0000]
Match ops no longer need OPpTARGET_MY

Actually, I don’t think they have needed it for a while.

9 days agoRemove OPpGREP_LEX
Father Chrysostomos [Wed, 19 Aug 2015 21:30:40 +0000]

It is no longer used.

9 days agoStop using OPpGREP_LEX at run time
Father Chrysostomos [Wed, 19 Aug 2015 21:30:08 +0000]
Stop using OPpGREP_LEX at run time

It is no longer set.

9 days agoop.c: Stop searching for lexical $_
Father Chrysostomos [Wed, 19 Aug 2015 21:23:56 +0000]
op.c: Stop searching for lexical $_

at compile time.

9 days agopp.c:pp_reverse: Don’t use find_rundefsv
Father Chrysostomos [Wed, 19 Aug 2015 21:22:39 +0000]
pp.c:pp_reverse: Don’t use find_rundefsv

It just calls DEFSV now, so use DEFSV directly.

9 days agoRemove find_rundefsv2
Father Chrysostomos [Wed, 19 Aug 2015 21:21:50 +0000]
Remove find_rundefsv2

It was never public, and was only written for the sake of pp_coreargs,
which no longer uses it.

9 days agoIn pp.c:pp_coreargs, use DEFSV directly
Father Chrysostomos [Wed, 19 Aug 2015 21:20:36 +0000]
In pp.c:pp_coreargs, use DEFSV directly

rundefsv2 is only necessary for lexical $_.  It’s slower than a simple
DEFSV, which is what it falls back to anyway.

9 days agoGut public rundefsv functions
Father Chrysostomos [Wed, 19 Aug 2015 21:17:43 +0000]
Gut public rundefsv functions

As long as the lexical $_ syntax is disabled anyway, this is what they
would return.

9 days agoBump $warnings::VERSION to 1.34
Father Chrysostomos [Wed, 19 Aug 2015 21:16:39 +0000]
Bump $warnings::VERSION to 1.34

9 days agoRemove arybase lexical $_ tests
Father Chrysostomos [Wed, 19 Aug 2015 21:14:42 +0000]
Remove arybase lexical $_ tests

9 days agoRemove experimental::lexical_topic warnings category
Father Chrysostomos [Wed, 19 Aug 2015 20:12:11 +0000]
Remove experimental::lexical_topic warnings category

9 days agoDisable lexical $_
Father Chrysostomos [Wed, 19 Aug 2015 20:10:16 +0000]
Disable lexical $_

This just disables the syntax and modifes the tests.  The underlying
infrastructure has not been removed yet.

I had to change a couple of tests in cpan/.

12 days agokillpg for VMS.
Craig A. Berry [Sat, 26 Sep 2015 22:24:57 +0000]
killpg for VMS.

Implement our own killpg by scanning for processes in the specified
process group, which may not mean exactly the same thing as a Unix
process group, but at least we can now send a signal to a parent (or
master) process and all of its sub-processes.  In Perl-land, this
means we can now send a negative pid like so:

  kill SIGKILL, -$pid;

to signal all processes in the same group as $pid.

13 days agoMake ext/XS-APItest/t/cophh.t work on EBCDIC
Karl Williamson [Thu, 3 Sep 2015 00:00:55 +0000]
Make ext/XS-APItest/t/cophh.t work on EBCDIC

The new EBCDIC-only code will also work on ASCII platforms, but I left
the ASCII code as-is.

13 days agot/re/pat.t: EBCDIC fix
Karl Williamson [Wed, 23 Sep 2015 03:31:02 +0000]
t/re/pat.t: EBCDIC fix

13 days agoClarify FIRSTKEY and NEXTKEY usage.
Jarkko Hietaniemi [Fri, 25 Sep 2015 12:10:45 +0000]
Clarify FIRSTKEY and NEXTKEY usage.

13 days agoPOD fix in the documentation for SvTHINKFIRST
Rafael Garcia-Suarez [Fri, 25 Sep 2015 07:29:28 +0000]
POD fix in the documentation for SvTHINKFIRST

2 weeks ago[perl #126133] autodie touches its touch_me, make it writable
Tony Cook [Tue, 22 Sep 2015 23:33:50 +0000]
[perl #126133] autodie touches its touch_me, make it writable

autodie's utime.t touches touch_me, in a git checkout that's fine
since the file is writable, but in a distribution, all files are
read-only by default, and on Win32 the utime() call the test expects
to succeed fails.

Per Sisyphus's note, also make win32/GNUmakefile writable to match the
other Win32 makefiles, since they're often modified to configure the

2 weeks agoFix typo and Module-CoreList is 5.20150920 on the CPAN now
Chris 'BinGOs' Williams [Tue, 22 Sep 2015 22:52:05 +0000]
Fix typo and Module-CoreList is 5.20150920 on the CPAN now

2 weeks agoUpdate Module::CoreList
Peter Martini [Mon, 21 Sep 2015 13:19:14 +0000]
Update Module::CoreList

2 weeks agoBump the perl version in various places for 5.23.4.
Peter Martini [Mon, 21 Sep 2015 12:37:35 +0000]
Bump the perl version in various places for 5.23.4.

2 weeks agoUpdate release_schedule
Peter Martini [Mon, 21 Sep 2015 11:28:16 +0000]
Update release_schedule

Tick off 5.23.3

2 weeks agoPorting/new-perldelta.pl regenerations
Peter Martini [Mon, 21 Sep 2015 11:27:05 +0000]
Porting/new-perldelta.pl regenerations

2 weeks agoAdd epigraph for 5.23.3
Peter Martini [Mon, 21 Sep 2015 11:04:57 +0000]
Add epigraph for 5.23.3

2 weeks agoAdd 5.23.3 to perlhist v5.23.3
Peter Martini [Mon, 21 Sep 2015 01:38:35 +0000]
Add 5.23.3 to perlhist

2 weeks agoFinalize perldelta with Acknowledgments
Peter Martini [Mon, 21 Sep 2015 01:28:13 +0000]
Finalize perldelta with Acknowledgments

2 weeks agoUpdate Module::CoreList for 5.23.3
Peter Martini [Mon, 21 Sep 2015 00:11:37 +0000]
Update Module::CoreList for 5.23.3

2 weeks agoperldelta updates for 5.23.3
Peter Martini [Mon, 21 Sep 2015 01:19:58 +0000]
perldelta updates for 5.23.3

2 weeks agoRemove unneeded ", from perldiag entry
Peter Martini [Mon, 21 Sep 2015 01:46:53 +0000]
Remove unneeded ", from perldiag entry

2 weeks agoop.c: ck_match does not use its context
Father Chrysostomos [Sun, 20 Sep 2015 22:07:36 +0000]
op.c: ck_match does not use its context

g++ told me so.

2 weeks ago[perl #126064] Apply scalar context to stat args
Father Chrysostomos [Sun, 20 Sep 2015 22:06:39 +0000]
[perl #126064] Apply scalar context to stat args

If we don’t apply scalar context to stat’s argument, then it doesn’t
get its context marked:

$ ./perl -Ilib -MO=Concise -le 'stat stat stat'
7  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 1 -e:1) v:{ ->3
6     <1> stat vK/1 ->7
5        <1> stat K/1 ->6
4           <1> stat K/1 ->5
-              <1> ex-rv2sv sK/1 ->4
3                 <#> gvsv[*_] s ->4
-e syntax OK

and it might think that it is in void context at run time:

$ ./perl -Ilib -le 'print 1, 2, 3,(stat stat stat), 4, 5, 6'

It ate my stack items!

If it reads past the beginning of the stack, it can crash.

Just apply scalar context, and Bob’s your uncle, of course.

2 weeks agoRemove VMS-specific bits of OP_KILL.
Craig A. Berry [Sun, 20 Sep 2015 02:54:02 +0000]
Remove VMS-specific bits of OP_KILL.

The rationale for this change almost twenty years ago was that
the "CRTL's emulation of Unix-style signals and kill()" couldn't
send signals that got noticed by images running in supervisor
mode.  This hasn't been true of the CRTL for some time, and we
haven't been using the CRTL's kill for a very long time either.

So remove this once-but-no-longer-necessary hack.  Experiments
show that it is still possible to kill any process we want,
assuming the signalling process has the necessary privileges (or
owns the target process).

TODO:  implement killpg() -- if Win32 can do it, surely it's
possible on VMS.

2 weeks agoAdd API tests for utf8.h macros
Karl Williamson [Thu, 27 Aug 2015 05:16:35 +0000]
Add API tests for utf8.h macros

2 weeks agoChange meaning of UNI_IS_INVARIANT on EBCDIC platforms
Karl Williamson [Mon, 3 Aug 2015 03:20:44 +0000]
Change meaning of UNI_IS_INVARIANT on EBCDIC platforms

This should make more CPAN and other code work without change.  Usually,
unwittingly, code that says UNI_IS_INVARIANT means to use the native
platform code values for code points below 256, so acquiesce to the
expected meaning and make the macro correspond.  Since the native values
on ASCII machines are the same as Unicode, this change doesn't affect
code running on them.

A new macro, OFFUNI_IS_INVARIANT, is created for those few places that
really do want a Unicode value.  There are just a few places in the Perl
core like that, which this commit changes.

2 weeks agoUpdate Encode to CPAN version 2.77
Ricardo Signes [Fri, 18 Sep 2015 17:29:43 +0000]
Update Encode to CPAN version 2.77


$Revision: 2.77 $ $Date: 2015/09/15 13:53:27 $
! Unicode/Unicode.xs Unicode/Unicode.pm
  Address RT#107043: If no BOM is found, the routine dies.
  When you decode from UTF-(16|32) without -BE or LE without BOM,
  Encode now assumes BE accordingly to RFC2781 and the Unicode
  Standard version 8.0
! Makefile.PL encoding.t
  Mend pull/42
! Encode.xs Makefile.PL encoding.pm encoding.t
  Pulled: precompile 1252 table as that is now the Pod::Simple default

3 weeks agoTentative fix for RT#125350 - AFL detected crash.
Shlomi Fish [Fri, 4 Sep 2015 19:26:12 +0000]
Tentative fix for RT#125350 - AFL detected crash.

3 weeks agoMake MM_VMS::oneline build continuation lines properly.
Craig A. Berry [Wed, 16 Sep 2015 23:52:32 +0000]
Make MM_VMS::oneline build continuation lines properly.

Tracking upstream commit dd1e236abed699069 because without
it the build is broken.

3 weeks agoWin32 misc parallel fixes in win32/makefile.mk
Daniel Dragan [Sun, 13 Sep 2015 03:30:46 +0000]
Win32 misc parallel fixes in win32/makefile.mk

-reonly/Extensions_reonly target, which is never used, didn't work in
 parallel because it was using left to right execution of an upstream dep
 to create build products, that is incompatible with parallel building, fix
 by trimming down the list of deps, $(UNIDATAFILES) and Extensions_reonly
 know how to build themselves
-regnodes psuedotarget is redundant, it is just an alias for ..\regnodes.h
 which isn't a build product, remove regnodes and just use ..\regnodes.h
 instead, smaller build graph/less parsing for dmake tool
-I am not questioning relationship between reonly, ..\regnodes.h,
 ..\regcharclass.h, ..\regcomp.o, $(UNIDATAFILES),  Extensions_reonly
 since regnodes.h and regcharclass.h are git tracked files and not build
 products, and things work well enough as is
-perlglob.exe is needed to build extensions, the natural race conditions
 that exist in parallel building ment that it was usually getting built
 early enough that it being missing wasn't noticed, and "rebasePE" target
 made sure it existed eventually. Some Makefile.PLs indirectly warned that
 perlglob was missing from the cmd.exe complaining about perlglob being
 missing but didnt cause an non-zero to happen from the Makefile.PL
 process. Also since perlglob.exe is installed into the final installed
 perl, probably pointlessly since full perl is not built with
 PERL_EXTERNAL_GLOB I think an installed perl's perlglob.exe was being
 used when I developed commit 3bdc51af3f and related patches. Since re,
 DynaLoader, and lib are a very limited fixed list of modules, and they
 dont need perlglob.exe, they dont need to get it as a dep.
-reorder the deps in Extensions_static and Extensions_nonxs so permanent
 files, rarely changed files are on the left side, and build products are
 on the right. Maybe some kind of optimization happens inside dmake due to
 the first couple deps being already built (because they are permanent).
-remove ..\lib\buildcustomize.pl dep, it is redundant. Its other name is
 HAVEMINIPERL, and CONFIGPM can't exist without miniperl. Less nodes in
 dmake's internal graph, since dmake's dep finding algorithm is very
 inefficient and repetitive.
-gmake is supported since commit 342634f3c8 but GNUmakefile doesn't
 support parallel (-j) building

3 weeks agoRemove legacy/dead code from B
Nicolas R [Fri, 11 Sep 2015 14:23:39 +0000]
Remove legacy/dead code from B

B was still using some PERL_VERSION checks
in multiple places whereas it's part of core.
This commit removes this dead code and bump B::VERSION.

For archeology we can still use git if we want to know
what it looks like in an older version.

3 weeks agoregexec.c: Use Perl_croak_nocontext()
Karl Williamson [Wed, 16 Sep 2015 21:58:27 +0000]
regexec.c: Use Perl_croak_nocontext()

Instead of doing a dTHX introduced in
22b433eff9a1ffa2454e18405a56650f07b385b5.  I should have pointed out in
that commit message, that instead of doing a full-fledged UTF-8
well-formedness check, it does a quick sanity check sufficient to
prevent looping

Spotted by Vincent Pitt

3 weeks agoRevert "amigaos4: flock unimplemented"
Jarkko Hietaniemi [Wed, 16 Sep 2015 21:05:19 +0000]
Revert "amigaos4: flock unimplemented"

This reverts commit 24631c4f6929bc824e657b74b2edfada4c8d05b0.

The new flock emulation for amigaos now tested with parallel builds
and found to fare well.

3 weeks agoPATCH [perl #123562] Regexp-matching "hangs"
Karl Williamson [Wed, 16 Sep 2015 20:34:31 +0000]
PATCH [perl #123562] Regexp-matching "hangs"

The regex engine got into an infinite loop because of the malformation.
It is trying to back-up over a sequence of UTF-8 continuation bytes.
But the character just before the sequence should be a start byte.  If
not, there is a malformation.  I added a test to croak if that isn't the
case so that it doesn't just infinitely loop.  I did this also in the
similar areas of regexec.c.

Comments long ago added to the code suggested that we check for
malformations in the vicinity of the new tests.  But that was never
done.  These new tests should be good enough to prevent looping, anyway.

3 weeks agoregcomp.c: Safer handling of malformed UTF-8
Karl Williamson [Wed, 16 Sep 2015 14:48:29 +0000]
regcomp.c: Safer handling of malformed UTF-8

This commit just changes a test to look for UTF-8 invariants instead of
legal UTF-8 start characters.  The effective difference is that now all
non-invariants go to the general utf8 handling function, which is
equipped to find malformed UTF-8.  Previously, this code would
improperly accept malformations that were illegal start characters or
continuation characters.

3 weeks agoAdd 2 books to perlbook
Zachary Storer [Wed, 16 Sep 2015 18:02:11 +0000]
Add 2 books to perlbook

3 weeks agoAdd Zachary Storer to AUTHORS
Karl Williamson [Wed, 16 Sep 2015 18:00:52 +0000]
Add Zachary Storer to AUTHORS

3 weeks agoperlbook: Decrease indent of verbatim lines
Karl Williamson [Wed, 16 Sep 2015 17:56:44 +0000]
perlbook: Decrease indent of verbatim lines

so that fewer are likely to exceed 79 columns

3 weeks agoperlbook: Add some L<> links
Karl Williamson [Wed, 16 Sep 2015 17:45:42 +0000]
perlbook: Add some L<> links

3 weeks agoamigaos4: whitespace only, in amigaos4/
Jarkko Hietaniemi [Tue, 15 Sep 2015 13:05:11 +0000]
amigaos4: whitespace only, in amigaos4/

Consistent formatting (and using "Andy Broad" style) for the amigaos4 code:

astyle --style=bsd --indent=tab=4 amigaos4/*.[hc]

(amigaos patch preparation script automates this)

3 weeks agoamigaos4: whitespace only
Andy Broad [Sun, 13 Sep 2015 21:40:23 +0000]
amigaos4: whitespace only

For preprocessor code use 2-indent instead of 4-indent.