perl.git
3 years agoperldelta: merge in changes from perl5236delta
Ricardo Signes [Sun, 13 Mar 2016 22:27:34 +0000 (18:27 -0400)] 
perldelta: merge in changes from perl5236delta

3 years agoperldelta: merge in changes from perl5235delta
Ricardo Signes [Fri, 11 Mar 2016 01:03:27 +0000 (20:03 -0500)] 
perldelta: merge in changes from perl5235delta

3 years agoperldelta: merge in changes from perl5234delta
Ricardo Signes [Fri, 11 Mar 2016 00:50:06 +0000 (19:50 -0500)] 
perldelta: merge in changes from perl5234delta

3 years agoperldelta: merge in changes from perl5233delta
Ricardo Signes [Fri, 11 Mar 2016 00:30:11 +0000 (19:30 -0500)] 
perldelta: merge in changes from perl5233delta

3 years agoperldelta: merge in changes from perl5232delta
Ricardo Signes [Fri, 11 Mar 2016 00:24:33 +0000 (19:24 -0500)] 
perldelta: merge in changes from perl5232delta

3 years agoperldelta: merge in changes from perl5231delta
Ricardo Signes [Fri, 11 Mar 2016 00:19:43 +0000 (19:19 -0500)] 
perldelta: merge in changes from perl5231delta

3 years agoperldelta: bootstrap perl5240delta with perl5230delta
Ricardo Signes [Fri, 11 Mar 2016 00:12:50 +0000 (19:12 -0500)] 
perldelta: bootstrap perl5240delta with perl5230delta

3 years agoAdd 5.22.2-RC1 epigraph
Steve Hay [Sun, 10 Apr 2016 17:44:59 +0000 (18:44 +0100)] 
Add 5.22.2-RC1 epigraph

3 years ago5.22.2-RC1 today
Steve Hay [Sun, 10 Apr 2016 13:11:23 +0000 (14:11 +0100)] 
5.22.2-RC1 today

