This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Karl Williamson [Tue, 25 Nov 2014 19:20:42 +0000 (12:20 -0700)]
Bump ext/POSIX version to 1.48
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.
Karl Williamson [Tue, 25 Nov 2014 19:07:44 +0000 (12:07 -0700)]
Improve API pod of is_ascii_string
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.
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:
leave
enter
nextstate
whatever
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:
scope
ex-nextstate
whatever
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;'
0456
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.
Chris 'BinGOs' Williams [Tue, 25 Nov 2014 19:01:40 +0000 (19:01 +0000)]
Update release manager documents for producing .xz tarballs
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
application.
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.
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.
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
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.
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.
Jarkko Hietaniemi [Tue, 25 Nov 2014 00:13:05 +0000 (19:13 -0500)]
Prefer -std=c89 over -ansi.
Jarkko Hietaniemi [Mon, 24 Nov 2014 23:57:58 +0000 (18:57 -0500)]
Revert "Drop -std=c89."
This reverts commit
0d55a45a6f024919f13cbe70fc861f5eb6d757ee.
Karl Williamson [Mon, 24 Nov 2014 22:36:35 +0000 (15:36 -0700)]
PATCH [perl #123280] Turn off expected warnings in uni/fold.t
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.
Oops.
Upstreamed to EUMM repository.
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
27c3afbd6068ac83b49a11df3e33758ef059027e.
Karl Williamson [Mon, 24 Nov 2014 18:19:03 +0000 (11:19 -0700)]
t/test.pl: Fix for non-ASCII platforms
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.
Karl Williamson [Mon, 24 Nov 2014 21:57:02 +0000 (14:57 -0700)]
pp_pack.c: Add comment
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
Karl Williamson [Sat, 8 Nov 2014 18:22:36 +0000 (11:22 -0700)]
t/uni/case.pl: Improve test names.
This is clearer as to what is being tested and the desired result.
Karl Williamson [Sun, 9 Nov 2014 01:17:13 +0000 (18:17 -0700)]
t/uni/case.pl: 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
it.
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.
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.
Karl Williamson [Thu, 13 Nov 2014 17:59:34 +0000 (10:59 -0700)]
toke.c: Add comment
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.
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.
Karl Williamson [Mon, 24 Nov 2014 17:41:23 +0000 (10:41 -0700)]
perlvar: Add info
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
3e669301f0a6fa34269f0e1eaf1fbbd72cae498a.
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.
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
exposed.
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.
Karl Williamson [Sun, 23 Nov 2014 17:18:32 +0000 (10:18 -0700)]
lib/_charnames.pm: 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.
Karl Williamson [Sun, 23 Nov 2014 17:14:22 +0000 (10:14 -0700)]
charnames: Nit in comments, pod
Karl Williamson [Sun, 23 Nov 2014 17:13:28 +0000 (10:13 -0700)]
charnames: Bump version to 1.43
Karl Williamson [Sat, 22 Nov 2014 16:47:02 +0000 (09:47 -0700)]
toke.c: Typo in comment
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.
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 https://rt.cpan.org/Ticket/Display.html?id=100518
Father Chrysostomos [Mon, 24 Nov 2014 07:02:51 +0000 (23:02 -0800)]
perl5215delta.pod: typo
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
syber [Fri, 21 Nov 2014 17:21:00 +0000 (20:21 +0300)]
This commit speeds up class method calls when class name is constant.
I.e.
MyClass->method()
and
MyClass->$dynamic_method()
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.
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
Tony Cook [Mon, 24 Nov 2014 03:40:55 +0000 (14:40 +1100)]
perldelta for
d9bb50d52d1c
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
http://www.nntp.perl.org/group/perl.perl5.porters/2014/11/msg222342.html
Father Chrysostomos [Mon, 24 Nov 2014 03:25:00 +0000 (19:25 -0800)]
perl5220delta: Hook::LexWrap is fixed
Father Chrysostomos [Mon, 24 Nov 2014 03:24:38 +0000 (19:24 -0800)]
known_pod_issues.dat: 2 more known mods
Father Chrysostomos [Mon, 24 Nov 2014 01:44:44 +0000 (17:44 -0800)]
Add 2 more problematic mods to perl5220delta
Chad Granum [Mon, 24 Nov 2014 00:24:50 +0000 (16:24 -0800)]
Update Test-Simple to Alpha 078
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.
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.
OpenSource++
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.)
Jarkko Hietaniemi [Sun, 23 Nov 2014 14:59:25 +0000 (09:59 -0500)]
AIX: gcc long doubles do not use -qlongdouble.
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.)
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.
Chad Granum [Sat, 22 Nov 2014 19:58:05 +0000 (11:58 -0800)]
Update Test-Simple to alpha 076
For: RT #123277
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.
Ricardo Signes [Sat, 22 Nov 2014 03:20:04 +0000 (22:20 -0500)]
document the postderef feature in feature.pm
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.
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
Karl Williamson [Fri, 21 Nov 2014 20:39:18 +0000 (13:39 -0700)]
mg.c: Remove poorly considered assertion
See http://nntp.perl.org/group/perl.perl5.porters/222464
and following.
The final resolution of what to do here hasn't been made, but the
assertion is definitely not the way to go.
Steve Hay [Fri, 21 Nov 2014 18:49:36 +0000 (18:49 +0000)]
Update .gitignore file
ExtUtils::MakeMaker's Big/Dummy.pm (and Big/Liar.pm) now lands in lib/,
and Module::Build is no more
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 sisyphus1@optusnet.com.au for spotting the failures and the
likely cause of them.
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 strict.pm: 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 strict.pm: /root/strict.pm: Permission denied at -e line 1.
Signed-off-by: Petr Písař <ppisar@redhat.com>
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
PERL_UNUSED_VAR(file)
only when the 'file' var is present.
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)]
Document MACOSX_DEPLOYMENT_TARGET.
Father Chrysostomos [Fri, 21 Nov 2014 08:09:43 +0000 (00:09 -0800)]
Increase other ExtUtils mods’ version to 3.27
Father Chrysostomos [Fri, 21 Nov 2014 08:05:00 +0000 (00:05 -0800)]
Remove context param from set_padlist
It doesn’t need it.
Father Chrysostomos [Fri, 21 Nov 2014 08:00:38 +0000 (00:00 -0800)]
Increase $ExtUtils::ParseXS::VERSION to 3.27
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
variable.
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.
Father Chrysostomos [Fri, 21 Nov 2014 05:22:41 +0000 (21:22 -0800)]
mg.c: _get_encoding needs dVAR
Father Chrysostomos [Fri, 21 Nov 2014 05:20:31 +0000 (21:20 -0800)]
Increase $B::Deparse::VERSION to 1.31
Father Chrysostomos [Fri, 21 Nov 2014 05:20:04 +0000 (21:20 -0800)]
Increase $POSIX::VERSION to 1.47
Father Chrysostomos [Fri, 21 Nov 2014 05:19:22 +0000 (21:19 -0800)]
Increase $B::VERSION to 1.54
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.
Karl Williamson [Thu, 20 Nov 2014 00:02:58 +0000 (17:02 -0700)]
perldelta for deprecating ${^ENCODING}
Karl Williamson [Wed, 19 Nov 2014 23:49:53 +0000 (16:49 -0700)]
perlvar: More text about ${^ENCODING}; refer by perldiag
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
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.
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
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.
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
magical.
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.
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.
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.
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.
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.
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.
Father Chrysostomos [Thu, 20 Nov 2014 05:58:08 +0000 (21:58 -0800)]
op.h: Note unstack use of OPf_SPECIAL
Father Chrysostomos [Tue, 18 Nov 2014 02:59:40 +0000 (18:59 -0800)]
test.pl:runperl: Allow multiline prog
Split it into multiple -e options for portability.
Father Chrysostomos [Tue, 18 Nov 2014 02:54:04 +0000 (18:54 -0800)]
Use test.pl in Deparse.t
I like runperl. I want runperl.
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.
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.
Jarkko Hietaniemi [Thu, 20 Nov 2014 02:40:55 +0000 (21:40 -0500)]
tgamma infinity limit for IEEE quad prec.
Chris 'BinGOs' Williams [Fri, 21 Nov 2014 00:56:30 +0000 (00:56 +0000)]
Update perlhist for v5.21.6
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
Chris 'BinGOs' Williams [Fri, 21 Nov 2014 00:16:56 +0000 (00:16 +0000)]
New perldelta for v5.21.7
Chris 'BinGOs' Williams [Fri, 21 Nov 2014 00:08:28 +0000 (00:08 +0000)]
Add epigraph for v5.21.6