This is a live mirror of the Perl 5 development currently hosted at
6 years agoperlgit.pod: how to unescape 'git am' From lines
David Mitchell [Thu, 8 Oct 2015 15:07:06 +0000 (16:07 +0100)]
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.

6 years agoUpdate Encode to CPAN version 2.78
Chris 'BinGOs' Williams [Wed, 7 Oct 2015 15:31:48 +0000 (16:31 +0100)]
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

6 years agoperlsub.pod: note that anonymous subs can have signatures, too
Ricardo Signes [Tue, 6 Oct 2015 19:42:05 +0000 (15:42 -0400)]
perlsub.pod: note that anonymous subs can have signatures, too

6 years agoutf8.c: Slight code simplification
Karl Williamson [Sat, 3 Oct 2015 20:07:43 +0000 (14:07 -0600)]
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.

6 years agoutf8.c: Fix comment
Karl Williamson [Fri, 25 Sep 2015 04:36:41 +0000 (22:36 -0600)]
utf8.c: Fix comment

6 years agoFix ext/File-Glob/t/rt114984.t for -DPERL_EXTERNAL_GLOB
Karl Williamson [Mon, 5 Oct 2015 22:54:24 +0000 (16:54 -0600)]
Fix ext/File-Glob/t/rt114984.t for -DPERL_EXTERNAL_GLOB


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.

6 years agoperlapi: Note another exception to given rule
Karl Williamson [Mon, 5 Oct 2015 22:45:39 +0000 (16:45 -0600)]
perlapi: Note another exception to given rule

PERL_EXTERNAL_GLOB being defined also results in the described behavior.

6 years agoUpdate IO-Compress to CPAN version 2.069
Chris 'BinGOs' Williams [Tue, 6 Oct 2015 13:00:22 +0000 (14:00 +0100)]
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 for details

6 years agoUpdate Compress-Raw-Zlib to CPAN version 2.069
Chris 'BinGOs' Williams [Tue, 6 Oct 2015 12:58:58 +0000 (13:58 +0100)]
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

6 years agoUpdate Compress-Raw-Bzip2 to CPAN version 2.069
Chris 'BinGOs' Williams [Tue, 6 Oct 2015 12:56:23 +0000 (13:56 +0100)]
Update Compress-Raw-Bzip2 to CPAN version 2.069


  2.069 26 Sept 2015

      * reduce compiler warnings and stderr noise

      * consting misc tables

6 years agoCleanup, document, and restructure regen/
Yves Orton [Mon, 5 Oct 2015 16:49:46 +0000 (18:49 +0200)]
Cleanup, document, and restructure regen/

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.

6 years agofix perl #126186 make all verbs allow an optional arg
Yves Orton [Sun, 4 Oct 2015 22:03:10 +0000 (00:03 +0200)]
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.

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

6 years agoadd some tests for perl #126186
Yves Orton [Sun, 4 Oct 2015 13:45:05 +0000 (15:45 +0200)]
add some tests for perl #126186

6 years agoFuture-proof pp_trans against a possible future undefined behaviour
Vincent Pit [Thu, 1 Oct 2015 15:28:51 +0000 (12:28 -0300)]
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.

6 years agoadd changelog for
Ricardo Signes [Sun, 4 Oct 2015 22:48:21 +0000 (18:48 -0400)]
add changelog for

6 years agofix perl-126222 - (?!) OPFAIL optimization does work in (?(?!)yes|no)
Yves Orton [Sun, 4 Oct 2015 12:13:44 +0000 (14:13 +0200)]
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.

6 years agoAdd a todo test for perl-126222
Yves Orton [Sun, 4 Oct 2015 12:04:51 +0000 (14:04 +0200)]
Add a todo test for perl-126222

6 years agoregcomp.c: make an expression more legible
Yves Orton [Sun, 4 Oct 2015 11:21:25 +0000 (13:21 +0200)]
regcomp.c: make an expression more legible

6 years agoUpdate Devel-PPPort to CPAN version 3.32
Chris 'BinGOs' Williams [Sat, 3 Oct 2015 17:58:57 +0000 (18:58 +0100)]
Update Devel-PPPort to CPAN version 3.32


3.32 - 2015-09-30

    * Lexical topic no longer works as of perl 5.23

