This is a live mirror of the Perl 5 development currently hosted at
5 years agolocale.c: Free over-allocated space early
Karl Williamson [Sun, 10 Apr 2016 02:40:48 +0000 (20:40 -0600)]
locale.c: Free over-allocated space early

We may over malloc some space in buffers to strxfrm().  This frees it
now instead of waiting for the whole block to be freed sometime later.
This can be a significant amount of memory if the input string to
strxfrm() is long.

5 years agolocale.c: White-space only
Karl Williamson [Sun, 10 Apr 2016 02:36:01 +0000 (20:36 -0600)]
locale.c: White-space only

Outdent and reflow because the previous commit removed an enclosing

5 years agoChange mem_collxfrm() algorithm for embedded NULs
Karl Williamson [Sat, 9 Apr 2016 21:52:05 +0000 (15:52 -0600)]
Change mem_collxfrm() algorithm for embedded NULs

One of the problems in implementing Perl is that the C library routines
forbid embedded NUL characters, which Perl accepts.  This is true for
the case of strxfrm() which handles collation under locale.

The best solution as far as functionality goes, would be for Perl to
write its own strxfrm replacement which would handle the specific needs
of Perl.  But that is not going to happen because of the huge complexity
in handling it across many platforms.  We would have to know the
location and format of the locale definition files for every such
platform.  Some might follow POSIX guidelines, some might not.

strxfrm creates a transformation of its input into a new string
consisting of weight bytes.  In the typical but general case, a 3
character NUL-terminated input string 'A B C 00' (spaces added for
readability) gets transformed into something like:
    A¹ B¹ C¹ 01 A² B² C² 01 A³ B³ C³ 00
where the superscripted characters are weights for the corresponding
input characters.  Superscript 1 represents (essentially) the primary
sorting key; 2, the secondary, etc, for as many levels as the locale
definition gives.  The 01 byte is likely to be the separator between
levels, but not necessarily, and there could be some other mechanisms
used on various platforms.

To handle embedded NULs, the simplest thing would be to just remove them
before passing in to strxfrm().  Then they would be entirely ignored,
which might not be what you want.  You might want them to have some
weight at the tertiary level, for example.  It also causes problems
because strxfrm is very context sensitive.  The locale definition can
define weights for specific sequences of any length (and the weights can
be multi-byte), and by removing a NUL, two characters now become
adjacent that weren't in the input, and they could now form one of those
special sequences and thus throw things off.

Another way to handle NULs, that seemingly ignores them, but actually
doesn't, is the mechanism in use prior to this commit.  The input string
is split at the NULs, and the substrings are independently passed to
strxfrm, and the results concatenated together.  This doesn't work
either.  In our example 'A B C 00', suppose B is a NUL, and should have
some weight at the tertiary level.  What we want is:
    A¹ C¹ 01 A² C² 01 A³ B³ C³ 00

But that's not at all what you get.  Instead it is:
    A¹ 01 A² 01 A³ C¹ 01 C² 01 C³ 00
The primary weight of C comes immediately after the teriary weight of A,
but more importantly, a NUL, instead of being ignored at the primary
levels, is significant at all levels, so that "a\0c" would sort before

Still another possibility is to replace the NUL with some other
character before passing it to strxfrm.  That was my original plan, to
replace each NUL with the character that this code determines has the
lowest collation order for the current locale.  On strings that don't
contain that character, the results would be as good as it gets for that
locale.  That character is likely to be ignored at higher weight levels,
but have some small non-ignored weight at the lowest ones.  And
hopefully the character would rarely be encountered in practice.  When
it does happen, it and NUL would sort identically; hardly the end of the
world.  If the entire strings sorted identically, the NUL-containing one
would come out before the other one, since the original Perl strings are
used as a tie breaker.  However, testing showed a problem with this.  If
that other character is part of a sequence that has special weighting,
the results won't be correct.  With gcc, U+00B4 ACUTE ACCENT is the
lowest collating character in many UTF-8 locales.  It combines in
Romanian and Vietnamese with some other characters to change weights,
and hence changing NULs into U+B4 screws things up.

What I finally have come to is to do is a modification of this final
approach, where the possible NUL replacements are limited to just
characters that are controls in the locale.  NULs are replaced by the
lowest collating control.  It would really be a defective locale if this
control combined with some other character to form a special sequence.
Often the character will be a 01, START OF HEADING.  In the very
unlikely case that there are absolutely no controls in the locale, 01 is
used, because we have to replace it with something.

The code added by this commit is mostly utf8-ready.  A few commits from
now will make Perl properly work with UTF-8 (if the platform supports
it).  But until that time, this isn't a full implementation; it only
looks for the lowest-sorting control that is invariant, where the
the UTF8ness doesn't matter.  The added tests are marked as TODO until

5 years agolocale.c: Add, move, clarify comments
Karl Williamson [Wed, 18 May 2016 03:53:53 +0000 (21:53 -0600)]
locale.c: Add, move, clarify comments

This moves a large block of comments to before a block, outdents it, and
adds to it, plus adding another comment

5 years agoKeep track of if collation locale is UTF-8 or not
Karl Williamson [Mon, 16 May 2016 21:19:14 +0000 (15:19 -0600)]
Keep track of if collation locale is UTF-8 or not

This will be used in future commits

5 years agolocale.c: Don't use special locale collation for C locale
Karl Williamson [Mon, 16 May 2016 21:15:26 +0000 (15:15 -0600)]
locale.c: Don't use special locale collation for C locale

We can skip all the locale collation calculations if the locale we are
in is C or POSIX.

5 years agoperllocale: Document NUL collation handling
Karl Williamson [Sat, 21 May 2016 17:35:10 +0000 (11:35 -0600)]
perllocale: Document NUL collation handling

