This is a live mirror of the Perl 5 development currently hosted at
8 years agoBump ext/POSIX version to 1.48
Karl Williamson [Tue, 25 Nov 2014 19:20:42 +0000 (12:20 -0700)]
Bump ext/POSIX version to 1.48

8 years agoMake is_invariant_string()
Karl Williamson [Tue, 25 Nov 2014 19:12:54 +0000 (12:12 -0700)]
Make is_invariant_string()

This is a more accurately named synonym for is_ascii_string(), which is
retained.  The old name is misleading to someone programming for
non-ASCII platforms.

8 years agoImprove API pod of is_ascii_string
Karl Williamson [Tue, 25 Nov 2014 19:07:44 +0000 (12:07 -0700)]
Improve API pod of is_ascii_string

8 years agoMark is_ascii_string() as requiring looking at return value
Karl Williamson [Tue, 25 Nov 2014 19:00:48 +0000 (12:00 -0700)]
Mark is_ascii_string() as requiring looking at return value

There's no reason to call it otherwise; there are no side effects.

8 years ago[perl #123286] Lone C-style for in a block
Father Chrysostomos [Wed, 26 Nov 2014 02:08:13 +0000 (18:08 -0800)]
[perl #123286] Lone C-style for in a block

A block in perl usually consists of an enter/leave pair plus the con-
tents of the block:


But if the contents of the block are simple enough to forego the
full block structure, a simple scope op is used, which is not
even executed:


If there is a real nextstate op anywhere in the block, it resets the
stack to whatever it was at block entry, based on the value on the
context stack placed there by the enter op.  That’s why we can never
have scope+nextstate (we have ex-nextstate, or a former nextstate op
that is not executed).

A for-loop (for(init; cond; cont) { ... }) executes the init section
first, and then an unstack op, which is like nextstate in that it
resets the stack based on what the context stack says is the base off-
set for this block.

If we have an unstack op, we can’t use scope, just as we can’t use it
with nextstate.  But we *were* nonetheless using scope in this case.

Hence, map { for(...;...;...) {...} } ... caused the for-loop to reset
the stack to the beginning of map’s own arguments.  So the for-loop
would stomp on them.

We can see the same bug with ‘for’ clobbering an outer list:

$ perl5.20.1 -le 'print 1..3, do{for(0;0;){}}, 4..6;'

8 years agoCorrect OPf_SPECIAL/OP_UNSTACK comment
Father Chrysostomos [Wed, 26 Nov 2014 02:04:27 +0000 (18:04 -0800)]
Correct OPf_SPECIAL/OP_UNSTACK comment

I misread the code when I added it.

8 years agoUpdate release manager documents for producing .xz tarballs
Chris 'BinGOs' Williams [Tue, 25 Nov 2014 19:01:40 +0000 (19:01 +0000)]
Update release manager documents for producing .xz tarballs

8 years ago[perl #77860] \& proto should disallow sub calls
Father Chrysostomos [Tue, 25 Nov 2014 13:53:06 +0000 (05:53 -0800)]
[perl #77860] \& proto should disallow sub calls

It was checking to see whether its argument were an entersub op (&foo
is indeed an entersub) and then wrapping it in refgen (\).  But enter-
sub also covers &foo() and foo() and foo.  op_lvalue checks whether
the OPf_STACKED flag is set and only turns it into rv2cv if it is not.
(Only &foo lacks that flag.)  So I copied that logic into prototype

8 years ago[perl #47363] \@ proto and parenthesised arrays
Father Chrysostomos [Tue, 25 Nov 2014 13:35:55 +0000 (05:35 -0800)]
[perl #47363] \@ proto and parenthesised arrays

The bug reported was that foo((@foo)) and foo+(@foo) pass a scalar
reference to a subroutine with a \@ prototype.

The scalar reference passed is the last element of @foo, or
&PL_sv_undef if @foo has no elements.  If the containing sub is called
in list context, however, the entire array is flattened and the proto-
typed sub gets a list of references longer that it is expecting.

$ ./perl -Ilib -e 'sub f ($\@) { warn "@_"; warn ${$_[1]} if ref $_[1] eq SCALAR } @_ = a..z; f(1, @_); f(1, (@_))'
1 ARRAY(0x7fe1220061f0) at -e line 1.
1 SCALAR(0x7fe1220353e0) at -e line 1.
z at -e line 1.
$ ./perl -Ilib -e '() = sub {sub f ($\@) { warn "@_"; warn ${$_[1]} if ref $_[1] eq SCALAR } @_ = a..z; f(1, @_); f(1, (@_)) }->()'
1 ARRAY(0x7f914a8362a8) at -e line 1.
1 SCALAR(0x7f914a806430) SCALAR(0x7f914a82f678) SCALAR(0x7f914a82f690) SCALAR(0x7f914a82f6c0) SCALAR(0x7f914a82f6a8) SCALAR(0x7f914a82f750) SCALAR(0x7f914a82f768) SCALAR(0x7f914a82f7f8) SCALAR(0x7f914a82f810) SCALAR(0x7f914a82f7e0) SCALAR(0x7f914a835cf0) SCALAR(0x7f914a835d08) SCALAR(0x7f914a835d20) SCALAR(0x7f914a835d38) SCALAR(0x7f914a835d50) SCALAR(0x7f914a835d68) SCALAR(0x7f914a835d80) SCALAR(0x7f914a835d98) SCALAR(0x7f914a835db0) SCALAR(0x7f914a835dc8) SCALAR(0x7f914a835de0) SCALAR(0x7f914a835df8) SCALAR(0x7f914a835e10) SCALAR(0x7f914a835e28) SCALAR(0x7f914a835e40) SCALAR(0x7f914a835e58) at -e line 1.
a at -e line 1.

The problem here is that \ applied to an array usually checks whether
the array was parenthesized.  If it was, it gets flattened.  The same
code paths were used for the implicit \ added by the prototype.  The
reason for the erratic behaviour based on the context of the enclos-
ing sub is that the refgen op had no context applied to it.  Usually
that means an op is at the end of a sub and should inherit the call-
ing context.

If we change the logic to remove the parentheses from the array before
applying the implicit \ then it behaves as expected.  Furthermore, we
end up with a srefgen op, which doesn‘t care about context, so we
don’t need to bother setting it.

8 years agoAllow \(&sub) for & proto
Father Chrysostomos [Tue, 25 Nov 2014 06:28:34 +0000 (22:28 -0800)]
Allow \(&sub) for & proto

I accidentally broke this in e41e9865.  Prior to this commit,
\&foo was becoming srefgen and \(&foo) was becoming refgen.
Srefgen is a slightly faster version of refgen that only han-
dles one item.  The easiest fix was to change the logic
in op.c:ck_spair so that \(&sub) with parens becomes srefgen.

8 years agoTreat nmake the same as dmake (expand 6544e9b1a)
Chris 'BinGOs' Williams [Tue, 25 Nov 2014 12:00:26 +0000 (12:00 +0000)]
Treat nmake the same as dmake (expand 6544e9b1a)

Already applied upstream

8 years agoRemove op_const_class; just use the name on the stack
syber [Mon, 24 Nov 2014 15:55:15 +0000 (18:55 +0300)]
Remove op_const_class; just use the name on the stack

Instead of storing the class name in the op_const_class field of the
METHOP in addition to pushing it on to the stack, just use the item on
the stack.  This also makes $class->method faster if $class is already
a shared hash string.

8 years agoRemove -std=c89/-ansi if freebsd has "inline static" in <fenv.h>
Jarkko Hietaniemi [Tue, 25 Nov 2014 01:39:18 +0000 (20:39 -0500)]
Remove -std=c89/-ansi if freebsd has "inline static" in <fenv.h>

Since -std=c89 (eq -ansi) simply isn't compatible with "inline static".

Based on a fix by TonyC.

8 years agoPrefer -std=c89 over -ansi.
Jarkko Hietaniemi [Tue, 25 Nov 2014 00:13:05 +0000 (19:13 -0500)]
Prefer -std=c89 over -ansi.

8 years agoRevert "Drop -std=c89."
Jarkko Hietaniemi [Mon, 24 Nov 2014 23:57:58 +0000 (18:57 -0500)]
Revert "Drop -std=c89."

This reverts commit 0d55a45a6f024919f13cbe70fc861f5eb6d757ee.

8 years agoPATCH [perl #123280] Turn off expected warnings in uni/fold.t
Karl Williamson [Mon, 24 Nov 2014 22:36:35 +0000 (15:36 -0700)]
PATCH [perl #123280] Turn off expected warnings in uni/fold.t

8 years agoDmake's -v means verbose not version
Chris 'BinGOs' Williams [Mon, 24 Nov 2014 22:33:43 +0000 (22:33 +0000)]
Dmake's -v means verbose not version

As Steve said in a500b25a5 there was a bug somewhere.

dmake -v was being run which translates to 'dmake -f Makefile all'
but with verbosity.


Upstreamed to EUMM repository.

8 years agocharnames: More fix to work on EBCDIC.
Karl Williamson [Mon, 24 Nov 2014 18:22:00 +0000 (11:22 -0700)]
charnames: More fix to work on EBCDIC.

This adds a couple of fixes omitted from

8 years agot/ Fix for non-ASCII platforms
Karl Williamson [Mon, 24 Nov 2014 18:19:03 +0000 (11:19 -0700)]
t/ Fix for non-ASCII platforms

8 years agopp_pack.c: Make pack('U', 0x41) eq 'A'
Karl Williamson [Mon, 24 Nov 2014 21:58:47 +0000 (14:58 -0700)]
pp_pack.c: Make pack('U', 0x41) eq 'A'

The 'U' pack/unpack format must be in terms of Unicode code points.

8 years agopp_pack.c: Add comment
Karl Williamson [Mon, 24 Nov 2014 21:57:02 +0000 (14:57 -0700)]
pp_pack.c: Add comment

8 years agoImprove EBCDIC skip msgs in t/uni
Karl Williamson [Wed, 12 Nov 2014 19:53:50 +0000 (12:53 -0700)]
Improve EBCDIC skip msgs in t/uni

Add more explanation as to why they are skipped

8 years agot/uni/ Improve test names.
Karl Williamson [Sat, 8 Nov 2014 18:22:36 +0000 (11:22 -0700)]
t/uni/ Improve test names.

This is clearer as to what is being tested and the desired result.

8 years agot/uni/ Use calculated test count
Karl Williamson [Sun, 9 Nov 2014 01:17:13 +0000 (18:17 -0700)]
t/uni/ Use calculated test count

This test file calculates the number of tests, but discards it in favor
of done_testing().  Since we've gone to the trouble of computing it, use

8 years agolib/Unicode/UCD.t: Add missing arg to failure sprintf
Karl Williamson [Fri, 14 Nov 2014 17:08:35 +0000 (10:08 -0700)]
lib/Unicode/UCD.t: Add missing arg to failure sprintf

This wasn't spotted before because the test never failed.

8 years agoMake /[\N{}-\N{}]/ match Unicodely on EBCDIC
Karl Williamson [Mon, 24 Nov 2014 20:19:21 +0000 (13:19 -0700)]
Make /[\N{}-\N{}]/ match Unicodely on EBCDIC

This makes [\N{U+06}-\N{U+09}] match U+06, U+07, U+08, U+09 even on
EBCDIC platforms, allowing one to write portable ranges.  For 1047
EBCDIC this would match 0x2E, 0x2F, 0x16, and 0x05.

Thanks to Yaroslave Kuzmin for finding a bug in an earlier incarnation
of this patch.

8 years agotoke.c: Add comment
Karl Williamson [Thu, 13 Nov 2014 17:59:34 +0000 (10:59 -0700)]
toke.c: Add comment

8 years agoutf8.c: Shorten long constant names, and simplify
Karl Williamson [Mon, 24 Nov 2014 18:37:41 +0000 (11:37 -0700)]
utf8.c: Shorten long constant names, and simplify

The previous commit fixed a typo caused by it being hard to see the
differences in a long ALL_CAP name.  This uses #defines to type the long
name only once, and compile-time variables so the expression for the
length of strings only is specified once.

8 years agoutf8.c: Was taking sizeof() wrong thing
Karl Williamson [Mon, 24 Nov 2014 18:30:14 +0000 (11:30 -0700)]
utf8.c: Was taking sizeof() wrong thing

This was a typo due to the long name.  A future commit will make it
cleaner.  The sizeof() the wrong name evaluates to the right number on
ASCII platforms, but not EBCDIC.

8 years agoperlvar: Add info
Karl Williamson [Mon, 24 Nov 2014 17:41:23 +0000 (10:41 -0700)]
perlvar: Add info

8 years agocharnames: Generalize to work on non-ASCII platforms
Karl Williamson [Mon, 24 Nov 2014 17:34:27 +0000 (10:34 -0700)]
charnames: Generalize to work on non-ASCII platforms

This includes the tests.

The character names are now stored in native order.  This means that
pack('U') no longer works on non-ASCII platforms.  Use chr instead,
mostly, and pack('W*') for a sequence.

These changes required the 'encoding' pragma to no longer affect e.g.,
chr() outside its scope, which was recently done by

8 years agocharnames: Don't return UTF-8 unless have to.
Karl Williamson [Mon, 24 Nov 2014 04:44:17 +0000 (21:44 -0700)]
charnames: Don't return UTF-8 unless have to.

A Latin-1 range character doesn't require UTF-8 to be represented.  Not
using UTF-8 speeds things up a lot.  This commit changes the return to
be UTF-8 only if necessary.  This could be because
 1) the character isn't representable except in UTF-8; or
 2) we are being called at runtime and the character isn't ASCII-range.
    The only way we can currently guarantee that an upper-Latin1
    character will be treated with Unicode rules is to make it UTF-8
    (the Unicode bug).  The compile-time code (in toke.c) knows how to
    properly deal with non-UTF-8 upper Latin1 range characters.

The utf8::downgrade introduced in this commit is temporary.  Future
commits will change things so that there is no need for it.

8 years agotoke.c: Ignore 'use encoding' on \N{}
Karl Williamson [Mon, 24 Nov 2014 04:50:41 +0000 (21:50 -0700)]
toke.c: Ignore 'use encoding' on \N{}

The encoding pragma converts from a specified encoding into Unicode.
\N{} already returns the Unicode form, so the encoding pragma
should not operate on them.  This commit ensures that.  The only reason
things have appeared to work prior to this commit is that \N{} has
generally returned its value in UTF-8, which 'encoding' knows enough to
not disturb.  However, a custom name translator installed in the program
need not return in UTF-8, so this is a bug that just hasn't yet been

However, the next commit is about to change things so that a regular
\N{} only returns UTF-8 if it has to, so this bug would come up a lot
more often.  There is no need for adding a test case, because, without
this commit existing tests would fail in t/uni/greek.t.

8 years agolib/ Change variable name
Karl Williamson [Sun, 23 Nov 2014 17:18:32 +0000 (10:18 -0700)]
lib/ Change variable name

This lexical variable's use is about to change so it no longer will
always be in UTF-8 encoding.  So the name would become misleading.

8 years agocharnames: Nit in comments, pod
Karl Williamson [Sun, 23 Nov 2014 17:14:22 +0000 (10:14 -0700)]
charnames: Nit in comments, pod

8 years agocharnames: Bump version to 1.43
Karl Williamson [Sun, 23 Nov 2014 17:13:28 +0000 (10:13 -0700)]
charnames: Bump version to 1.43

8 years agotoke.c: Typo in comment
Karl Williamson [Sat, 22 Nov 2014 16:47:02 +0000 (09:47 -0700)]
toke.c: Typo in comment

8 years agoFix UTF8 lex sub names
Father Chrysostomos [Mon, 24 Nov 2014 07:41:45 +0000 (23:41 -0800)]
Fix UTF8 lex sub names

UTF8 lexical sub names were getting mangled, with extra junk on the end,
due to a precedence problem.

8 years agoperl5220delta: Function::Parameters update
Father Chrysostomos [Mon, 24 Nov 2014 07:04:30 +0000 (23:04 -0800)]
perl5220delta: Function::Parameters update

F:P has had an update, but now it fails due to the METHOP type
introduced in 5.21.5.

Patch at

8 years agoperl5215delta.pod: typo
Father Chrysostomos [Mon, 24 Nov 2014 07:02:51 +0000 (23:02 -0800)]
perl5215delta.pod: typo

8 years agoop_class_sv removed for threaded perls op_class_targ removed for non-threaded perls
syber [Sat, 22 Nov 2014 23:30:32 +0000 (02:30 +0300)]
op_class_sv removed for threaded perls op_class_targ removed for non-threaded perls

8 years agoThis commit speeds up class method calls when class name is constant.
syber [Fri, 21 Nov 2014 17:21:00 +0000 (20:21 +0300)]
This commit speeds up class method calls when class name is constant.


By about 30%.

It was done by saving class name (as shared COW string) in METHOP
and later checking it in method_common().

If it was set, then it fetches stash via gv_stashsv using precomputed
hash value instead of falling into a bunch of conditions and fetching
stash without hash value.

8 years agoremove a branch in SvIV_please_nomg
Daniel Dragan [Wed, 19 Nov 2014 04:08:25 +0000 (23:08 -0500)]
remove a branch in SvIV_please_nomg

On VC 2003 and GCC 4.6.3, this patch decreases from 3 branches to
2 branches that machine code that makes up SvIV_please_nomg. Functionality
should be identical as before. This is intended to make math functions like
pp_add faster. Due to complexity/my time, SvIV_please wasn't optimized.
"(SvNOK(sv) || SvPOK(sv)" was optimized to
"(SvFLAGS(sv) & (SVf_NOK|SVf_POK))" on GCC and VC 2003 before this patch,
so that change reenforces what the optimizer already did before.

.text section of miniperl.exe size in bytes
gcc 32b 4.6.3 -O2 before 0x10d154
gcc 32b 4.6.3 -O2 after  0x10d064
vc2003            before 0xa4odf
vc2003            after  0xa406f

8 years agoperldelta for d9bb50d52d1c
Tony Cook [Mon, 24 Nov 2014 03:40:55 +0000 (14:40 +1100)]
perldelta for d9bb50d52d1c

8 years agoimprove ParseXS RETVAL code gen
Daniel Dragan [Sat, 22 Nov 2014 22:11:20 +0000 (17:11 -0500)]
improve ParseXS RETVAL code gen

This patch avoids using ST(0) repeatedly in the OUTPUT section for RETVAL.
ST() include a read of global PL_stack_base. This read must be done between
every function call per C lang. XSRETURN also contains a PL_stack_base
read. sv_2mortal returns the incoming SV, the retval was previously ignored
and ST was used again. This patch reduced the number of ST references to
exactly 1, per RETVAL. The PL_stack_base reference in XSRETURN will be
optimized into the PL_stack_base reference in ST(0). Using the retval of
sv_2mortal allows the SV* to stay in a cheaper volatile register. In a
sequence of "RETVALSV = newSViv(RETVAL); RETVALSV = sv_2mortal(RETVALSV);
ST(0) = RETVALSV; XSRETURN(1);" RETVALSV never had to be saved around a
function call. Also ST(0) in a multi eval macro with different
function calls in it, will cause more PL_stack_base reads, so badly written
user supplied typemaps get optimized since a C auto that never had & done
on it is guarenteed to not change between function calls.

To produce cleaner C code, indenting cleanup is done, and if RETVAL is a
SV *, RETVALSV isn't created. Also if no additional boilerplate lines
like sv_2mortal are added, RETVALSV isn't created.

See [perl #123278] for details on machine code reductions that this patch
caused and also see

8 years agoperl5220delta: Hook::LexWrap is fixed
Father Chrysostomos [Mon, 24 Nov 2014 03:25:00 +0000 (19:25 -0800)]
perl5220delta: Hook::LexWrap is fixed

8 years agoknown_pod_issues.dat: 2 more known mods
Father Chrysostomos [Mon, 24 Nov 2014 03:24:38 +0000 (19:24 -0800)]
known_pod_issues.dat: 2 more known mods

8 years agoAdd 2 more problematic mods to perl5220delta
Father Chrysostomos [Mon, 24 Nov 2014 01:44:44 +0000 (17:44 -0800)]
Add 2 more problematic mods to perl5220delta

8 years agoUpdate Test-Simple to Alpha 078
Chad Granum [Mon, 24 Nov 2014 00:24:50 +0000 (16:24 -0800)]
Update Test-Simple to Alpha 078

8 years ago[perl #123062] & proto: only sub{} and \&sub
Father Chrysostomos [Mon, 24 Nov 2014 00:58:45 +0000 (16:58 -0800)]
[perl #123062] & proto: only sub{} and \&sub

It was allowing \@array, \%hash, \($list, %of, @refs), undef, and
recently also \$scalar.  It should only allow sub{} and \&sub.

8 years agoConfigure syncup
H.Merijn Brand [Sun, 23 Nov 2014 18:45:33 +0000 (19:45 +0100)]
Configure syncup

Some of these changes also made it upstream to the dist svn repo.

8 years agofix ext/B/t/optree_misc.t in unthreaded builds
David Mitchell [Sun, 23 Nov 2014 17:18:21 +0000 (17:18 +0000)]
fix ext/B/t/optree_misc.t in unthreaded builds

My fix to fix smokes broke something else.

(The people responsible for sacking the people who broke the builds, have
now been sacked.)

8 years agoAIX: gcc long doubles do not use -qlongdouble.
Jarkko Hietaniemi [Sun, 23 Nov 2014 14:59:25 +0000 (09:59 -0500)]
AIX: gcc long doubles do not use -qlongdouble.

8 years agofix recent Concise tests under PERL_UNICODE=''
David Mitchell [Sun, 23 Nov 2014 11:34:07 +0000 (11:34 +0000)]
fix recent Concise tests under PERL_UNICODE=''

Some smokers run with PERL_UNICODE set; this has the side effect of
making Concise display nextstate ops with open hints flags, e.g.

    nextstate(....) v:>,<,% ->8

where :... are the flags.

Concise 'golden samples' should have these flags set; they're stripped
from the expected output in the non-PERL_UNICODE case, rather than
being stripped from the actual output in the PERL_UNICODE case.

(It would probably make life easier if we did it the other way round.)

8 years agoRemove mysig* macros from vmsish.h.
Craig A. Berry [Sun, 23 Nov 2014 00:46:27 +0000 (18:46 -0600)]
Remove mysig* macros from vmsish.h.

We haven't defined overrides for these functions for a long time
so this is just dead code.

8 years agoUpdate Test-Simple to alpha 076
Chad Granum [Sat, 22 Nov 2014 19:58:05 +0000 (11:58 -0800)]
Update Test-Simple to alpha 076

For: RT #123277

8 years agoRevert part of 8629b8cee5
Steve Hay [Sat, 22 Nov 2014 17:55:17 +0000 (17:55 +0000)]
Revert part of 8629b8cee5

As BinGOs noted, all the EUMM testing should be happening in File::Temp
generated tempdirs under cpan/ExtUtils-MakeMaker/t/ so it handles being
run in parallel.

So the fact that lib/Big/(Dummy|Liar).pm are being created on Windows when
building/testing with GCC (but seemingly not MSVC++) is a bug somewhere.

8 years agodocument the postderef feature in
Ricardo Signes [Sat, 22 Nov 2014 03:20:04 +0000 (22:20 -0500)]
document the postderef feature in

8 years agoProtect ${^E_NCODING} from abuse
Father Chrysostomos [Fri, 21 Nov 2014 16:24:06 +0000 (08:24 -0800)]
Protect ${^E_NCODING} from abuse

When read, it is now always undef.  When set, it croaks as though
read-only except in the encoding package.  Hopefully that will dis-
suade anyone from depending on it.

8 years agoStorable: fixup pod wording
Jim Cromie [Fri, 6 Dec 2013 15:00:28 +0000 (08:00 -0700)]
Storable: fixup pod wording

fix grammar, eschew colloquial expression - s/turned into/converted to/

Increment Storable $VERSION.

For: RT #123271

8 years agomg.c: Remove poorly considered assertion
Karl Williamson [Fri, 21 Nov 2014 20:39:18 +0000 (13:39 -0700)]
mg.c: Remove poorly considered assertion

and following.

The final resolution of what to do here hasn't been made, but the
assertion is definitely not the way to go.

8 years agoUpdate .gitignore file
Steve Hay [Fri, 21 Nov 2014 18:49:36 +0000 (18:49 +0000)]
Update .gitignore file

ExtUtils::MakeMaker's Big/ (and Big/ now lands in lib/,
and Module::Build is no more

8 years agoFix longdblsize and nvsize for 64-bit USE_LONG_DOUBLE builds on Windows
Steve Hay [Fri, 21 Nov 2014 18:39:04 +0000 (18:39 +0000)]
Fix longdblsize and nvsize for 64-bit USE_LONG_DOUBLE builds on Windows

This fixes many test failures in op/pack.t, although two (13177 and 13180)
still remain.  The same two also fail with 32-bit USE_LONG_DOUBLE builds.

Thanks to for spotting the failures and the
likely cause of them.

8 years agoReport inaccesible file on failed require
Petr Písař [Fri, 21 Nov 2014 09:48:51 +0000 (10:48 +0100)]
Report inaccesible file on failed require

Commit 2433d39e6 (require should die if a file exists but can't be
read) made first failed opened file fatal as request in
[perl #113422]. However error message produced in that case is not
much helpful in identifying which file ound not been accessed:

    $ LANG=C perl -I/root -e 'require strict'
    Can't locate   Permission denied at -e line 1.

This patch adds the name of the failed file to the message to help
identify which @INC directory is erroneous:

    $ LANG=C ./perl -I/root -I./lib -e 'require strict'
    Can't locate   /root/ Permission denied at -e line 1.

Signed-off-by: Petr Písař <>
8 years agofix builds with ExtUtils::ParseXS
David Mitchell [Fri, 21 Nov 2014 12:48:59 +0000 (12:48 +0000)]
fix builds with ExtUtils::ParseXS

A recent change to ExtUtils::ParseXS broke builds: add
only when the 'file' var is present.

8 years agoRevert "Since HP cc is strict c89, use -std=c89 with gcc."
Jarkko Hietaniemi [Fri, 21 Nov 2014 12:09:25 +0000 (07:09 -0500)]
Revert "Since HP cc is strict c89, use -std=c89 with gcc."

This reverts commit ff265b04d5aca2feab3937e669b95fe0aefae8cd.

(no way this is going to work with uselargefiles)

Jarkko Hietaniemi [Fri, 21 Nov 2014 11:50:36 +0000 (06:50 -0500)]

8 years agoIncrease other ExtUtils mods’ version to 3.27
Father Chrysostomos [Fri, 21 Nov 2014 08:09:43 +0000 (00:09 -0800)]
Increase other ExtUtils mods’ version to 3.27

8 years agoRemove context param from set_padlist
Father Chrysostomos [Fri, 21 Nov 2014 08:05:00 +0000 (00:05 -0800)]
Remove context param from set_padlist

It doesn’t need it.

8 years agoIncrease $ExtUtils::ParseXS::VERSION to 3.27
Father Chrysostomos [Fri, 21 Nov 2014 08:00:38 +0000 (00:00 -0800)]
Increase $ExtUtils::ParseXS::VERSION to 3.27

8 years agoExtUtils::ParseXS: Suppress unused ‘file’ warning
Father Chrysostomos [Fri, 21 Nov 2014 07:59:59 +0000 (23:59 -0800)]
ExtUtils::ParseXS: Suppress unused ‘file’ warning

Since newXS_deffile was introduced, we don’t always use the file

8 years agoSort perldiag
Father Chrysostomos [Fri, 21 Nov 2014 05:39:55 +0000 (21:39 -0800)]
Sort perldiag

Also change a comma to a semicolon, two independent clauses were
joined with a comma.

8 years agomg.c: _get_encoding needs dVAR
Father Chrysostomos [Fri, 21 Nov 2014 05:22:41 +0000 (21:22 -0800)]
mg.c: _get_encoding needs dVAR

8 years agoIncrease $B::Deparse::VERSION to 1.31
Father Chrysostomos [Fri, 21 Nov 2014 05:20:31 +0000 (21:20 -0800)]
Increase $B::Deparse::VERSION to 1.31

8 years agoIncrease $POSIX::VERSION to 1.47
Father Chrysostomos [Fri, 21 Nov 2014 05:20:04 +0000 (21:20 -0800)]
Increase $POSIX::VERSION to 1.47

8 years agoIncrease $B::VERSION to 1.54
Father Chrysostomos [Fri, 21 Nov 2014 05:19:22 +0000 (21:19 -0800)]
Increase $B::VERSION to 1.54

8 years agoperl5216delta: Move an entry
Father Chrysostomos [Fri, 21 Nov 2014 04:25:02 +0000 (20:25 -0800)]
perl5216delta: Move an entry

This was supposed to have been in Internal Changes to begin with.

8 years agoperldelta for deprecating ${^ENCODING}
Karl Williamson [Thu, 20 Nov 2014 00:02:58 +0000 (17:02 -0700)]
perldelta for deprecating ${^ENCODING}

8 years agoperlvar: More text about ${^ENCODING}; refer by perldiag
Karl Williamson [Wed, 19 Nov 2014 23:49:53 +0000 (16:49 -0700)]
perlvar: More text about ${^ENCODING}; refer by perldiag

8 years agotoke.c: Consistently upgrade under encoding
Karl Williamson [Wed, 19 Nov 2014 05:02:21 +0000 (22:02 -0700)]
toke.c: Consistently upgrade under encoding

The documentation says that intermixing above-Latin1 code points with
ones that would be otherwise encoded to something else, like Greek,
causes the encoding to be foregone.  Until this commit, this only
happened when the above-latin1 code point came first in the string
constant being scanned; meaning string-order was important.  This
changes things to match the documentation

8 years agoDeprecate setting ${^ENCODING}
Dagfinn Ilmari Mannsåker [Mon, 10 Nov 2014 23:54:46 +0000 (23:54 +0000)]
Deprecate setting ${^ENCODING}

The commiter added a no warnings in t/op/leaky-magic.t, and made other
minor changes because of rebasing issues.

8 years agomg.c: White-space only
Karl Williamson [Wed, 19 Nov 2014 00:23:54 +0000 (17:23 -0700)]
mg.c: White-space only

Indent due to new blocks from previous commit

8 years agoMake encoding pragma lexical in scope
Karl Williamson [Wed, 19 Nov 2014 00:03:03 +0000 (17:03 -0700)]
Make encoding pragma lexical in scope

The encoding pragma is deprecated, but in the meantime it causes spooky
action at a distance with other modules that it may be combined with.
In these modules, operations such as chr(), ord(), and utf8::upgrade()
will suddenly start doing the wrong thing.

The documentation for 'encoding' has said to call it after loading other
modules, but this may be impractical.  This is especially bad with
anything that auto-loads at first use, like \N{} does now for charnames.

There is an issue with combining this with setting the variable
${^ENCODING} directly.  The potential for conflicts has always been
there, and remains.  This commit introduces a shadow hidden variable,
subservient to ${^ENCODING} (to preserve backwards compatibility) that
has lexical scope validity.

The pod for 'encoding' has been revamped to be more concise, clear, use
more idiomatic English, and to speak from a modern perspective.

8 years agoMake a function to get PL_encoding's value
Karl Williamson [Fri, 14 Nov 2014 18:18:57 +0000 (11:18 -0700)]
Make a function to get PL_encoding's value

This is in preparation for making the retrieval more complex in future
commits than it is now.  This is going into mg.c because the value is

8 years agoMake testing for PL_encoding into a macro
Karl Williamson [Wed, 12 Nov 2014 05:25:37 +0000 (22:25 -0700)]
Make testing for PL_encoding into a macro

This is in preparation for making the test more complicated.

8 years agolex_assign.t: Make store count test stricter
Father Chrysostomos [Mon, 17 Nov 2014 02:49:29 +0000 (18:49 -0800)]
lex_assign.t: Make store count test stricter

If ‘$foo = some op’ croaks and $foo has not been made read-only, then
it must be becasue ‘some op’ croaked, in which case the assignment
must not have happened.

We can make this test stricter and make sure the assignment doesn’t
happen, to avoid the possibility of buggy ops that write to their
targets before croaking.

8 years agoconcise.t: correct test description to match actual test
Jim Cromie [Tue, 18 Jun 2013 21:46:32 +0000 (15:46 -0600)]
concise.t: correct test description to match actual test

Commit c6036734 changed the subject of an optimized constant function
rendering test to one from the Storable API (ie stable), but missed
the function name repeated in the test description.  Fix that now.

8 years agoMake B use B::COP for nulled COPs
Father Chrysostomos [Fri, 21 Nov 2014 01:57:44 +0000 (17:57 -0800)]
Make B use B::COP for nulled COPs

Former COPs still carry information with them, and to get to it I had
to have B::Deparse rebless the op object into B::COP.

This commit makes B use the right class to begin with.  This happens
to make B::Concise output the extra information that nulled COPs carry
around with them, which was on my to-do list anyway, so I’m happy
about that.

8 years agoRemove extraneous semicolons from Deparse output
Father Chrysostomos [Thu, 20 Nov 2014 22:30:55 +0000 (14:30 -0800)]
Remove extraneous semicolons from Deparse output

Prior to the previous commit, it was emitting extra semicolons for
statements optimised away outside of any subroutine, and extra semi-
colons after sub declarations and the end of the enclosing scope.  The
previous commit made it also emit an extra semicolon at the end of the
main program, if the last thing was a sub declaration.  So I decided
to fix all three at once.

8 years ago[perl #77452] Deparse { ...; BEGIN{} } correctly
Father Chrysostomos [Thu, 20 Nov 2014 17:23:35 +0000 (09:23 -0800)]
[perl #77452] Deparse { ...; BEGIN{} } correctly

8635e3c2 (5.21.6) changed the COP sequence numbers for nested blocks,
such that most BEGIN blocks (incl. ‘use’ statements) and sub declara-
tions end up in the right place.  However, it had the side effect of
causing declarations at the end of the enclosing scope to fall out of
it and appear below.

This commit fixes that by adding an extra nulled COP to the end of the
enclosing scope if that scope ends with a sub, so the final declara-
tion gets deparsed before it.

The frequency of sub declarations at the end of the enclosing scope is
sufficiently low (I’m guessing a bit here) that this slight increase
in run-time memory usage is probably acceptable.

I had to change B::Deparse to deparse nulled COPs the same way it does
live COPs, which means we get more extraneous semicolons than before.
I hope to fix that in a forthcoming commit.  I also ran into a B bug,
in that null ops are not presented to Perl code with the right op
class (see the blessing in the patch).  I plan to fix that in a separ-
ate commit, too.

8 years agoop.h: Note unstack use of OPf_SPECIAL
Father Chrysostomos [Thu, 20 Nov 2014 05:58:08 +0000 (21:58 -0800)]
op.h: Note unstack use of OPf_SPECIAL

8 years Allow multiline prog
Father Chrysostomos [Tue, 18 Nov 2014 02:59:40 +0000 (18:59 -0800)] Allow multiline prog

Split it into multiple -e options for portability.

8 years agoUse in Deparse.t
Father Chrysostomos [Tue, 18 Nov 2014 02:54:04 +0000 (18:54 -0800)]
Use in Deparse.t

I like runperl.  I want runperl.

8 years agoSince HP cc is strict c89, use -std=c89 with gcc.
Jarkko Hietaniemi [Fri, 21 Nov 2014 01:19:27 +0000 (20:19 -0500)]
Since HP cc is strict c89, use -std=c89 with gcc.

Mitigates the downside of 0d55a45a a bit.

8 years agoDrop -std=c89.
Jarkko Hietaniemi [Fri, 21 Nov 2014 01:13:34 +0000 (20:13 -0500)]
Drop -std=c89.

(1) It doesn't mean "strict C89" on its own, -pedantic would also be needed.
(2) Using C99 features like long long or inline becomes harder.

The downside of this change is that C99-isms can more easily
creep into the core code, breaking it for non-gcc C89 compilers.

8 years agotgamma infinity limit for IEEE quad prec.
Jarkko Hietaniemi [Thu, 20 Nov 2014 02:40:55 +0000 (21:40 -0500)]
tgamma infinity limit for IEEE quad prec.

8 years agoUpdate perlhist for v5.21.6
Chris 'BinGOs' Williams [Fri, 21 Nov 2014 00:56:30 +0000 (00:56 +0000)]
Update perlhist for v5.21.6

8 years agoBump the perl version in various places for 5.21.7
Chris 'BinGOs' Williams [Fri, 21 Nov 2014 00:53:47 +0000 (00:53 +0000)]
Bump the perl version in various places for 5.21.7

8 years agoNew perldelta for v5.21.7
Chris 'BinGOs' Williams [Fri, 21 Nov 2014 00:16:56 +0000 (00:16 +0000)]
New perldelta for v5.21.7

8 years agoAdd epigraph for v5.21.6
Chris 'BinGOs' Williams [Fri, 21 Nov 2014 00:08:28 +0000 (00:08 +0000)]
Add epigraph for v5.21.6