3 years agoPATCH: [perl #127708] segfault in "$!" in threads
Karl Williamson [Sat, 9 Apr 2016 17:55:58 +0000 (11:55 -0600)] 
PATCH: [perl #127708] segfault in "$!" in threads

This was showing up on Darwin because its setlocale is particularly not
thread safe.  But the problem is more generic.  Using locales just
isn't a good idea in a threaded application, as locales are
process-wide, not thread-specific.  Calling setlocale() changes the
locale of all threads at the same time.  Further the return of
setlocale() is a pointer to internal storage.  If you call setlocale()
just to learn what it currently is without actually changing the locale,
there is no guarantee that another thread won't interrupt your thread,
switching the locale to something else before you've had a chance to
copy it somewhere else for safekeeping, and the internal storage may
have been freed during that interruption, leading to things like
segfaults.

This is a problem that has been around in the locale handling code for a
long time.  I don't know why it hasn't shown up before, or maybe it has
and is not reproducible because it's timing dependent, and so any
problems didn't have tickets written for them, or were rejected as not
reproducible.

But the problem has been made worse in recent releases.  Only fairly
recently has perl changed so this problem can occur in programs that
don't use locale explicitly: ones that don't 'use locale' nor call
setlocale().  This ticket is for such a program that gets a
locale-related segfault, without ever touching locales itself.

I have done an audit of the perl source, looking for all such
occurrences, and this patch fixes all of them that I found.  The only
other ones, besides "$!", is in converting to/from UTF-8 in cygwin.c.
In all such cases, perl briefly switches the locale, does an operation,
then switches back.  The solution here is to add mutexes to make these
areas of code uninterruptible critical sections, so that they can rely
on having the locale be what they expect it to be during the entirety of
the operation, and can't have a setlocale() from another thread free
internal storage.  But this is not a general solution.  A thread
executing these sections can interrupt some other thread doing a
setlocale() and zap that.  However, we have long cautioned against doing
setlocales() in a thread, and that caution was strengthened in a commit
made yesterday, fc82b82ef4784a38877f35f56ee16f14934460ce.

The current commit should make safe all threaded programs that don't use
locales explicitly.

It's too close to the 5.24 release to do the rearchitecting required for
a general solution.  That would involve adding more critical sections.

POSIX 2008 introduced new locale handling functions that are
thread-safe, and affect only a single thread, and don't require mutexes.
The ultimate solution would be to use those tools where available, and
to hide from the outer code which set is being used.  Thus, perl would
be thread-safe on such platforms, while remaining problematic on older
ones, though fixed so segfaults wouldn't occur.  Tony Cook believes we
could emulate the newer behavior on all platforms at a significant
performance penalty.  I think this would require a lot of code, and
suspect there would be glitches in it for XS code.  But he may have
some ideas about how to do it simply.  In any case, this has to wait
until post 5.24.

Three other notes:

It seems to me that the cygwin code could be replaced by equivalent code
that doesn't use locales at all.  The comments in the source seem to
even indicate that.  I'll look into doing this in 5.25.

Another possible reason that this hasn't shown up in earlier perls is
that the problems may have been entirely affecting I/O operations and
there are already mutexes involving I/O, and so those could be
inadvertently protecting from, or at least minimizing, the problems
found here.  I haven't investigated to verify this.

This commit doesn't add a test.  I am asking on p5p for assistance in
writing one

3 years agoAdd locale mutex
Karl Williamson [Thu, 7 Apr 2016 03:46:28 +0000 (21:46 -0600)] 
Add locale mutex

This adds a new mutex for use in the next commit for use with locale
handling.

3 years agomove perf test from re/pat.t to re/speed.t
David Mitchell [Sat, 9 Apr 2016 15:43:20 +0000 (16:43 +0100)] 
move perf test from re/pat.t to re/speed.t

These days we generally put re tests which rely on timing in a separate
file, t/re/speed.t; move a recently-added test there.

3 years agonew perf test in pat.t: avoid timing failure
David Mitchell [Sat, 9 Apr 2016 12:17:21 +0000 (13:17 +0100)] 
new perf test in pat.t: avoid timing failure

A new performance test in re/pat.t added by v5.23.9-58-gd14d585 could
occasionally fails to a timing issue. It was checking that the the
test took less than 1 sec to run; but since the clock usually has a
granularity of 1 sec, it could fail if the test ran over a tick boundary.

Change the condition to <= 1 sec, and increase the time the test takes on
a bad perl - it was taking 4sec on my system; it now takes about 14sec,
so there's less chance of a bad perl passing.

3 years agoStrengthen cautions about locale use with threads
Karl Williamson [Fri, 8 Apr 2016 19:46:44 +0000 (13:46 -0600)] 
Strengthen cautions about locale use with threads

This comes from our increased understanding of their perils, given
ticket #127708

3 years agoMore generalized fix for #127855, overallocate in SvGROW and not just sv_grow()
Yves Orton [Fri, 8 Apr 2016 19:25:20 +0000 (21:25 +0200)] 
More generalized fix for #127855, overallocate in SvGROW and not just sv_grow()

If we overallocate in SvGROW() and not just sv_grow() we can ensure
we have more cases where we can COW. We need to ensure we always
have room for a null and a reference count.

3 years agofix #127855, in Perl_sv_setpvn() we have to overallocate to enable COW
Yves Orton [Fri, 8 Apr 2016 18:46:43 +0000 (20:46 +0200)] 
fix #127855, in Perl_sv_setpvn() we have to overallocate to enable COW

We need to overallocate by 2 to do COW strings. One for the null,
one for the refcount.

3 years agotest for #127855 - Slowdown in m//g on COW strings of certain lengths
Yves Orton [Fri, 8 Apr 2016 19:17:34 +0000 (21:17 +0200)] 
test for #127855 - Slowdown in m//g on COW strings of certain lengths

3 years agoRevert "Make instr() a macro"
Karl Williamson [Fri, 8 Apr 2016 18:21:24 +0000 (12:21 -0600)] 
Revert "Make instr() a macro"

This reverts commit fea1d2dd5d210564d442a09fe034b62f262f35f9 due to it
causing problems so close to the release of 5.24.  See
https://rt.perl.org/Ticket/Display.html?id=127852

3 years agoupdate security contact information.
David Mitchell [Fri, 8 Apr 2016 10:14:10 +0000 (11:14 +0100)] 
update security contact information.

Point out that the security-reporting email address now creates an RT
ticket. Also, consolidate this information purely within perlsec.pod, and
make all the other places link to it with L<>.

3 years agoAdd another missing link to epigraphs.pod
Steve Hay [Thu, 7 Apr 2016 12:18:45 +0000 (13:18 +0100)] 
Add another missing link to epigraphs.pod

3 years ago(perl #126162) improve stat @array handling
Tony Cook [Thu, 31 Mar 2016 00:18:53 +0000 (11:18 +1100)] 
(perl #126162) improve stat @array handling

- warn on lexical arrays too

- limit the warning to under C<use warnings 'syntax';>

- test the warnings

- include the (correct) variable name where possible

3 years agoerror messages vary between platforms, use errno values instead
Tony Cook [Wed, 30 Mar 2016 23:40:25 +0000 (10:40 +1100)] 
error messages vary between platforms, use errno values instead

3 years agoadd the new stat(@array) diagnostic to perldiag
Tony Cook [Wed, 30 Mar 2016 05:48:40 +0000 (16:48 +1100)] 
add the new stat(@array) diagnostic to perldiag

3 years ago(perl #126162) warn if stat() is called on an array
Dan Collins [Wed, 30 Mar 2016 05:42:39 +0000 (16:42 +1100)] 
(perl #126162) warn if stat() is called on an array

3 years ago5.22.2 should appear this month, starting with RC1 on Sunday 10th
Steve Hay [Thu, 7 Apr 2016 08:01:30 +0000 (09:01 +0100)] 
5.22.2 should appear this month, starting with RC1 on Sunday 10th

3 years agoAdd SILENT_NO_TAINT_SUPPORT to S_Internals_V ()
Yves Orton [Wed, 6 Apr 2016 09:33:15 +0000 (11:33 +0200)] 
Add SILENT_NO_TAINT_SUPPORT to S_Internals_V ()

NO_TAINT_SUPPORT was added in 3b0e4ee2077, but SILENT_NO_TAINT_SUPPORT was overlooked.

3 years agoGet -Accflags=-DPERL_MEM_LOG compiling again
Matthew Horsfall [Fri, 1 Apr 2016 16:44:49 +0000 (12:44 -0400)] 
Get -Accflags=-DPERL_MEM_LOG compiling again

It had rotted a bit Well, more than one probably.

Move the declarations of the functions Perl_mem_log_alloc etc from handy.h
into embed.fnc where whey belong, and where Malloc_t will have already
been defined.

3 years agoss_dup: make new savestack have SS_MAXPUSH extra
David Mitchell [Tue, 5 Apr 2016 08:26:21 +0000 (09:26 +0100)] 
ss_dup: make new savestack have SS_MAXPUSH extra

This fixes RT #perl #127799

My commit v5.23.7-261-g3caf026 made PL_savestack_max claim to have
allocated less than had actually been claimed (by a margin of SS_MAXPUSH).
This made the 'check whether the stack needs extending code' slightly
simpler, and errs on the side of safety. Except:

Perl_ss_dup(), when duplicating the savestack, makes the new stack
PL_savestack_max in size, which is large enough to duplicate the existing
stack, but the new stack no longer has a SS_MAXPUSH margin at the top.

The dSS_ADD family of macros work by assuming there is always such a
margin: they push their args onto the stack and only then check whether
the stack needs growing. This makes the code much more efficient, but of
course breaks if no margin is present.

3 years agoFollow-up to previous Solaris/S_regmatch commit
David Mitchell [Mon, 4 Apr 2016 13:51:40 +0000 (14:51 +0100)] 
Follow-up to previous Solaris/S_regmatch commit

PL_charclass is the thing being temporarily #defined to something else, so
it's the thing that needs #undeffing at the end, not pl_charclass_dup.

Doesn't make any difference at the moment, but would if at some point
a function following S_regmatch() started making use of PL_charclass.

3 years agoS_regmatch(): work around Solaris optimiser bug
David Mitchell [Mon, 4 Apr 2016 12:27:35 +0000 (13:27 +0100)] 
S_regmatch(): work around Solaris optimiser bug

Recently these test scripts started failing on Solaris i386 with
-Duse64bitall:

    re/charset.t
    re/subst.t
    re/substT.t
    re/subst_wamp.t

The first failure is due to a Solaris Studio optimiser bug; this commit
works around that failure. It may or may not also fix the other failures
(all tests pass now on the development box I was using, but I didn't
confirm whether the other tests failed before the fix).

The basic problem is that within the main while loop in S_regmatch(),
the expression PL_charclass['\n'] returns the wrong value.

Looking at the disassembled code, it appears that looking up this value
just before the while loop correctly does it by getting the address of the
global array PL_charclass, adding 40 to it (ord('\n')*sizeof(U32)), then
dereffing it.

Within the loop however, it just reads the value from a local var. The
optimiser is under the misapprehension that this value has previously been
read in and assigned to a local var, but it certainly hasn't been at the
point where the while loop is first entered.

This commit works round the problem on builds with -Duse64bitall and the
bad version of Solaris Studio compiler (12.3), by making a copy of
PL_charclass's address.

This is a bit of hack. For one thing, I don't know whether other versions
of the compiler also need this workaround.

The failures were seen on a 32-bit system with -Duse64bitall: this created
a 64-bit executable (i.e. with 64-bit pointers) with the -m64 compiler
flag. I would speculate that the bug in the compiler relates to to
this particular circumstance (i.e. the bug might not appear for a build
done on a 64-bit OS host with or without -Duse64bitall).

3 years agoepigraphs.pod - Add missing link, plus minor formatting corrections
Steve Hay [Mon, 4 Apr 2016 12:35:55 +0000 (13:35 +0100)] 
epigraphs.pod - Add missing link, plus minor formatting corrections

3 years ago[perl #127760] add CUSTOMIZED for File-Path
Tony Cook [Mon, 4 Apr 2016 04:52:21 +0000 (14:52 +1000)] 
[perl #127760] add CUSTOMIZED for File-Path

https://github.com/rpcme/File-Path/pull/34

3 years ago[perl #127760] skip the Win32 UNC path tests on Win2k and older
Tony Cook [Wed, 30 Mar 2016 04:39:11 +0000 (15:39 +1100)] 
[perl #127760] skip the Win32 UNC path tests on Win2k and older

Windows 2000 doesn't seem to support a UNC path as a current
directory - setting the current directory to a UNC path and then
trying to stat(".") results in a file not found or similar error.

This does work on Windows XP and later.

3 years agoavoid mis-mangled name references on threaded C++ builds
Tony Cook [Mon, 4 Apr 2016 02:03:58 +0000 (12:03 +1000)] 
avoid mis-mangled name references on threaded C++ builds

g++ on recent darwin appears to be clang++ in disguise, and so
supports the TSA decorations, but the wrappers we define don't have
explicit extern "C" linkage (which perlapi.h does have).

Under C++ Time::HiRes wraps its includes in extern "C" { }, and
so references unmangled names for the perl_tsa_mutex_*() wrappers,
but since util.c never sees an extern "C" for those functions it
produces mangled names, causing undefined references in Time::HiRes.

Detected by a smoke run againt a smoke-me branch:

http://www.nntp.perl.org/group/perl.daily-build.reports/2016/03/msg190183.html

Longer term the TSA decorations should probably be probed for in Configure
and the wrapper declarations moved to embed.fnc

3 years agonote for detecting crypt() on Cygwin
Tony Cook [Mon, 4 Apr 2016 00:26:15 +0000 (10:26 +1000)] 
note for detecting crypt() on Cygwin

3 years agodon't test crypt()s tied fetch count if we don't have crypt()
Tony Cook [Sun, 3 Apr 2016 23:52:57 +0000 (09:52 +1000)] 
don't test crypt()s tied fetch count if we don't have crypt()

As of libcrypt 1.3, crypt() isn't detected on cygwin unless you install
libcrypt-devel, and this test failed.

3 years agorestore incorrectly deleted note
Yves Orton [Sun, 3 Apr 2016 08:50:22 +0000 (10:50 +0200)] 
restore incorrectly deleted note

3 years agofix debug sprintf issue
Yves Orton [Sat, 26 Mar 2016 11:22:06 +0000 (12:22 +0100)] 
fix debug sprintf issue

3 years agoExport lround() from POSIX
Aaron Crane [Fri, 1 Apr 2016 17:53:35 +0000 (18:53 +0100)] 
Export lround() from POSIX

This function was implemented as of 5.21.4, but not exported (even by
request). It's too late in the 5.24 freeze for it to be exported by default,
or as part of a tag, but we can at least make it available to those who want
to import it by name.

3 years agorun regen/uconfig_h.pl
David Mitchell [Fri, 1 Apr 2016 11:41:07 +0000 (12:41 +0100)] 
run regen/uconfig_h.pl

For some reason when the memmem probe was added, uconfig.h wasn't
regenerated correctly. Probably because it doesn't get run by default
with 'perl regen.pl' - which in turn is because it requires a shell
to run.

3 years agoImprove code comments for some ctx stuff
David Mitchell [Wed, 30 Mar 2016 14:11:26 +0000 (15:11 +0100)] 
Improve code comments for some ctx stuff

* in pp_return(), some comments were out of date about how
  leave_adjust_stacks() is called ;
* add a comment to all the functions that pp_return() tail-calls to the
  effect that they can be tail-called;
* make it clearer when/why OPf_SPECIAL is set on OP_LEAVE;
* CXt_LOOP_PLAIN can be a while loop as well as a plain block.

3 years agoRT #127786: assertion failure with eval in DB pkg.
David Mitchell [Mon, 28 Mar 2016 14:36:42 +0000 (15:36 +0100)] 
RT #127786: assertion failure with eval in DB pkg.

Normally a cloned anon sud has a NULL CvOUTSIDE(), unless that
sub can contain code that will do an eval.
However, calling eval from within the DB package pretends that the eval
was done in the caller's scope. which then trips up on the NULL
CvOUTSIDE().

ts)

3 years agore_exec_indentf,re_indentf: silence warnings
David Mitchell [Mon, 28 Mar 2016 08:59:10 +0000 (09:59 +0100)] 
re_exec_indentf,re_indentf: silence warnings

Pass the right types to printf.

For re_exec_indentf(), really the type of the depth arg should be changed
so that it and the depth var are consistent throughout regexec.c, but
that's probably something for post-5.24.

3 years agosilence -Wparentheses-equality
David Mitchell [Mon, 28 Mar 2016 09:52:18 +0000 (10:52 +0100)] 
silence -Wparentheses-equality

Clang has taken it upon itself to warn when an equality is wrapped in
double parentheses, e.g.

    ((foo == bar))

Which is a bit dumb, as any code along the lines of

    #define isBAR (foo == BAR)
    if (isBAR) {}

will trigger the warning.

This commit shuts clang up by putting in a harmless cast:

    #define isBAR cBOOL(foo == BAR)

3 years agosilence warnings in inline.h on Win64 VC build
Daniel Dragan [Sat, 26 Mar 2016 17:44:30 +0000 (13:44 -0400)] 
silence warnings in inline.h on Win64 VC build

c:\p523\src\inline.h(211) : warning C4267: 'function' : conversion from 'size_t'
 to 'I32', possible loss of data
c:\p523\src\inline.h(212) : warning C4267: 'function' : conversion from 'size_t'
 to 'I32', possible loss of data
c:\p523\src\inline.h(421) : warning C4244: '=' : conversion from '__int64' to 'I
32', possible loss of data
c:\p523\src\inline.h(423) : warning C4244: '=' : conversion from '__int64' to 'I
32', possible loss of data

To fix the warnings at line 211 and 212, change the func to use a signed
ptr length type. Although on x64, a 64b to 64b move instruction is 1 byte
longer than a 32b to 32b move, so this commit adds a couple more bytes of
machine code to the interp, but PVs len and cur are STRLEN, which is 64b
on 64b OS, so something bad would happen if a very large off arg was
passed to Perl_utf8_hop that was trucated to 32b, hence casting to silence
the warning isn't appropriate, instead a bigger type is needed.

S_cx_pushblock, a 8*(2^32), or 32 GB long perl stack malloc block is
unrealistic. A 32 GB mark stack is infinite recursion. Cast away the
warnings.

3 years agoMove the zeroing back before the dladdr() call.
Jarkko Hietaniemi [Sun, 27 Mar 2016 15:11:18 +0000 (11:11 -0400)] 
Move the zeroing back before the dladdr() call.

3 years ago[perl #127773: Assertion failure in perl built with Dusecbacktrace]
Vladimir Timofeev [Fri, 25 Mar 2016 12:41:25 +0000 (08:41 -0400)] 
[perl #127773: Assertion failure in perl built with Dusecbacktrace]

3 years agoODBM_File version bump
Jarkko Hietaniemi [Sun, 27 Mar 2016 14:50:51 +0000 (10:50 -0400)] 
ODBM_File version bump

3 years ago[perl #127751] error building ODBM_File on Windows, perl 5.23.9
Jarkko Hietaniemi [Thu, 24 Mar 2016 11:12:51 +0000 (07:12 -0400)] 
[perl #127751] error building ODBM_File on Windows, perl 5.23.9

No POSIX open in Win32, broken by ed6087adbd9c90b59cf3f08af7c23a947c00bf69

Use the PerlLIO_open3 as suggested by Tony Cook, use the same trick as POSIX.xs

3 years agoRevert "configure.com update for newlocale, freelocale, and uselocale."
Craig A. Berry [Sat, 26 Mar 2016 13:56:15 +0000 (08:56 -0500)] 
Revert "configure.com update for newlocale, freelocale, and uselocale."

This reverts commit f0e3aef8abfe33645e0b9682e5f5ec7090de749f.

The changes had actually already been done by a regen at
0f2b45c74307980ff2, so these were duplicates.

3 years agoimprove perldiag implicit close text still further
Aristotle Pagaltzis [Fri, 25 Mar 2016 23:55:21 +0000 (00:55 +0100)] 
improve perldiag implicit close text still further

3 years agoSuppress another empty \N{} warning in pat_advanced.t.
Craig A. Berry [Fri, 25 Mar 2016 21:48:35 +0000 (16:48 -0500)] 
Suppress another empty \N{} warning in pat_advanced.t.

Follow-up to d8d26cacf9f6b2fbd476.

3 years agoAdd probe for memmem
H.Merijn Brand [Fri, 25 Mar 2016 15:14:18 +0000 (16:14 +0100)] 
Add probe for memmem

3 years agoSuggest having the previous release ready.
Abigail [Fri, 25 Mar 2016 12:36:28 +0000 (13:36 +0100)] 
Suggest having the previous release ready.

Each time I do a release, I find myself scrambling to download the
tarball of the previous release, and install it so it can be compared
to the release that's worked on. Added a paragraph as a reminder to
that before the day of the release.

3 years agoAdd 's' and 'S' to list of ANSI C portable filename characters.
James E Keenan [Fri, 25 Mar 2016 12:13:00 +0000 (08:13 -0400)] 
Add 's' and 'S' to list of ANSI C portable filename characters.

For: RT #127783.  Thanks to Jim Davis for report.

3 years agoimprove perldiag implicit close text further
Aristotle Pagaltzis [Fri, 25 Mar 2016 11:02:44 +0000 (12:02 +0100)] 
improve perldiag implicit close text further

3 years agoPATCH: [perl #123417] Deprecate empty \N{}
Karl Williamson [Fri, 25 Mar 2016 01:45:24 +0000 (19:45 -0600)] 
PATCH: [perl #123417] Deprecate empty \N{}

3 years agot/re/re_tests: Add missing \ escape to a test
Karl Williamson [Tue, 22 Mar 2016 17:03:51 +0000 (11:03 -0600)] 
t/re/re_tests: Add missing \ escape to a test

This just happened to work, but the backslash should be escaped, as it
is evaluated in qq context

3 years agostop lc() etc accidentally modifying in-place.
David Mitchell [Sun, 20 Mar 2016 17:12:13 +0000 (17:12 +0000)] 
stop lc() etc accidentally modifying in-place.

As an optimisation, [ul]c() and [ul]cfirst() sometimes modify their
argument in-place rather than returning a modified copy.

This should only be done when there is no possibility that the arg is
going to be reused. However, this fails:

    use List::Util qw{ first };
    my %hash = ( ASD => 1, ZXC => 2, QWE => 3, TYU => 4);
    print first { lc $_ eq 'qwe' } keys %hash;

which prints "qwe" rather than "QWE".

Bascally everything in perl that sets $_ or $a/$b and calls a code block
or function, such as map, grep, for and, sort, either copies any PADTMPs,
turns off SvTEMP, and/or bumps the reference count.

List::Util doesn't do this, and it is likely that other CPAN modules
which do "set $_ and call a block" don't either.

This has been failing since 5.20.0: perl has been in-placing if the arg is
(SvTEMP && RC==1 && !mg) (due to v5.19.7-112-g5cd5e2d).

Make the optimisation critera stricter by always copying SvTEMPs.
It still allows the optimisation if the arg is a PADTMP - I don't know
whether this is unsafe too.

Perhaps we can think of something better after 5.24?

3 years agoimprove perldiag implicit close text
David Mitchell [Wed, 23 Mar 2016 16:11:01 +0000 (16:11 +0000)] 
improve perldiag implicit close text

3 years agoMark unexpectedly passing TEST -deparse tests
David Mitchell [Wed, 23 Mar 2016 16:30:54 +0000 (16:30 +0000)] 
Mark unexpectedly passing TEST -deparse tests

About 270 test files formerly marked as "expected to fail under
"./TEST -deparse" now pass. We must be doing something right :-)

Remove them from the list of expected failures.

Conversely, there are also 174 failing tests that are aren't marked
as expected to fail, so we're probably doing something wrong too :-(.

3 years agoList perl.develop-help.com in the RMG regarding smoke reports.
Matthew Horsfall [Wed, 23 Mar 2016 00:12:12 +0000 (20:12 -0400)] 
List perl.develop-help.com in the RMG regarding smoke reports.

3 years ago[perl #127764] Perl with '-Dusecbacktrace' doesn't compile on darwin
Jarkko Hietaniemi [Tue, 22 Mar 2016 23:43:21 +0000 (19:43 -0400)] 
[perl #127764] Perl with '-Dusecbacktrace' doesn't compile on darwin

Fix a thinko in 22ff3130.

3 years ago[perl #127765] Fix bogus $File::Spec::AmigaOS::VERSION
Dagfinn Ilmari Mannsåker [Tue, 22 Mar 2016 21:07:38 +0000 (21:07 +0000)] 
[perl #127765] Fix bogus $File::Spec::AmigaOS::VERSION

';' a single bitflip away from '3', which must have happened before
e46aa1dd got committed, since the SHA-1 hashes are all consistent.

3 years agoPoint out that at some stage, porting tests will fail.
Abigail [Mon, 21 Mar 2016 16:56:51 +0000 (17:56 +0100)] 
Point out that at some stage, porting tests will fail.

This trips me each and every time I make a release. Whenever the
release manager guide calls for a compile/make test cycle, I run
"make test_harness", and this fails at this stage, because Module::CoreList
has not been updated yet (the next action described in the release
managers guide is updating Module::CoreList).

I also removed some suboptimal advice I've written here in the past.

3 years agoMaintainers.pl updates
Chris 'BinGOs' Williams [Mon, 21 Mar 2016 15:09:21 +0000 (15:09 +0000)] 
Maintainers.pl updates

3 years agoIntegrate podlators 4.07
David Mitchell [Mon, 21 Mar 2016 08:45:13 +0000 (08:45 +0000)] 
Integrate podlators 4.07

3 years agoBump version in various places
Abigail [Sun, 20 Mar 2016 17:54:17 +0000 (18:54 +0100)] 
Bump version in various places

3 years agoNew perldelta
Abigail [Sun, 20 Mar 2016 17:25:14 +0000 (18:25 +0100)] 
New perldelta

3 years agoRemove vutil.c from list of customized files
Leon Timmermans [Sun, 20 Mar 2016 17:18:44 +0000 (18:18 +0100)] 
Remove vutil.c from list of customized files

3 years agoTick off releases
Abigail [Sun, 20 Mar 2016 17:00:54 +0000 (18:00 +0100)] 
Tick off releases

3 years agoEpigraph for 5.23.9.
Abigail [Sun, 20 Mar 2016 16:56:57 +0000 (17:56 +0100)] 
Epigraph for 5.23.9.

The missing capital in the book title is not a typo. The book is titled
using lowercase letters only.

3 years agoMerge branch 'release-5.23.9' into blead
Abigail [Sun, 20 Mar 2016 16:49:46 +0000 (17:49 +0100)] 
Merge branch 'release-5.23.9' into blead

3 years agoperldelta: Clarify a statement
Karl Williamson [Sun, 20 Mar 2016 15:50:45 +0000 (09:50 -0600)] 
perldelta: Clarify a statement

This was misleading and gave unnecessary detail about an internal-only
function.  I'm sorry I forgot to make an entry about this earlier.

3 years agoAdd new release to perlhist v5.23.9
Abigail [Sun, 20 Mar 2016 13:53:00 +0000 (14:53 +0100)] 
Add new release to perlhist

3 years agoChanged modules section for perldelta.pod
Abigail [Sun, 20 Mar 2016 13:25:31 +0000 (14:25 +0100)] 
Changed modules section for perldelta.pod

3 years agoAdded Acknowledgements
Abigail [Sun, 20 Mar 2016 12:45:33 +0000 (13:45 +0100)] 
Added Acknowledgements

3 years agoUpdate Module::CoreList for 5.23.9
Abigail [Sun, 20 Mar 2016 12:25:37 +0000 (13:25 +0100)] 
Update Module::CoreList for 5.23.9

3 years agoMention (relative) path to Module::CoreList's Changes file.
Abigail [Sun, 20 Mar 2016 12:21:42 +0000 (13:21 +0100)] 
Mention (relative) path to Module::CoreList's Changes file.

So we can easily copy-and-paste it.

3 years agoImprison at_tindex_nomg()
Karl Williamson [Sun, 20 Mar 2016 04:48:54 +0000 (22:48 -0600)] 
Imprison at_tindex_nomg()

This name is controversial.  Use #ifdef's to keep it from being exposed
outside of the places that already use it.  And don't publicize that it
exists.

3 years agoregcomp.c: Fix -Dr output.
Karl Williamson [Sun, 20 Mar 2016 04:02:32 +0000 (22:02 -0600)] 
regcomp.c: Fix -Dr output.

I got things slightly wroing in
b77aba85f6ec3b2a2341077b14f39261c5753cea.  It did not properly handle
the case for inversion /d of complemented classes, such as \W.  Two
examples being [^\W0-9] and [^\S\wa].

3 years agoDocument the changes for perl 5.23.9
Abigail [Sat, 19 Mar 2016 23:29:26 +0000 (00:29 +0100)] 
Document the changes for perl 5.23.9

We still need to take care of the automated parts (new/changed/delete module,
and the Acknowledgements.

3 years agoconfigure.com update for newlocale, freelocale, and uselocale.
Craig A. Berry [Sat, 19 Mar 2016 23:39:52 +0000 (18:39 -0500)] 
configure.com update for newlocale, freelocale, and uselocale.

Follow-up to ecb44b8e4ad52.

3 years agoSort perldiag
Father Chrysostomos [Sat, 19 Mar 2016 20:30:39 +0000 (13:30 -0700)] 
Sort perldiag

It’s nice that people leave things for me to clean up! :-)

3 years agoregcomp.c, perl.c: Use 'VOL' not 'volatile'
Karl Williamson [Sat, 19 Mar 2016 15:10:41 +0000 (09:10 -0600)] 
regcomp.c, perl.c: Use 'VOL' not 'volatile'

I presume that VOL is so perl can at least compile on compilers that lack
'volatile'.  (It was added by Larry in 1991 by 352d5a3ab; there were
probably a lot more compilers like that back then.)  But VOL is used
consistently in the core, with these being the two exceptions.

3 years agoregen
H.Merijn Brand [Sat, 19 Mar 2016 14:58:17 +0000 (15:58 +0100)] 
regen

3 years agoAdd Configure probes for newlocale, freelocale, and uselocale
H.Merijn Brand [Sat, 19 Mar 2016 14:01:58 +0000 (15:01 +0100)] 
Add Configure probes for newlocale, freelocale, and uselocale

3 years agoUpdate version to 0.9916
John Peacock [Sat, 19 Mar 2016 01:43:52 +0000 (21:43 -0400)] 
Update version to 0.9916

3 years agoUpgrade Win32API::File from version 0.1202 to 0.1203
Steve Hay [Sat, 19 Mar 2016 01:28:40 +0000 (01:28 +0000)] 
Upgrade Win32API::File from version 0.1202 to 0.1203

Fixes perl #125303.

(Includes a regen for the moved Myconst2perl.pm.)

3 years ago[MERGE] dtrace linking fixups
David Mitchell [Sat, 19 Mar 2016 00:01:51 +0000 (00:01 +0000)] 
[MERGE] dtrace linking fixups

3 years agofix up dtrace compile/link for Solaris
David Mitchell [Tue, 8 Mar 2016 11:31:22 +0000 (11:31 +0000)] 
fix up dtrace compile/link for Solaris

[perl #127543]

On some platforms, the use of dtrace / SystemTap requires generating an
extra .o file from a list of .o files before linking. For example,

    cc -o foo a.o b.o c.o

has to be replaced with

    dtrace -G -s dtrace.d -o dtrace.o  a.o b.o c.o # creates dtrace.o
    cc -o foo                dtrace.o  a.o b.o c.o

On Solaris in particular, "dtrace -G" modifies the *.o files that it's
passed as well as creating dtrace.o, and all the new/updated .o files need
to be linked together at the same time from the same single use of "dtrace
-G".

This complicates matters when building all of miniperl, libperl and perl,
and the reason for this commit is that once a dtrace probe made its way
into an inline static function via the recent context work, Solaris
stopped building under -Dusedtrace -Duseshrplib.

The fix that seems to work under both Solaris and Linux, for all
4 permutations of -Dusedtrace +/- -Duseshrplib, is (approx):

    # compile all the *.o's, then:

    # build miniperl:

    $ dtrace ...  -o dtrace_mini.o  a.o b.o c.o perlminimain.o
    $ cc -o miniperl dtrace_mini.o  a.o b.o c.o perlminimain.o

    # build libperl.a or .so:

    $ dtrace ...    -o dtrace_perllib.o  a.o b.o c.o
    $ ar rcu libperl.a dtrace_perllib.o  a.o b.o c.o

    # build perl:

    $ dtrace ...  -o dtrace_main.o  perlmain.o
    $ cc -o perl     dtrace_main.o  -lperl

This is has only recently arisen because we switched from PUSHSUB()
etc macros to S_cx_pushsub() etc inline functions, which contain
probes. Since the inline static functions, and hence the probes, are now
included in every source file, and since Solaris isn't smart enough to
remove inline static fns that aren't used in a particular compilation
unit, the probes end up getting used in every source file (at least where
PERL_CORE is true).

It also required fixing up XS-APItest's Makefile.PL, since one object
file is compiled using PERL_CORE.

3 years agoMakefile.SH: rationalise object list variables
David Mitchell [Mon, 7 Mar 2016 11:55:11 +0000 (11:55 +0000)] 
Makefile.SH: rationalise object list variables

There are a number of variables in the generated Makefile, such as
'obj' and 'minindt_obj', that enumerate various subsets of the object
files that need to be compiled and linked.

Rename and reorganise these vars slightly, to make the next commit
simpler. In particular it now splits the object files in into 3 sets:
common (av.o etc), those used just by miniperl (opmini.o etc)
and those used just by perl (op.o etc).

Should be no functional changes.

The changes to os2/Makefile.SHs have been done blind. Does anyone still
use OS2?

3 years agorename and function-ise dtrace macros
David Mitchell [Mon, 15 Feb 2016 13:48:24 +0000 (13:48 +0000)] 
rename and function-ise dtrace macros

This commit:

1. Renames the various dtrace probe macros into a consistent and
self-documenting pattern, e.g.

ENTRY_PROBE  => PERL_DTRACE_PROBE_ENTRY
RETURN_PROBE => PERL_DTRACE_PROBE_RETURN

Since they're supposed to be defined only under PERL_CORE, this shouldn't
break anything that's not being naughty.

2. Implement the main body of these macros using a real function.

They were formerly defined along the lines of

    if (PERL_SUB_ENTRY_ENABLED())
        PERL_SUB_ENTRY(...);

The PERL_SUB_ENTRY() part is a macro generated by the dtrace system, which
for example on linux expands to a large bunch of assembly directives.
Replace the direct macro with a function wrapper, e.g.

    if (PERL_SUB_ENTRY_ENABLED())
        Perl_dtrace_probe_call(aTHX_ cv, TRUE);

This reduces to once the number of times the macro is expanded.

The new functions also take simpler args and then process the values they
need using intermediate temporary vars to avoid huge macro expansions.

For example

    ENTRY_PROBE(CvNAMED(cv)
                    ? HEK_KEY(CvNAME_HEK(cv))
                    : GvENAME(CvGV(cv)),
                CopFILE((const COP *)CvSTART(cv)),
                CopLINE((const COP *)CvSTART(cv)),
                CopSTASHPV((const COP *)CvSTART(cv)));

is now

    PERL_DTRACE_PROBE_ENTRY(cv);

This reduces the executable size by 1K on -O2 -Dusedtrace builds,
and by 45K on -DDEBUGGING -Dusedtrace builds.

3 years agoConfigure: silence 'dtrace -G' probe
David Mitchell [Fri, 18 Mar 2016 23:29:44 +0000 (23:29 +0000)] 
Configure: silence 'dtrace -G' probe

When built with -Dusedtrace, Configure checks to see whether 'dtrace -G'
is supported, by running it. If it fails, it may spew error messages
to stderr, so use >/dev/null 2>&1.

3 years agoregex sets: fix Solaris optimiser bug (2nd attempt)
David Mitchell [Fri, 18 Mar 2016 22:36:40 +0000 (22:36 +0000)] 
regex sets: fix Solaris optimiser bug (2nd attempt)

[perl #127455]

My first fix for this, (v5.23.7-586-gd9cb841) didn't actually fix it.
The diagnosis was correct, but somewhere during fixing and testing I went
wrong, and the optimiser bug was still being triggered without me spotting
it.

The new approach, based on a suggestion by Tony C, is simply to
declare the errant local var 'fence' to be volatile. This stops the
compiler from optimising away its value.

3 years agoregcomp.c: Avoid a memory leak
Karl Williamson [Mon, 7 Mar 2016 22:37:11 +0000 (15:37 -0700)] 
regcomp.c: Avoid a memory leak

I spotted this in code reading.  The chances of it happening are quite
small.  It could happen under tainting with a user-defined \p{}
property, and /i matching.

3 years agoregcomp.c: Comment enhancements
Karl Williamson [Mon, 7 Mar 2016 17:49:17 +0000 (10:49 -0700)] 
regcomp.c: Comment enhancements

The text of one of these comments was furnished to me by Yves Orton some
time ago.

3 years agoMake instr() a macro
Karl Williamson [Fri, 11 Mar 2016 23:22:49 +0000 (16:22 -0700)] 
Make instr() a macro

... thus avoiding a function call overhead

3 years agoperlapi: Further clarification for term "Latin1"
Karl Williamson [Fri, 18 Mar 2016 02:57:48 +0000 (20:57 -0600)] 
perlapi: Further clarification for term "Latin1"

This is a follow on for 14d32fa99f736009ef63a8b17d164cd8f6e967d9

3 years agohandy.h: Add synonyms for macros
Karl Williamson [Fri, 11 Mar 2016 03:34:17 +0000 (20:34 -0700)] 
handy.h: Add synonyms for macros

I realized that we have inconsistent naming conventions for the
isFOO_uni() macros, like isALPHA_uni().  The "_uni" suffix elsewhere
refers to official Unicode code point numbers; whereas, for these macros
it refers to the native code point numbers for code points below 256.
And elsewhere, there are in some cases a _uni() and a uvchr() which mean
different things.

This commit adds '_uvchr' suffix equivalents for these macros, while
dropping mention in the documentation of the '_uni' forms.  Thus code
following the new paradigm will not be confusing, while existing code
will function unchanged.