And add a TODO test, because this shortly will be improved upon

5 years agolib/locale.t: Don't calculate value unless needed
Karl Williamson [Fri, 13 May 2016 17:51:55 +0000 (11:51 -0600)]
lib/locale.t: Don't calculate value unless needed

5 years agomathoms.c: Remove obsolete text
Karl Williamson [Mon, 23 May 2016 16:01:41 +0000 (10:01 -0600)]
mathoms.c: Remove obsolete text no longer needs special handling for any functions that get
moved to mathoms.c

5 years agoUpdate ExtUtils-MakeMaker to CPAN version 7.18
Chris 'BinGOs' Williams [Tue, 24 May 2016 10:39:59 +0000 (11:39 +0100)]
Update ExtUtils-MakeMaker to CPAN version 7.18


7.18  Mon May 23 15:55:26 BST 2016

    No changes since 7.17_03

7.17_03 Wed May 11 18:22:06 BST 2016

    Dist fixes:
    - remove build_requires on ourselves

7.17_02 Mon May  9 23:55:09 BST 2016

    Bug fixes:
    - Resolve a regression in c_o with trailing spaces

7.17_01 Mon May  9 20:02:02 BST 2016

    Test fixes:
    - Resolve issues with tests when running in core

7.16  Sat May  7 10:13:05 BST 2016

    No changes since 7.15_03

7.15_03 Sun May  1 14:13:44 BST 2016

    Bug fixes:
    - lazy load Time::HiRes in ExtUtils::Command::MM
    - fix 5.6 compat by removing indexed sprintf

7.15_02 Thu Apr 28 12:54:23 BST 2016

    Bug fixes:
    - Fix regression with small fractional numeric versions

7.15_01 Wed Apr 27 19:13:46 BST 2016

    Bug fixes:
    - Fix regression with SKIP and dynamic and static targets

7.14  Sun Apr 24 13:53:33 BST 2016

  No changes since 7.13_01

7.13_01 Sat Apr 23 16:41:20 BST 2016

    Bug fixes:
    - Make dynamic depend on config again, fixes issues with Inline