6 years agoUpdate Perl-OSType to CPAN version 1.009
Chris 'BinGOs' Williams [Sat, 3 Oct 2015 17:56:56 +0000 (18:56 +0100)]
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

6 years agoUpdate experimental to CPAN version 0.015
Chris 'BinGOs' Williams [Sat, 3 Oct 2015 17:56:02 +0000 (18:56 +0100)]
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 years agoResort MANIFEST for 95318fb6
Jarkko Hietaniemi [Fri, 2 Oct 2015 23:15:33 +0000 (19:15 -0400)]
Resort MANIFEST for 95318fb6

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

6 years ago[MERGE] branch symbol-cleanup
Jarkko Hietaniemi [Fri, 2 Oct 2015 22:35:58 +0000 (18:35 -0400)]
[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 years agoUse <sys/poll.h> if available before going select().
Jarkko Hietaniemi [Mon, 17 Aug 2015 00:15:11 +0000 (20:15 -0400)]
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 years agouconfig.h regen
Jarkko Hietaniemi [Thu, 1 Oct 2015 22:59:18 +0000 (18:59 -0400)]
uconfig.h regen

6 years agoRemove unused BSD sendmsg/recvmg symbols.
Jarkko Hietaniemi [Mon, 17 Aug 2015 00:24:17 +0000 (20:24 -0400)]
Remove unused BSD sendmsg/recvmg symbols.

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

6 years agoRemove unused d_modfl_pow32_bug symbol.
Jarkko Hietaniemi [Sun, 16 Aug 2015 20:02:59 +0000 (16:02 -0400)]
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 years agoRemove unused filesystem stat symbols.
Jarkko Hietaniemi [Sat, 15 Aug 2015 16:54:08 +0000 (12:54 -0400)]
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 years agoScript for checking config symbol use.
Jarkko Hietaniemi [Sat, 15 Aug 2015 15:24:58 +0000 (11:24 -0400)]
Script for checking config symbol use.

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

6 years agogiven(): remove support for lexical $_
David Mitchell [Fri, 2 Oct 2015 16:19:22 +0000 (17:19 +0100)]
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 years agoadd removal of lexical topic to perldelta
Ricardo Signes [Fri, 2 Oct 2015 15:42:18 +0000 (11:42 -0400)]
add removal of lexical topic to perldelta

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

6 years agoadd tests for XSRETURN* macros
Doug Bell [Wed, 3 Jun 2015 03:39:09 +0000 (22:39 -0500)]
add tests for XSRETURN* macros

6 years agoadd assertion to prevent stack corruption in XSUB
Doug Bell [Wed, 3 Jun 2015 03:34:42 +0000 (22:34 -0500)]
add assertion to prevent stack corruption in XSUB

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

6 years agofix up EXTEND() callers
David Mitchell [Mon, 21 Sep 2015 13:49:22 +0000 (14:49 +0100)]
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 years agomake EXTEND() and stack_grow() safe(r)
David Mitchell [Mon, 7 Sep 2015 14:00:32 +0000 (15:00 +0100)]
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 years agofix some 32/64-bit compiler warnings
David Mitchell [Wed, 9 Sep 2015 12:02:40 +0000 (13:02 +0100)]
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.

6 years agoUpgrade Module-Metadata from 1.000027 to 1.000029-TRIAL
Karen Etheridge [Thu, 1 Oct 2015 04:30:20 +0000 (21:30 -0700)]
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:

6 years agoadd licensing information to pod
Karen Etheridge [Thu, 1 Oct 2015 01:44:35 +0000 (18:44 -0700)]
add licensing information to pod

6 years agoperlapi: Clarify process of using undocumented globals
Karl Williamson [Wed, 18 Jun 2014 00:49:53 +0000 (18:49 -0600)]
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.

6 years agoAdd a test for a goto regression from Aug 2010 fixed in Oct 2014.
Nicholas Clark [Wed, 30 Sep 2015 15:31:26 +0000 (17:31 +0200)]
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.

6 years agodocument the specific value of $!{E...}
Ricardo Signes [Wed, 30 Sep 2015 11:49:40 +0000 (07:49 -0400)]
document the specific value of $!{E...}

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

6 years agoperlfunc: Nit
Karl Williamson [Tue, 29 Sep 2015 17:55:02 +0000 (11:55 -0600)]
perlfunc: Nit

6 years agoMerge branch 'remove-lexical-topic' into blead
Ricardo Signes [Tue, 29 Sep 2015 15:16:52 +0000 (11:16 -0400)]
Merge branch 'remove-lexical-topic' into blead

6 years agoMatch ops no longer need OPpTARGET_MY origin/rjbs/remove-lexical-topic
Father Chrysostomos [Wed, 19 Aug 2015 21:39:15 +0000 (14:39 -0700)]
Match ops no longer need OPpTARGET_MY

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

6 years agoRemove OPpGREP_LEX
Father Chrysostomos [Wed, 19 Aug 2015 21:30:40 +0000 (14:30 -0700)]

It is no longer used.

6 years agoStop using OPpGREP_LEX at run time
Father Chrysostomos [Wed, 19 Aug 2015 21:30:08 +0000 (14:30 -0700)]
Stop using OPpGREP_LEX at run time

It is no longer set.

6 years agoop.c: Stop searching for lexical $_
Father Chrysostomos [Wed, 19 Aug 2015 21:23:56 +0000 (14:23 -0700)]
op.c: Stop searching for lexical $_

at compile time.

6 years agopp.c:pp_reverse: Don’t use find_rundefsv
Father Chrysostomos [Wed, 19 Aug 2015 21:22:39 +0000 (14:22 -0700)]
pp.c:pp_reverse: Don’t use find_rundefsv

It just calls DEFSV now, so use DEFSV directly.

6 years agoRemove find_rundefsv2
Father Chrysostomos [Wed, 19 Aug 2015 21:21:50 +0000 (14:21 -0700)]
Remove find_rundefsv2

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

6 years agoIn pp.c:pp_coreargs, use DEFSV directly
Father Chrysostomos [Wed, 19 Aug 2015 21:20:36 +0000 (14:20 -0700)]
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.

6 years agoGut public rundefsv functions
Father Chrysostomos [Wed, 19 Aug 2015 21:17:43 +0000 (14:17 -0700)]
Gut public rundefsv functions

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

6 years agoBump $warnings::VERSION to 1.34
Father Chrysostomos [Wed, 19 Aug 2015 21:16:39 +0000 (14:16 -0700)]
Bump $warnings::VERSION to 1.34

6 years agoRemove arybase lexical $_ tests
Father Chrysostomos [Wed, 19 Aug 2015 21:14:42 +0000 (14:14 -0700)]
Remove arybase lexical $_ tests

6 years agoRemove experimental::lexical_topic warnings category
Father Chrysostomos [Wed, 19 Aug 2015 20:12:11 +0000 (13:12 -0700)]
Remove experimental::lexical_topic warnings category

6 years agoDisable lexical $_
Father Chrysostomos [Wed, 19 Aug 2015 20:10:16 +0000 (13:10 -0700)]
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/.

6 years agokillpg for VMS.
Craig A. Berry [Sat, 26 Sep 2015 22:24:57 +0000 (17:24 -0500)]
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.

6 years agoMake ext/XS-APItest/t/cophh.t work on EBCDIC
Karl Williamson [Thu, 3 Sep 2015 00:00:55 +0000 (18:00 -0600)]
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.

6 years agot/re/pat.t: EBCDIC fix
Karl Williamson [Wed, 23 Sep 2015 03:31:02 +0000 (21:31 -0600)]
t/re/pat.t: EBCDIC fix

6 years agoClarify FIRSTKEY and NEXTKEY usage.
Jarkko Hietaniemi [Fri, 25 Sep 2015 12:10:45 +0000 (08:10 -0400)]
Clarify FIRSTKEY and NEXTKEY usage.

6 years agoPOD fix in the documentation for SvTHINKFIRST
Rafael Garcia-Suarez [Fri, 25 Sep 2015 07:29:28 +0000 (09:29 +0200)]
POD fix in the documentation for SvTHINKFIRST

6 years ago[perl #126133] autodie touches its touch_me, make it writable
Tony Cook [Tue, 22 Sep 2015 23:33:50 +0000 (09:33 +1000)]
[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

6 years agoFix typo and Module-CoreList is 5.20150920 on the CPAN now
Chris 'BinGOs' Williams [Tue, 22 Sep 2015 22:52:05 +0000 (23:52 +0100)]
Fix typo and Module-CoreList is 5.20150920 on the CPAN now

6 years agoUpdate Module::CoreList
Peter Martini [Mon, 21 Sep 2015 13:19:14 +0000 (09:19 -0400)]
Update Module::CoreList

6 years agoBump the perl version in various places for 5.23.4.
Peter Martini [Mon, 21 Sep 2015 12:37:35 +0000 (08:37 -0400)]
Bump the perl version in various places for 5.23.4.

6 years agoUpdate release_schedule
Peter Martini [Mon, 21 Sep 2015 11:28:16 +0000 (07:28 -0400)]
Update release_schedule

Tick off 5.23.3

6 years agoPorting/ regenerations
Peter Martini [Mon, 21 Sep 2015 11:27:05 +0000 (07:27 -0400)]
Porting/ regenerations

6 years agoAdd epigraph for 5.23.3
Peter Martini [Mon, 21 Sep 2015 11:04:57 +0000 (07:04 -0400)]
Add epigraph for 5.23.3

6 years agoAdd 5.23.3 to perlhist v5.23.3
Peter Martini [Mon, 21 Sep 2015 01:38:35 +0000 (21:38 -0400)]
Add 5.23.3 to perlhist

6 years agoFinalize perldelta with Acknowledgments
Peter Martini [Mon, 21 Sep 2015 01:28:13 +0000 (21:28 -0400)]
Finalize perldelta with Acknowledgments

6 years agoUpdate Module::CoreList for 5.23.3
Peter Martini [Mon, 21 Sep 2015 00:11:37 +0000 (20:11 -0400)]
Update Module::CoreList for 5.23.3

6 years agoperldelta updates for 5.23.3
Peter Martini [Mon, 21 Sep 2015 01:19:58 +0000 (21:19 -0400)]
perldelta updates for 5.23.3

6 years agoRemove unneeded ", from perldiag entry
Peter Martini [Mon, 21 Sep 2015 01:46:53 +0000 (21:46 -0400)]
Remove unneeded ", from perldiag entry

6 years agoop.c: ck_match does not use its context
Father Chrysostomos [Sun, 20 Sep 2015 22:07:36 +0000 (15:07 -0700)]
op.c: ck_match does not use its context

g++ told me so.

6 years ago[perl #126064] Apply scalar context to stat args
Father Chrysostomos [Sun, 20 Sep 2015 22:06:39 +0000 (15:06 -0700)]
[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.

6 years agoRemove VMS-specific bits of OP_KILL.
Craig A. Berry [Sun, 20 Sep 2015 02:54:02 +0000 (21:54 -0500)]
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.

6 years agoAdd API tests for utf8.h macros
Karl Williamson [Thu, 27 Aug 2015 05:16:35 +0000 (23:16 -0600)]
Add API tests for utf8.h macros

6 years agoChange meaning of UNI_IS_INVARIANT on EBCDIC platforms
Karl Williamson [Mon, 3 Aug 2015 03:20:44 +0000 (21:20 -0600)]
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.

6 years agoUpdate Encode to CPAN version 2.77
Ricardo Signes [Fri, 18 Sep 2015 17:29:43 +0000 (13:29 -0400)]
Update Encode to CPAN version 2.77


$Revision: 2.77 $ $Date: 2015/09/15 13:53:27 $
! Unicode/Unicode.xs Unicode/
  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.t
  Pulled: precompile 1252 table as that is now the Pod::Simple default

6 years agoTentative fix for RT#125350 - AFL detected crash.
Shlomi Fish [Fri, 4 Sep 2015 19:26:12 +0000 (22:26 +0300)]
Tentative fix for RT#125350 - AFL detected crash.

6 years agoMake MM_VMS::oneline build continuation lines properly.
Craig A. Berry [Wed, 16 Sep 2015 23:52:32 +0000 (18:52 -0500)]
Make MM_VMS::oneline build continuation lines properly.

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

6 years agoWin32 misc parallel fixes in win32/
Daniel Dragan [Sun, 13 Sep 2015 03:30:46 +0000 (23:30 -0400)]
Win32 misc parallel fixes in win32/

-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\ 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

6 years agoRemove legacy/dead code from B
Nicolas R [Fri, 11 Sep 2015 14:23:39 +0000 (09:23 -0500)]
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.

6 years agoregexec.c: Use Perl_croak_nocontext()
Karl Williamson [Wed, 16 Sep 2015 21:58:27 +0000 (15:58 -0600)]
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

6 years agoRevert "amigaos4: flock unimplemented"
Jarkko Hietaniemi [Wed, 16 Sep 2015 21:05:19 +0000 (17:05 -0400)]
Revert "amigaos4: flock unimplemented"

This reverts commit 24631c4f6929bc824e657b74b2edfada4c8d05b0.

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

6 years agoPATCH [perl #123562] Regexp-matching "hangs"
Karl Williamson [Wed, 16 Sep 2015 20:34:31 +0000 (14:34 -0600)]
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.

6 years agoregcomp.c: Safer handling of malformed UTF-8
Karl Williamson [Wed, 16 Sep 2015 14:48:29 +0000 (08:48 -0600)]
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.

6 years agoAdd 2 books to perlbook
Zachary Storer [Wed, 16 Sep 2015 18:02:11 +0000 (12:02 -0600)]
Add 2 books to perlbook

6 years agoAdd Zachary Storer to AUTHORS
Karl Williamson [Wed, 16 Sep 2015 18:00:52 +0000 (12:00 -0600)]
Add Zachary Storer to AUTHORS

6 years agoperlbook: Decrease indent of verbatim lines
Karl Williamson [Wed, 16 Sep 2015 17:56:44 +0000 (11:56 -0600)]
perlbook: Decrease indent of verbatim lines

so that fewer are likely to exceed 79 columns

6 years agoperlbook: Add some L<> links
Karl Williamson [Wed, 16 Sep 2015 17:45:42 +0000 (11:45 -0600)]
perlbook: Add some L<> links

6 years agoamigaos4: whitespace only, in amigaos4/
Jarkko Hietaniemi [Tue, 15 Sep 2015 13:05:11 +0000 (09:05 -0400)]
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)

6 years agoamigaos4: whitespace only
Andy Broad [Sun, 13 Sep 2015 21:40:23 +0000 (17:40 -0400)]
amigaos4: whitespace only

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

6 years agoamigaos4: use #ifdef/ifndef __amigaos4__ when feasible
Andy Broad [Sun, 13 Sep 2015 18:53:59 +0000 (14:53 -0400)]
amigaos4: use #ifdef/ifndef __amigaos4__ when feasible

6 years agoamigaos4: declare the amigaos protos in amigaos.h
Andy Broad [Mon, 14 Sep 2015 14:28:14 +0000 (10:28 -0400)]
amigaos4: declare the amigaos protos in amigaos.h

6 years agoamigaos4: better kill() implementation
Andy Broad [Tue, 15 Sep 2015 13:01:12 +0000 (09:01 -0400)]
amigaos4: better kill() implementation

(the underlying UNIX emulation has changed)

6 years agoamigaos4: implement flock() emulation
Andy Broad [Sun, 13 Sep 2015 23:55:41 +0000 (19:55 -0400)]
amigaos4: implement flock() emulation

Beware: not an exact implementation, the locks follow the OS level
filehandle not the process.

6 years agoamigaos4: move the amigaos exec code under amigaos4
Andy Broad [Sun, 13 Sep 2015 18:37:43 +0000 (14:37 -0400)]
amigaos4: move the amigaos exec code under amigaos4

Largely reimplements 839a9f0254fa14d7e8432c6340262ff4.

The upside is that now doio.c and pp_sys.c have much less AmigaOS
specific ifdefs. As a downside, the exec code is now forked (pun
only partially accidental.)

The earlier story regarding fork+exec, that the AmigaOS creating
thread doesn't terminate but instead continues running is both true
and false.  The more detailed story is that the user-observable
behaviour is as with POSIX/UNIX.  The thread that created the new
"task" (to use the AmigaOS terms) does hang around -- but all it
does is to wait for the new task to terminate, and more importantly,
it holds on to the resources like filehandles.  If the task were to
immediately terminate, the resources would be reclaimed by the kernel.