7.12 Tue Apr 19 12:24:41 BST 2016

    - version ranges are now supported for PREREQS, etc.
    - Metadata is now represented internally as Meta Spec 2.0
    - ExtUtils::Command has been re-incorporated at 1.19 of that module
    - Refactored XS handling
    - XSMULTI=>1 - put multiple *.xs under lib, it "just works" and XSBUILD
      for refined control of XSMULTI
    - can do "make test" without first doing "make"

    Bug fixes:
    - Handle new warnings from File::Path
    - Resolve RT#106572 specifying AUTHOR via command-line is broken
    - Warning on missing TEST_REQUIRES and CONFIGURE_REQUIRES
    - Sanitise make_type on Win32
    - Cygwin rebase fixes
    - Makefile starting comments reflect decoded @ARGV, not raw
    - Add various targets to .PHONY to avoid disk IO with dmake
    - Fixed race condition in realclean
    - improve static-build lib detection
    - Eliminate non-error STDERR
    - Make WriteEmptyMakefile Makefile functional when called in subdir
    - manifypods fixes
    - perllocal.pod generation "Perl in Space" fix
    - PASTHRU fixes
    - Fix distsignature dependencies for parallel make
    - Check exit status for commands in "make ci" target
    - Less noisey output during building sub-modules
    - Fix dos2unix() on Windows
    - stop makeaperl from polluting @ARGV in cases where ARGV contains args with spaces
    - Fix regression when both and t/*.t are present
    - Refactored internals to remove DirHandle usage
    - MM_Unix::find_perl() dont repeatedly stat the same path in a loop
    - No longer repeatedly attempt to load CPAN::Meta if it is now available

    VMS fixes:
    - Made MM_VMS::oneline build continuation lines properly
    - Implemented XSMULTI and XSBUILD
    - Resurrect PASTHRU on VMS
    - make_macro should handle multiple macros
    - Fix regression with File::Spec changes in previous release

    Win32 fixes:
    - t/echo.t needs SHELL env for Win32 gmake

    Dist fixes:
    - Made %ExtraPrereqs match bundled prereqs
    - Included MANIFEST.SKIP from ExtUtils::Manifest
    - The bundled Encode::Locale has been updated to 1.04

    Test fixes:
    - test PL_FILES of a "module"
    - Various tests no longer require a separate .pm file for testing
    - Support v5.6.1 in various tests
    - test static build if $ENV{AUTHOR_TESTING}
    - XS tests now pluggable
    - test for "Perl in Space"

    Doc fixes:
    - better document for PL_FILES, oneliner method
    - FAQ updated

5 years agoFix class name typo typo in perlootut example
Dagfinn Ilmari Mannsåker [Tue, 24 May 2016 10:25:49 +0000 (11:25 +0100)]
Fix class name typo typo in perlootut example

It's spelled correctly in the body text, but the code had it wrong.

5 years agomathoms.c: consolidate comments
David Mitchell [Mon, 23 May 2016 14:53:05 +0000 (15:53 +0100)]
mathoms.c: consolidate comments

The head of this source file contains quite a few general comment
paragraphs. Consolidate them all into one



5 years agomathoms.c: add explanation why fns must be kept
David Mitchell [Mon, 23 May 2016 14:45:20 +0000 (15:45 +0100)]
mathoms.c: add explanation why fns must be kept


5 years agoPATCH: [perl #128219] typo in perlrecharclass
Karl Williamson [Mon, 23 May 2016 14:04:53 +0000 (08:04 -0600)]
PATCH: [perl #128219] typo in perlrecharclass

Thanks for spotting this.  It was a typo.  Alpha matches XPosixAlpha.

5 years agoCX_POP_SAVEARRAY(): use more distinctive var name
David Mitchell [Mon, 23 May 2016 13:43:56 +0000 (14:43 +0100)]
CX_POP_SAVEARRAY(): use more distinctive var name

Under -Wshadow, CX_POP_SAVEARRAY's local var 'av' can generate this

    warning: declaration shadows a local variable [-Wshadow]

So rename it to cx_pop_savearay_av to reduce the risk of a clash.


5 years agoUpdate release link in epigraph for 5.25.1
Sawyer X [Sun, 22 May 2016 17:10:41 +0000 (19:10 +0200)]
Update release link in epigraph for 5.25.1

5 years agoUpdate Module::CoreList for 5.25.2
Sawyer X [Sun, 22 May 2016 17:00:13 +0000 (19:00 +0200)]
Update Module::CoreList for 5.25.2

5 years agoperldiag: Rewrite a mangled sentence
Father Chrysostomos [Sun, 22 May 2016 01:33:38 +0000 (18:33 -0700)]
perldiag: Rewrite a mangled sentence

5 years agoSort perldiag
Father Chrysostomos [Sun, 22 May 2016 01:31:26 +0000 (18:31 -0700)]
Sort perldiag

5 years agorecognize and reject version control conflict markers (RT #127993)
Lukas Mai [Sat, 21 May 2016 17:12:21 +0000 (19:12 +0200)]
recognize and reject version control conflict markers (RT #127993)

5 years agoFix STRESS_REALLOC after 3caf0269d
Father Chrysostomos [Sat, 21 May 2016 18:36:56 +0000 (11:36 -0700)]
Fix STRESS_REALLOC after 3caf0269d

This commit:

commit 3caf0269dd4c609b8c2bc22b54598c642ba63ed8
Author: David Mitchell <>
Date:   Sun Dec 27 14:07:02 2015 +0000

    offset PL_savestack_max by SS_MAXPUSH

stopped savestack_grow from adding 4 to the allocated amount, which
broke builds with -Accflags=-DSTRESS_REALLOC.

savestack_grow accepts no arguments.  The callers have no way to
tell it how much to allocate; they just assume that it will allocate
enough.  By default, in increases the stack size by 50%, and the stack
starts out at 128 elements, so everything works fine.

Under STRESS_REALLOC, introduced by commit 2ce36478e5 in ’98, the
savestack started out at 1 (later, SS_MAXPUSH; as of 3caf0269d,
PL_savestack_max is 0 initially, though the actual stack size is
SS_MAXPUSH).  And the stack-growing functions in scope.h that default
to 50% instead add 1 element to the stack.

Anything that calls savestack_grow assumes it will allocate enough for
the savestack elements pushed.  The most elements ever pushed at once
is 4, so 2ce36478e5 added a +4 to the size in savestack_grow.

3caf0269d removed that +4, so the stack is only incremented by 1, and
this assertion at the end of scope.h:SS_ADD_END failed:

    if (UNLIKELY(ix > PL_savestack_max)) savestack_grow();      \
    assert(PL_savestack_ix <= PL_savestack_max);

3caf0269d was right in removing the +4, since it is unnecessary for
normal builds.  For STRESS_REALLOC, which is designed to grow stacks
as little as possible, we were allocating one more element than neces-
sary.  So this commit just explicitly grows the stack by SS_MAXPUSH
(the new name for 4) in savestack_grow if STRESS_REALLOC is defined.

5 years agoUpdate for the version thats on the CPAN
Chris 'BinGOs' Williams [Sat, 21 May 2016 15:46:12 +0000 (16:46 +0100)]
Update for the version thats on the CPAN

5 years agoSimplify parser’s handling of my/local
Father Chrysostomos [Sat, 21 May 2016 12:42:55 +0000 (05:42 -0700)]
Simplify parser’s handling of my/local

In Perl 5.000, the same token, LOCAL, was used for both ‘my’ and
‘local’, with a token value, passed to localize() as a second argu-
ment, to distinguish between them.

perl-5.003_07-9-g55497cf (inseparable changes from patch from
perl5.003_07 to perl5.003_08), for no apparent reason, split them into
two tokens, removing the token values and assigning values in perly.y
via $$ = 0 and $$ = 1.  They still ultimately made their way through
the same grammar rule, as there was only one localize() call in
perly.y.  The code still made sense.

perl-5.005_02-1816-g09bef84 (sub : attrlist) changed things, such that
the tokens are separate *and* they get separate token values assigned
to them.  ‘local’ and ‘my’ no longer follow the same grammar rules
in perly.y, so there are separate localize() calls for the different
token types.  Hence, the use of a token value to distinguish them does
not make sense.  It just makes this more complicated that necessary.

So this commit removes the token values.  Since the two token types
follow different paths through perly.y and have separate localize()
calls, we can hard-code the argument to localize() there, instead of
passing the value through from toke.c as a token value.

This does shrink toke.o slightly (for me it went from 876040 to
876000), and it makes this conceptually clearer.

5 years ago[perl #128204] Fix crash with @a &.= etc.
Father Chrysostomos [Sat, 21 May 2016 04:55:40 +0000 (21:55 -0700)]
[perl #128204] Fix crash with @a &.= etc.

The new bitwise operators in their assignment forms were not correctly
catching things like arrays on the lhs at compile time.

At run time, they would either crash or croak with ‘Can’t coerce

This commit puts in the correct compile-time check, simply by flagging
these as scalar modifiers.

5 years agoAnother op description correction: & -> &.
Father Chrysostomos [Sat, 21 May 2016 03:32:48 +0000 (20:32 -0700)]
Another op description correction: & -> &.

The string bitwise ops have dots in them, which should be included
in the op descriptions.

5 years agoCorrect ‘bitiwse’ in two op descriptions
Father Chrysostomos [Sat, 21 May 2016 03:24:50 +0000 (20:24 -0700)]
Correct ‘bitiwse’ in two op descriptions


5 years ago[Merge] &CORE::foo() calls with keys, push, etc.
Father Chrysostomos [Sat, 21 May 2016 05:14:08 +0000 (22:14 -0700)]
[Merge] &CORE::foo() calls with keys, push, etc.

The hash and array functions, keys, each, values, push, pop, shift,
unshift and splice, can now be called with ampersand syntax and via

5 years agoUpdate CORE.pod to reflect &CORE::keys() etc.
Father Chrysostomos [Sat, 21 May 2016 04:57:32 +0000 (21:57 -0700)]
Update CORE.pod to reflect &CORE::keys() etc.

5 years agoAllow assignment to &CORE::keys()
Father Chrysostomos [Sat, 21 May 2016 00:50:23 +0000 (17:50 -0700)]
Allow assignment to &CORE::keys()

5 years agoAllow &CORE::foo() with array functions
Father Chrysostomos [Tue, 17 May 2016 07:27:30 +0000 (00:27 -0700)]
Allow &CORE::foo() with array functions

5 years agoperldiag: Document unknown OA_* panic
Father Chrysostomos [Tue, 17 May 2016 06:32:06 +0000 (23:32 -0700)]
perldiag: Document unknown OA_* panic

5 years agof
Father Chrysostomos [Sat, 21 May 2016 05:13:15 +0000 (22:13 -0700)]

5 years agoAllow &CORE::foo() with hash functions
Father Chrysostomos [Tue, 17 May 2016 06:10:17 +0000 (23:10 -0700)]
Allow &CORE::foo() with hash functions

&CORE::keys does not yet work as an lvalue.  (I’m not sure how to make
that work.)

5 years agoIncrease $Opcode::VERSION to 1.35
Father Chrysostomos [Tue, 17 May 2016 01:16:28 +0000 (18:16 -0700)]
Increase $Opcode::VERSION to 1.35

5 years agoAdd avhvswitch op
Father Chrysostomos [Tue, 17 May 2016 01:15:42 +0000 (18:15 -0700)]
Add avhvswitch op

&CORE::keys() et al. will use this to switch between keys and akeys
depending on the argument type.

5 years agoregen/opcodes: Re-order aeach, akeys, and avalues
Father Chrysostomos [Tue, 17 May 2016 01:09:02 +0000 (18:09 -0700)]
regen/opcodes: Re-order aeach, akeys, and avalues

In a forthcoming commit, I will need them to be in the same order as
the corresponding hash functions.

5 years agopp.c: Use PL_op_desc in pp_coreargs
Father Chrysostomos [Sun, 15 May 2016 20:59:24 +0000 (13:59 -0700)]
pp.c: Use PL_op_desc in pp_coreargs

OP_DESC is inconvienient here, because it expects an op, not an op
number, so we have to follow pointers to find an appropriate op.  It
is also needlessly expensive, since we do not need to check for custom
ops in pp_coreargs (which OP_DESC does).  Just access the underlying
array directly.

5 years agoUpgrade to threads 2.09
jdhedden [Fri, 20 May 2016 18:59:02 +0000 (14:59 -0400)]
Upgrade to threads 2.09

For: RT #128197

5 years agoUpgrade to Thread::Queue 3.11
jdhedden [Fri, 20 May 2016 18:33:31 +0000 (14:33 -0400)]
Upgrade to Thread::Queue 3.11

For: RT #128195

5 years agoIncrement $VERSION to 5.YYYYMMDD for next scheduled monthly release date.
James E Keenan [Sat, 21 May 2016 01:59:46 +0000 (21:59 -0400)]
Increment $VERSION to 5.YYYYMMDD for next scheduled monthly release date.

5 years agocorelist: update for v5.25.2
Father Chrysostomos [Sat, 21 May 2016 01:04:52 +0000 (18:04 -0700)]
corelist: update for v5.25.2

I really have no idea what I’m doing.  I just copied 4170737e2, sort of,
and the tests started passing.

5 years ago[Merge] Lexical subs are no longer experimental
Father Chrysostomos [Fri, 20 May 2016 23:00:09 +0000 (16:00 -0700)]
[Merge] Lexical subs are no longer experimental

5 years agoGive the concept of no-op features
Father Chrysostomos [Fri, 20 May 2016 21:30:14 +0000 (14:30 -0700)]
Give the concept of no-op features

5 years agoRemove @experimental from regen/
Father Chrysostomos [Fri, 20 May 2016 21:17:55 +0000 (14:17 -0700)]
Remove @experimental from regen/

Originally, we were going to have warning when enabling
an experimental feature.  That changed, though, when we introduced
the :all tag, because it is unkind for :all to warn.  So in
v5.17.6-49-g64fbf0d we started warning when a feature is used,
not enabled.

It does not appear that that will ever change, so we might as well
remove the dead code (and comments) from regen/

5 years agoUpdate other docs on lexical sub acceptance
Father Chrysostomos [Fri, 20 May 2016 21:11:30 +0000 (14:11 -0700)]
Update other docs on lexical sub acceptance

5 years agoIncrease $feature::VERSION to 1.44
Father Chrysostomos [Fri, 20 May 2016 20:26:17 +0000 (13:26 -0700)]
Increase $feature::VERSION to 1.44

5 years agoUpdate docs for lex sub acceptance
Father Chrysostomos [Fri, 20 May 2016 20:25:20 +0000 (13:25 -0700)]
Update docs for lex sub acceptance

5 years agoUpdate perldiag for lexsub diag removals
Father Chrysostomos [Fri, 20 May 2016 19:46:07 +0000 (12:46 -0700)]
Update perldiag for lexsub diag removals

5 years agoEnable lex subs everywhere; suppress warning
Father Chrysostomos [Fri, 20 May 2016 19:45:10 +0000 (12:45 -0700)]
Enable lex subs everywhere; suppress warning

Adjust tests, too.

5 years ago[perl #128187] Forbid keys @_ in assigned lv sub
Father Chrysostomos [Fri, 20 May 2016 13:22:40 +0000 (06:22 -0700)]
[perl #128187] Forbid keys @_ in assigned lv sub

This is a continuation of this commit’s great grandparent, extending
the error to arrays.

5 years agotoke: yylex comments
Father Chrysostomos [Fri, 20 May 2016 04:32:02 +0000 (21:32 -0700)]
toke: yylex comments

Update; clarify; fix typo.

5 years agoCorrect error msg for sub:lvalue{%h{k}} in sassign
Father Chrysostomos [Fri, 20 May 2016 01:31:56 +0000 (18:31 -0700)]
Correct error msg for sub:lvalue{%h{k}} in sassign


    sub foo : lvalue { %hash{'key'} }
    foo = 3;

was incorrectly giving ‘Can't modify key/value hash slice in list
assignment’.  There is no list assignment there.

5 years ago[perl #128187] Forbid sub :lvalue{keys} in aassign
Father Chrysostomos [Fri, 20 May 2016 01:27:24 +0000 (18:27 -0700)]
[perl #128187] Forbid sub :lvalue{keys} in aassign

This commit makes perl die when keys(%hash) is returned from an lvalue
sub and the lvalue sub call is assigned to in list assignment:

    sub foo : lvalue { keys(%INC) }
    (foo) = 3; # death

This prevents an assignment that is completely useless and probably a
mistake, and it makes the lvalue-sub use of keys behave the same way
as (keys(%INC)) = 3.

5 years agoNote latest stable in INSTALL:
Sawyer X [Fri, 20 May 2016 22:39:12 +0000 (00:39 +0200)]
Note latest stable in INSTALL:

This was in the instructions but as it appears right after bumping
the version number (which contains a note that BLEAD-POINT should
only do it later), I had missed it. Also, INSTALL is generally
updated by the bump version script, which is usually done the
version before.

Anyway, might as well fix it now.

5 years agoBump the perl version in various places for 5.25.2
Sawyer X [Fri, 20 May 2016 22:08:13 +0000 (00:08 +0200)]
Bump the perl version in various places for 5.25.2

5 years agonew delta for 5.25.2
Sawyer X [Fri, 20 May 2016 22:03:08 +0000 (00:03 +0200)]
new delta for 5.25.2

5 years agomark 5.25.1 release as done
Sawyer X [Fri, 20 May 2016 21:53:53 +0000 (23:53 +0200)]
mark 5.25.1 release as done

5 years agoAdd epigraph to list:
Sawyer X [Fri, 20 May 2016 21:53:16 +0000 (23:53 +0200)]
Add epigraph to list:

NNTP link not available yet, I'll update it in the near future
(tomorrow) when it's available.

5 years ago[MERGE] resolve conflicts and merge 5.25.1 release with blead
Sawyer X [Fri, 20 May 2016 21:46:30 +0000 (23:46 +0200)]
[MERGE] resolve conflicts and merge 5.25.1 release with blead

5 years agoadd new release to perlhist v5.25.1
Sawyer X [Fri, 20 May 2016 19:47:28 +0000 (21:47 +0200)]
add new release to perlhist

5 years agoupdated perldelta
Sawyer X [Fri, 20 May 2016 19:25:04 +0000 (21:25 +0200)]
updated perldelta

5 years agoUpdate Module::CoreList for 5.25.1
Sawyer X [Fri, 20 May 2016 16:08:40 +0000 (18:08 +0200)]
Update Module::CoreList for 5.25.1

5 years agoadd a change to perldelta
Sawyer X [Fri, 20 May 2016 15:20:58 +0000 (17:20 +0200)]
add a change to perldelta

5 years agoImporting not-useful POSIX subs now fails at import time.
Jarkko Hietaniemi [Fri, 20 May 2016 11:38:31 +0000 (07:38 -0400)]
Importing not-useful POSIX subs now fails at import time.

5 years agoIndirect object syntax fixed in
Chase Whitener [Wed, 18 May 2016 16:20:28 +0000 (12:20 -0400)]
Indirect object syntax fixed in

Increment $FileHandle::VERSION.

For: RT #128178

5 years agoCorrect POD for release managers document:
Sawyer X [Thu, 19 May 2016 20:01:57 +0000 (22:01 +0200)]
Correct POD for release managers document:

A literal / (solidus) is E<sol>.

5 years agoUpdate and correct release schedule:
Sawyer X [Thu, 19 May 2016 19:54:32 +0000 (21:54 +0200)]
Update and correct release schedule:

* The release schedule had the dates for some releases twice
  and they weren't the same. Ricardo Signes released 5.24.0 sooner
  than on the schedule (good thing, since we kept slipping away)
  so that's fixed.

* We're releasing 5.25.1 tomorrow, on May, instead of June. That
  means all numbers are bumped.

* Aaron Crane volunteered to take on the November release.
  (Joke's on him, he'll have to do it!)

5 years ago[perl #123367] Test my sub defined in BEGIN{eval}
Father Chrysostomos [Thu, 19 May 2016 13:08:12 +0000 (06:08 -0700)]
[perl #123367] Test my sub defined in BEGIN{eval}

This accidentally started working in v5.21.6-197-g0f94cb1.

5 years agoAllow require_error.t be run from the top level
Father Chrysostomos [Thu, 19 May 2016 04:42:03 +0000 (21:42 -0700)]
Allow require_error.t be run from the top level

5 years agoNo such thing as MACOSX_DEVELOPMENT_TARGET.
Craig A. Berry [Thu, 19 May 2016 11:35:49 +0000 (06:35 -0500)]

This appears to be a typo that has been with us since 69625aa92a9
and the real name is MACOSX_DEPLOYMENT_TARGET.

So do the same thing the MacPorts folks have been doing, meaning
this is just the "fix-ld-modification.patch" from:

5 years agoperldelta for 08f800f85 / #128182
Father Chrysostomos [Thu, 19 May 2016 03:14:26 +0000 (20:14 -0700)]
perldelta for 08f800f85 / #128182

5 years ago[perl #128182] Fix crash with require $nonstring
Father Chrysostomos [Thu, 19 May 2016 01:07:37 +0000 (18:07 -0700)]
[perl #128182] Fix crash with require $nonstring

If something other than a plain string (e.g. a reference or typeglob)
whose stringified form contains a null character is passed to require()
or do(), it crashes, as of v5.19.3-130-gc8028aa, because the code in
question that handles the error tries to read fields of the scalar
that are only valid if it is a string internally.

5 years agolexsub.t: Remove some unnecessary evals
Father Chrysostomos [Thu, 19 May 2016 00:54:28 +0000 (17:54 -0700)]
lexsub.t: Remove some unnecessary evals

These evals were originally of the form eval {...} when I added
the tests, before things were working.  When I got them working,
I left few evals by mistake, while removing the braces.  Luckily,
eval 44 produces the same thing as 44.

5 years agoAdd POSIX::tmpnam() removal into perldelta
Jarkko Hietaniemi [Thu, 19 May 2016 02:45:13 +0000 (22:45 -0400)]
Add POSIX::tmpnam() removal into perldelta

5 years agoperldelta update
Father Chrysostomos [Wed, 18 May 2016 20:39:22 +0000 (13:39 -0700)]
perldelta update

fcd1306 [perl #128106] Fix reset with non-globs
60a26c7 [perl #128086] Fix precedence in hv_ename_delete
69e7f50 [perl #127976] Restore ‘or array’ to each($s) err
94f9945 Fix crash with: undef *_; shift;
c349280 Use concat overloading for "foo$_->$*"
d674449 [perl #128171] Fix assert fail with /@0{0*->@*/*0

5 years agoFix POD error
Aaron Crane [Wed, 18 May 2016 13:36:18 +0000 (14:36 +0100)]
Fix POD error

Sigh. Sorry about that, everyone.

5 years agoAdd perldelta entries for my 5.25.1 changes
Aaron Crane [Wed, 18 May 2016 13:06:57 +0000 (14:06 +0100)]
Add perldelta entries for my 5.25.1 changes

5 years ago[perl #128171] Fix assert fail with /@0{0*->@*/*0
Father Chrysostomos [Wed, 18 May 2016 01:16:52 +0000 (18:16 -0700)]
[perl #128171] Fix assert fail with /@0{0*->@*/*0

If a syntax error such as * (multiply) followed by an arrow causes the
parser to pop scopes in trying to recover from the error, it might
exit the quote-parsing scope (for parsing the regexp) and point the
lexer’s cursor at the code following the regexp, after the lexer has
noted to itself that it is expected to parse a postfix dereference

The code for parsing a postfix dereference has an assertion which
ends up failing in this case, because the *0 following the regexp,
having sigil that can come after an arrow, goes through the postfix
deref function, which complains about the 0 it did not expect.

If we simply remove the assertion, the lexer will continue to emit
tokens, and we just end up dying (somewhat) gracefully because of the
syntax error, instead of crashing.

I used a ] in the test instead of a final 0, to avoid a compile-
time warning.  (Number found where operator expected.)

5 years agomathoms.c: Add instructions for moving code here
Karl Williamson [Wed, 18 May 2016 00:22:00 +0000 (18:22 -0600)]
mathoms.c: Add instructions for moving code here

Suggested by Dave Mitchell.

5 years agoAdd 'corpus' to the heuristic for demo or test modules
Chris 'BinGOs' Williams [Tue, 17 May 2016 23:16:35 +0000 (00:16 +0100)]
Add 'corpus' to the heuristic for demo or test modules

5 years agoremove internal test modules from Module::CoreList
Karen Etheridge [Mon, 16 May 2016 04:47:37 +0000 (21:47 -0700)]
remove internal test modules from Module::CoreList

These modules only ever existed as test data, and should never have entered
the PAUSE index. There is no value in listing them in historical data.

5 years agofix Module::CoreList::is_core bounds checking for specific module versions
Karen Etheridge [Fri, 6 May 2016 20:36:17 +0000 (13:36 -0700)]
fix Module::CoreList::is_core bounds checking for specific module versions

5 years agobisect-runner: Work around ./Configure -S bug
Father Chrysostomos [Tue, 17 May 2016 20:37:46 +0000 (13:37 -0700)]
bisect-runner: Work around ./Configure -S bug

v5.23.4-46-g41d7307 stopped ./Configure -S from working.
In v5.23.5-89-g7a4fcb3, it started working again.

In order to bisect in this region, copy the file, which
Configure was invoking from the wrong path.

This patch actually works this time (I hope).

5 years agoRevert "bisect-runner: Only run ./Configure -S when needed"
Father Chrysostomos [Tue, 17 May 2016 20:04:28 +0000 (13:04 -0700)]
Revert "bisect-runner: Only run ./Configure -S when needed"

This reverts commit 16a77b27e2d2b59233235b74ce1f2c90ac18d675.

Scratch that.  ./Configure -S *is* needed.  It’s not just related to

I still can’t bisect, but I need to come up with a different fix.

5 years agobisect-runner: Only run ./Configure -S when needed
Father Chrysostomos [Tue, 17 May 2016 20:00:08 +0000 (13:00 -0700)]
bisect-runner: Only run ./Configure -S when needed

We only need to run it when has been modified, which only
happens before 5.10.  From v5.23.4-46-g41d7307 onwards ./Configure -S
did not work, until v5.23.5-90-g473edb6, so we need to skip this if we
want to bisect in that region.  (Or we could just skip the die, but we
might as well skip the system call, too.)

5 years emit fewer blank lines during build
Aaron Crane [Tue, 17 May 2016 15:41:16 +0000 (16:41 +0100)] emit fewer blank lines during build

I find this makes it easier rather than harder to see what's going on.

5 years agoUpdate Sys-Syslog to CPAN version 0.34
Chris 'BinGOs' Williams [Tue, 17 May 2016 12:37:52 +0000 (13:37 +0100)]
Update Sys-Syslog to CPAN version 0.34


0.34 -- 2016.05.06 -- Sebastien Aperghis-Tramoni (SAPER)
        [BUGFIX] CPAN-RT#105117: use %e where available, fall back to %d and
        a regexp where not (Markus Laker).
        [BUGFIX] CPAN-RT#98446: trailing new line with perror (Alexander Bluhm).
        [BUGFIX] CPAN-RT#105152: the noeol option was ignored (Markus Laker).
        [PORT] CPAN-RT#104710: loadable library and perl binaries are mismatched,
        because of missing CCFLAGS (CHORNY, KMX).
        [PORT] No longer inheriting from Exporter doesn't work before Perl 5.8.3.
        [BUGFIX] CPAN-RT#90538: facility from openlog() is not used (Anton Yuzhaninov).
        [PORT] CPAN-RT#90212: Support non-Windows platforms where syslog.h
        is not defined (Brian Fraser).
        [PORT] CPAN-RT#90224: setlocale() is not available everywhere, for
        example on Android (Brian Fraser).
        [PORT] CPAN-RT#90218: getproto*() and getserv*() functions are not
        available everywhere (Brian Fraser).
        [DOC] CPAN-RT#102058: mention the repository in the documentation.

5 years agoUpdate Term-ANSIColor to CPAN version 4.05
Chris 'BinGOs' Williams [Tue, 17 May 2016 12:35:33 +0000 (13:35 +0100)]
Update Term-ANSIColor to CPAN version 4.05


Term::ANSIColor 4.05 (2016-03-20)

    Color aliases are now restricted to ASCII alphanumerics, due to the
    below change.

    Delay loading of the Carp module and avoid using [:upper:], \w, and \d
    in regular expressions to reduce the amount of memory this module
    consumes.  (Normally, I wouldn't worry about this, but this module is
    very light-weight and can be useful even in highly space-constrained
    environments, and the impact is slight.)  Thanks, Nicolas R.

    Provide a mailto address in bug tracking metadata, use the shorter
    form of the RT bug tracker URL, and fix the license value to match the
    new metadata specification.  Rework Makefile.PL so that the munging
    for older versions of ExtUtils::MakeMaker is less intrusive.

5 years agoperlbug: don't run editor when noninteractive
Aaron Crane [Tue, 17 May 2016 11:24:54 +0000 (12:24 +0100)]
perlbug: don't run editor when noninteractive

This fixes tests on Win32.

5 years Don’t use /a
Father Chrysostomos [Tue, 17 May 2016 09:26:21 +0000 (02:26 -0700)] Don’t use /a

It’s convenient to be able to run it under the system perl, which
might be too old for /a.

In this code path, the utf8 flag will be off anyway.

5 years agoRemove LEX_KNOWNEXT and stop using PL_lex_defer
Father Chrysostomos [Tue, 17 May 2016 08:50:45 +0000 (01:50 -0700)]
Remove LEX_KNOWNEXT and stop using PL_lex_defer

See these commits for the background:


Perl’s lexer keeps an internal state (PL_lex_state), whereby it tracks
what kind of code it is parsing (normal, interpolated, etc.).

Due to the way bison works, yylex() must return exactly one token for
each call.  Since it needs to emit multiple tokens at times, it pushes
them on to a pending token stack, and then emits one for each subse-
quent yylex() call until the stack is empty.

Previously, it would record whether it needed to look at the stack by
setting PL_lex_state to LEX_KNOWNEXT.  Then, after emptying the pend-
ing token stack, it would set PL_lex_state back to its previous value,
temporarily stored in PL_lex_defer.

In some cases of syntax errors, scopes may be popped, and
PL_lex_state, which gets localised, may be unwound and set to a pre-
vious value.  The result was that PL_lex_state and the pending token
stack could get out of synch, resulting in crashes.

The commits cited above fixed things by working around the
LEX_KNOWNEXT mechanism, and checking the pending token stack itself,
rather than PL_lex_state, in determining whether it needed popping.

So we ended up with LEX_KNOWNEXT and PL_lex_defer doing nothing much
and getting in the way, requiring workarounds.

This commit just removes them.  We are already looking at the pending
token stack directly, instead of checking for LEX_KNOWNEXT.  And if
we no longer set PL_lex_state to that value, we no longer need to use
PL_lex_defer to hold the previous value, because PL_lex_state now gets
*left alone*.

I am leaving PL_lex_defer in the parser struct for now, in the hope
that it will result in fewer immediate CPAN patches.

(I intended to fix this shortly after 5.22, but Real Life got
in the way.)

5 years agoUse concat overloading for "foo$_->$*"
Father Chrysostomos [Tue, 17 May 2016 08:24:03 +0000 (01:24 -0700)]
Use concat overloading for "foo$_->$*"

This is the only discrepancy between $$_ and $_->$* that I know about.

To get ->@... interpolation to work, we have to emit a special
POSTJOIN token, which has just the right precedence to get it to apply
to the right amount of code before it, which perly.y then turns into a
regular join(...).

->$* and ->$#* were also going through that same code path, though it
turns out that simply omitting the POSTJOIN token for these dollar
tokens Just Works.  (I thought the fix would be more complicated.)

Now $_->$* within quotes becomes a direct argument to the concat ope-
rator, instead of being wrapped in a stringify(...) (what join(...)
optimises to with a single-item list).

5 years agoFix crash with: undef *_; shift;
Father Chrysostomos [Tue, 17 May 2016 07:03:09 +0000 (00:03 -0700)]
Fix crash with: undef *_; shift;

Commit v5.13.0-149-g538f575 added on optimisation to shift() that
makes pp_shift fetch @_ directly, instead of having two separate ops.

Unfortunately, it used the wrong macro, namely GvAV, instead of GvAVn.
The latter makes sure the array actually exists.

5 years agoRemove some autoderef leftovers
Father Chrysostomos [Tue, 17 May 2016 06:42:09 +0000 (23:42 -0700)]
Remove some autoderef leftovers

5 years agobetter glibc i_modulo bug handling
jimc [Tue, 15 Mar 2016 04:02:52 +0000 (22:02 -0600)]
better glibc i_modulo bug handling

pp-i-modulo code currently detects a glibc bug at runtime, at the 1st
exec of each I_MODULO op.  This is suboptimal; the bug should be
detectable early, and PL_ppaddr[I_MODULO] updated just once, before
any optrees are built.

Then, because we avoid the need to fixup I_MODULO ops in already built
optrees, we can drop the !PERL_DEBUG_READONLY_OPS limitation on the
alternative/workaround I_MODULO implementation that avoids the bug.


bug detection code is copied from PP(i_modulo),
into S_fixup_platform_bugs(), and called from perl_construct().
It patches Perl_pp_i_modulo_1() into PL_ppaddr[I_MODULO] when needed.


PP(i_modulo_0), the original implementation, is renamed to PP(i_modulo)

PP(i_modulo_1), the bug-fix workaround, is renamed _glibc_bugfix
                it is #ifdefd as before, but dropping !PERL_DEBUG_READONLY_OPS

PP(i_modulo) - the 1st-exec switcher code, is dropped

Two i_modulo entries are added to @raw_alias.
- 1st alias:  Perl_pp_i_modulo     => 'i_modulo'
- 2nd alt:    Perl_pp_i_modulo_glibc_bugfix => 'i_modulo'

1st is a restatement of the default alias/mapping that would be
created without the line.  2nd line is then seen as alternative to the
explicit mapping set by 1st.

Alternative functions are written to pp_proto.h after the standard
Perl_pp_* list, and include #if-cond, #endif wrappings, as was
specified by 2nd @raw_alias addition.

Changes tested by inserting '1 ||' into the 3 ifdefs and bug-detection code.


In pp_proto.h generation, the #ifdef wrapping code which handles the
alternative functions looks like it should also be used for the
non-alternate functions.  In particular, there are a handful of
pp-function prototypes that should be wrapped with #ifdef HAS_SOCKET.
That said, there have been no problem reports, so I left it alone.

TonyC: make S_fixup_platform_bugs static, porting/libperl.t was failing.

5 years Correct typo
Father Chrysostomos [Tue, 17 May 2016 04:43:27 +0000 (21:43 -0700)] Correct typo

Sorry for the noisy patch.  I can’t modify without
regenerating stuff, because the checksum changes.

5 years ago[perl #127976] Restore ‘or array’ to each($s) err
Father Chrysostomos [Sun, 15 May 2016 20:36:00 +0000 (13:36 -0700)]
[perl #127976] Restore ‘or array’ to each($s) err

This part of the message was accidentally deleted when the autoderef
feature was introduced.

This commit also emits this error in addition to the ‘Experimental
forbidden’ message in those cases where the latter occurs, since it
makes things clearer.

5 years ago[perl #127976] Use yyerror for each $scalar error
Father Chrysostomos [Mon, 25 Apr 2016 01:19:59 +0000 (18:19 -0700)]
[perl #127976] Use yyerror for each $scalar error

yyerror queues the error, allowing for multiple error messages for
syntax errors.  So at compile time it is generally better than croak.
It also provides more information about the location of the error,
with things like ‘at EOF’ and ‘near such and such’.

The hash functions each, values, and keys were using croak for the
‘Experimental forbidden’ message, unlike the array functions, which
were already using yyerror.

This commit changes the hash functions to use yyerror.

5 years agostartkve.t: Refactor setting of $errpat
Father Chrysostomos [Mon, 25 Apr 2016 00:21:44 +0000 (17:21 -0700)]
startkve.t: Refactor setting of $errpat

This will simplify things in the next commit.

5 years agosmartkve.t: Delete now-redundant tests
Father Chrysostomos [Sun, 24 Apr 2016 05:33:48 +0000 (22:33 -0700)]
smartkve.t: Delete now-redundant tests

The sole purpose of these tests was to make sure that the rvalues
and reach ops had the OA_DANGEROUS flag set and consequently behaved
correctly in list assignments that swap arguments.  (See d86b3122
for details.)

The tests were changed in commit 26230909, when the two ops in ques-
tion were removed, to use plain values and each ops (without the r-),
but those cases are already tested elsewhere by other tests that
d86b3122 added.