This is a live mirror of the Perl 5 development currently hosted at
6 years agoAdd lvref magic type
Father Chrysostomos [Wed, 24 Sep 2014 08:42:30 +0000 (01:42 -0700)]
Add lvref magic type

I just couldn’t resist using the backslash for the character, even
though I had to tweak to make it work.

6 years agoAdd lvref op type
Father Chrysostomos [Wed, 24 Sep 2014 07:58:23 +0000 (00:58 -0700)]
Add lvref op type

6 years agolvref.t: More parenthesized scalar ref tests
Father Chrysostomos [Wed, 24 Sep 2014 07:19:33 +0000 (00:19 -0700)]
lvref.t: More parenthesized scalar ref tests

These tests are actually nonsensical with the evals, but they currently
cause syntax errors.  Ultimately they are placeholders and reminders,
so it doesn’t matter.

6 years agolvref.t: Some assignments with mixed lhs
Father Chrysostomos [Wed, 24 Sep 2014 05:33:09 +0000 (22:33 -0700)]
lvref.t: Some assignments with mixed lhs

6 years agoImplement \my $x = ...
Father Chrysostomos [Mon, 22 Sep 2014 06:11:32 +0000 (23:11 -0700)]
Implement \my $x = ...

6 years agolvref.t: Test \$foo = \*bar
Father Chrysostomos [Sun, 21 Sep 2014 23:04:23 +0000 (16:04 -0700)]
lvref.t: Test \$foo = \*bar

6 years agolvref.t: To-do tests for foreach \
Father Chrysostomos [Sun, 21 Sep 2014 22:04:20 +0000 (15:04 -0700)]
lvref.t: To-do tests for foreach \

6 years agolvret.t: To-do tests for \local $scalar=
Father Chrysostomos [Sun, 21 Sep 2014 21:58:15 +0000 (14:58 -0700)]
lvret.t: To-do tests for \local $scalar=

6 years agoWhen making lex alias, don’t free old var too soon
Father Chrysostomos [Sun, 21 Sep 2014 21:43:37 +0000 (14:43 -0700)]
When making lex alias, don’t free old var too soon

It could be exactly the same variable, and the reference on the rhs
could be weak:

use feature ":all";
use Scalar::Util 'weaken';
my $a;
weaken($r = \$a);
\$a = $r;
Lvalue references are experimental at - line 5.
Segmentation fault: 11

6 years agolvref.t: To-do test for PADSTALE handling
Father Chrysostomos [Sun, 21 Sep 2014 21:23:00 +0000 (14:23 -0700)]
lvref.t: To-do test for PADSTALE handling

6 years agoSimple package scalar lvalue refs
Father Chrysostomos [Sun, 21 Sep 2014 20:56:01 +0000 (13:56 -0700)]
Simple package scalar lvalue refs

\$::x = ... works, but not \local $x yet.

6 years agolvref.t: Tests for error massages
Father Chrysostomos [Sun, 21 Sep 2014 19:29:30 +0000 (12:29 -0700)]
lvref.t: Tests for error massages

6 years agolvref.t: Remove to-do and eval from passing test
Father Chrysostomos [Sun, 21 Sep 2014 18:19:41 +0000 (11:19 -0700)]
lvref.t: Remove to-do and eval from passing test

This one passing test was failing inside the eval because closures
are not yet supported.  (That’s why I added explicit closure tests
in the previous commit.)

6 years agolvref.t: To-do tests for closures
Father Chrysostomos [Sun, 21 Sep 2014 18:16:33 +0000 (11:16 -0700)]
lvref.t: To-do tests for closures

6 years agoDocument lvalue ref diagnostics
Father Chrysostomos [Sun, 21 Sep 2014 07:22:41 +0000 (00:22 -0700)]
Document lvalue ref diagnostics

Also, use ‘a SCALAR reference’ rather than ‘a scalar reference’, to
match the style used elsewhere.

6 years agoFirst stab at lexical scalar aliases
Father Chrysostomos [Sat, 20 Sep 2014 21:49:04 +0000 (14:49 -0700)]
First stab at lexical scalar aliases

No \my$x= yet.  Only my $x; \$x =....

It does not work properly with variables closed over from outside;
hence, all the to-do tests fail still, since they do the assign-
ment in evals.

But this much works:

$ ./miniperl -Ilib -Mfeature=:all -e 'my $m; \$m = \$n; warn \$m; warn \$n'
Lvalue references are experimental at -e line 1.
SCALAR(0x7fa04b805510) at -e line 1.
SCALAR(0x7fa04b805510) at -e line 1.

6 years agoop.c: In newBINOP, set up op_last before CHECKOP
Father Chrysostomos [Sun, 21 Sep 2014 06:33:26 +0000 (23:33 -0700)]
op.c: In newBINOP, set up op_last before CHECKOP

Set up op_last pointers in newBINOP before calling the op-specific
ck_* routine.

That way, since this op sub-tree is well-formed from the outset, we
don’t need as much fix-up code elsewhere to account for the case where
the binop has been embedded inside a larger op tree (state var ini-

The repetition operator is an odd bird.  If the lhs is a list of one
item, it is effectively an unop, though still of class binop.  Though
op_last would usually point to the last immediate child, it ended
up null instead.  B::Deparse was written to expect that, so let’s
keep it that way by setting it to null in ck_repeat, now that the
last = first->sibling assignment in newBINOP (which used to do it)
happens earlier.

6 years agoIncrease $Opcode::VERSION to 1.29
Father Chrysostomos [Sat, 20 Sep 2014 20:48:48 +0000 (13:48 -0700)]
Increase $Opcode::VERSION to 1.29

6 years agoAdd refassign op type
Father Chrysostomos [Sat, 20 Sep 2014 20:47:58 +0000 (13:47 -0700)]
Add refassign op type

6 years agoop.c:ck_spair: Remove redundant checks
Father Chrysostomos [Sat, 20 Sep 2014 20:27:47 +0000 (13:27 -0700)]
op.c:ck_spair: Remove redundant checks

Neither the av nor the hv ops have the OA_RETSCALAR flag, so these
checks are unreachable.

These checks go all the way back to a0d0e21e (perl 5.000).

6 years agoTo-do tests for scalar lvalue refs
Father Chrysostomos [Sat, 20 Sep 2014 18:46:14 +0000 (11:46 -0700)]
To-do tests for scalar lvalue refs

6 years agoIncrease $warnings::VERSION to 1.27
Father Chrysostomos [Sat, 20 Sep 2014 18:16:08 +0000 (11:16 -0700)]
Increase $warnings::VERSION to 1.27

6 years agoAdd experimental::lvalue_refs warnings category
Father Chrysostomos [Sat, 20 Sep 2014 18:15:18 +0000 (11:15 -0700)]
Add experimental::lvalue_refs warnings category

6 years agoIncrease $feature::VERSION to 1.38
Father Chrysostomos [Sat, 20 Sep 2014 18:13:58 +0000 (11:13 -0700)]
Increase $feature::VERSION to 1.38

6 years agoAdd lvalue_refs feature feature
Father Chrysostomos [Sat, 20 Sep 2014 18:12:37 +0000 (11:12 -0700)]
Add lvalue_refs feature feature

6 years agoRemove trailing space from perlipc.pod.
Shlomi Fish [Sun, 9 Jun 2013 22:12:08 +0000 (01:12 +0300)]
Remove trailing space from perlipc.pod.

For: RT #122938 (first patch)

6 years agoremove trailing whitespace.
Shlomi Fish [Fri, 10 Oct 2014 12:33:39 +0000 (15:33 +0300)]
remove trailing whitespace.

For: RT #122942 (first patch)

6 years agoUpdate libnet to version 3.02
Steve Hay [Fri, 10 Oct 2014 23:20:32 +0000 (00:20 +0100)]
Update libnet to version 3.02

This skips the interactive prompt() from the Makefile.PL reported by bulk88
(and removes the t/external/*.t tests which will not be run as a result).

6 years agoUpdate EXCLUDED files list for libnet following 2e1731446c
Steve Hay [Fri, 10 Oct 2014 23:11:44 +0000 (00:11 +0100)]
Update EXCLUDED files list for libnet following 2e1731446c

6 years agomove dMY_CXT in dlutils.c closer to first use
Daniel Dragan [Fri, 10 Oct 2014 20:11:25 +0000 (16:11 -0400)]
move dMY_CXT in dlutils.c closer to first use

By computing dMY_CXT right before its first and usually last use, my_cxt
pointer doesn't need to be carried across function calls in SaveError. This
frees a C stack auto and/or register from being saved and restored in
SaveError. On VC 2003 32 bits -O1 threaded, the machine code size in bytes
dropped from 0x72 to 0x70 after this patch.

6 years agoSet PERL_MM_USE_DEFAULT in
Father Chrysostomos [Fri, 10 Oct 2014 21:51:45 +0000 (14:51 -0700)]

In the perl core, we shouldn’t be getting messages like this when
trying to build perl:

Should I do external tests?
These tests will fail if there is no internet connection or if a firewall
blocks or modifies some traffic.
[y/N] [n]

libnet’s Makefile.PL now does that.  To make it easier to maintain
such Makefiles.PL to work both on CPAN and in the core, set
PERL_MM_USE_DEFAULT temporarily in when running the

6 years agooptimize & rmv from public API Perl_tmps_grow and related code
Daniel Dragan [Fri, 10 Oct 2014 17:29:33 +0000 (13:29 -0400)]
optimize & rmv from public API Perl_tmps_grow and related code

Previously in PUSH_EXTEND_MORTAL__SV_C, "PL_tmps_ix + 1" would execute
twice, once for the nonmutable if(>=), then again after the potential
tmps_grow call. tmps_grow has an unused return register/void proto, put it
to use by returning ix.  Also change tmps_grow to take the result of
"PL_tmps_ix + the constant (usually 1) or non-constant (EXTEND_MORTAL)".
This avoid having to put the constant twice in machine code, once for the
if test, 2nd time for extend length param for tmps_grow call. For
non-constant/EXTEND_MORTAL usage, it allows the C optimizer to have the
length var to go out of liveness sooner if possible. Also the var used for
the if(>=) test is more likely to be in a register than length var.
So "if test variable" is closer on hand to the CPU than length var. In some
cases, if non-const len var isn't used again, it becomes the "ix" variable
by having PL_tmps_ix added to it. Change sv_2mortal to return sv instead
of NULL to remove a unique branch/block of machine code that assigns 0 to
return variable (Visual C didn't figure out return sv == returned NULL,
not sv). See also [perl #121845].

6 years agoDeparse split-to-our-array correctly
Father Chrysostomos [Fri, 10 Oct 2014 20:56:24 +0000 (13:56 -0700)]
Deparse split-to-our-array correctly

$ ./perl -Ilib -MO=Deparse -e 'our @x = split //, $a'
@x = split(//, $a, 0);

The ‘our’ disappears because ‘split’ swallows up the assignment and
writes to @x directly.  But the result is that no OUR_INTRO flag is
left in the op tree.

Fixing this based on the current op tree is very complicated.  So
this commit sets the flag on the split op and makes B::Deparse
look for it.

6 years agotoke.c:S_parse_opt_lexvar: Don’t use null terminator
Father Chrysostomos [Fri, 10 Oct 2014 03:35:35 +0000 (20:35 -0700)]
toke.c:S_parse_opt_lexvar: Don’t use null terminator

allocmy no longer depends on it.

6 years agoop.c:allocmy: Remove obsolete cmnts and assert
Father Chrysostomos [Fri, 10 Oct 2014 03:35:05 +0000 (20:35 -0700)]
op.c:allocmy: Remove obsolete cmnts and assert

We are no longer depending on strlen at all.  The name[2] check was
removed in 2009 in d6447115b.

6 years agoop.c:allocmy: Don’t depend on null termination
Father Chrysostomos [Fri, 10 Oct 2014 03:32:58 +0000 (20:32 -0700)]
op.c:allocmy: Don’t depend on null termination

This function has a len argument, but still depends on its argument’s
being null-terminated in one spot.  (All other parts of the function
use the length.)

6 years agoDeparse local our LIST
Father Chrysostomos [Thu, 9 Oct 2014 19:55:46 +0000 (12:55 -0700)]
Deparse local our LIST

The ‘local’ was being omitted.  I missed the list form of
‘local our’ in commit f351564117.

6 years agoUpdate libnet to CPAN version 3.01
Chris 'BinGOs' Williams [Fri, 10 Oct 2014 12:37:54 +0000 (13:37 +0100)]
Update libnet to CPAN version 3.01


libnet 3.01  -- Thu Oct 09 2014

  * Require IO::Socket::SSL >= 1.999 to protect against a bad version (0.30) of
    IO::Socket::IP and hopefully fix another bunch of CPAN Testers failures.

libnet 3.00  -- Thu Oct 09 2014

  * Skip Perl Critic, Pod and Pod Coverage tests unless AUTHOR_TESTING.
    [Resolves CPAN RT#99399]
  * Synchronize all $VERSIONs to the distribution's version number, bumping that
    to 3.00 so that no $VERSIONs end up going backwards.

libnet 1.30  -- Wed Oct 08 2014

  * Sigh. Fix PAUSE indexing problem again. Net::SMTP::SSL is already used by

libnet 1.29  -- Wed Oct 08 2014

  * Fix PAUSE indexing problem. Net::POP3::_SSLified and Net::SMTP::_SSLified
    are already used by Net-SSLGlue.

libnet 1.28  -- Wed Oct 08 2014

  * Improve code()/message() initialization and error handling in Net::Cmd
    [Tom Metro; resolves CPAN RT#14875]
  * Don't use the ALLO command on FTP servers that don't support it.  [Resolves
    CPAN RT#95717]
  * Stop Makefile.PL from requiring interactive configuration when running via
    cpan, cpanp or cpanm: just accept all defaults in these cases, as when
    running non-interactively.  [Resolves CPAN RT#48966]
  * Add optional POD coverage testing.
  * Add optional POD testing.
  * Add optional Perl::Critic testing.
  * Make code Perl::Critic clean.
  * Move Net/*.pm into lib/Net/ sub-directory within distribution. This is the
    usual layout style these days.
  * Change Net::SMTP::auth() so that it now falls back to another supported AUTH
    method if a given AUTH method fails.  [Ivan Baktsheev; closes PR#3]
  * Change Net::SMTP::auth() so that it uses the SMTP AUTH mechanism(s)
    specified in the Authen::SASL object if one is provided instead of a
    username.   If a plain text username is specified then use the first
    reported SMTP AUTH method supported, as usual.  [Ewen McNeill; resolves CPAN
  * Add support for IPv6 and SSL to Net::FTP, Net::NNTP, Net::POP3 and
    Net::SMTP.  These features are only available if the user has

      a recent IO::Socket::SSL for SSL support
      a recent IO::Socket::IP or an older IO::Socket::INET6 for IPv6 support

    If no SSL module is available it will work as before, but attempts to use
    the SSL functionality will result in an error message.  If no IPv6 modules
    are available it will just use IPv4 as before.  With IPv6 modules installed
    one can of course still access IPv4 hosts.
    [Steffen Ullrich; resolves CPAN RT#93823]

6 years agoUpdate Socket to CPAN version 2.016
Chris 'BinGOs' Williams [Fri, 10 Oct 2014 12:30:39 +0000 (13:30 +0100)]
Update Socket to CPAN version 2.016


2.016   2014/10/08 21:53:10
         * Wrap configure tests in a {} block in case of C99-deficient
           compilers (RT99363)
         * #include <stddef.h> so that NULL definitely exists (RT98248)
         * Need to pass NI_NUMERICSERV during unit tests for some OSes not to
           error (VMS) (RT98217)

6 years agoUpdate JSON-PP to CPAN version 2.27300
Chris 'BinGOs' Williams [Fri, 10 Oct 2014 12:22:42 +0000 (13:22 +0100)]
Update JSON-PP to CPAN version 2.27300


  - fixed a problem about substr in perl 5.8.6 and below
    many people report this issue and patched by haarg[at]

6 years agofix WinCE build
Daniel Dragan [Thu, 9 Oct 2014 23:43:13 +0000 (19:43 -0400)]
fix WinCE build

locale changes in 2014 broke WinCE build. localconv() doesn't exist on
WinCE. locale.h from celib has to be included for
setlocale()/xcesetlocale() and LC_* constants.

6 years agoperldelta for 11f610b5c537
Tony Cook [Fri, 10 Oct 2014 00:55:35 +0000 (11:55 +1100)]
perldelta for 11f610b5c537

6 years agoremove dl_nonlazy global if unused in Dynaloader
Daniel Dragan [Wed, 8 Oct 2014 05:42:23 +0000 (01:42 -0400)]
remove dl_nonlazy global if unused in Dynaloader

Saves an int of memory per interp. Removes a env var lookup, and on Win32
also remove a registry check for PERL_DL_NONLAZY. This speeds up start up
time of interp a tiny bit. While platforms other than hpux and dlopen use
RTLD_LAZY, they use it unconditionally ignoring PERL_DL_NONLAZY. I am not
judging that decision in this commit.

6 years agot/op/crypt.t: Perform SHA-256 algorithm if default one is disabled
Petr Písař [Mon, 7 Apr 2014 10:31:28 +0000 (12:31 +0200)]
t/op/crypt.t: Perform SHA-256 algorithm if default one is disabled

The crypt(3) call may return NULL. This is the case on FIPS-enabled
platforms. Then "salt makes a difference" test would fail.

This fixes RT#121591.

Signed-off-by: Petr Písař <>
6 years agoperldelta for 2c2d7daa9519, a6d695237c4c
Tony Cook [Thu, 9 Oct 2014 00:59:55 +0000 (11:59 +1100)]
perldelta for 2c2d7daa9519a6d695237c4c

6 years ago[perl #122445] use magic on $DB::single etc to avoid overload issues
Tony Cook [Thu, 2 Oct 2014 05:54:58 +0000 (15:54 +1000)]
[perl #122445] use magic on $DB::single etc to avoid overload issues

This prevents perl recursing infinitely when an overloaded object is
assigned to $DB::single, $DB::trace or $DB::signal

This is done by referencing their values as IVs instead of as SVs in
dbstate, and by adding magic to those variables so that assignments to
the scalars update the PL_DBcontrol array.

6 years ago[perl #122445] test for overload assigned to $DB::single
Tony Cook [Thu, 14 Aug 2014 01:09:10 +0000 (11:09 +1000)]
[perl #122445] test for overload assigned to $DB::single

6 years agoSpecial test preambles needed for these.
Jarkko Hietaniemi [Wed, 8 Oct 2014 21:58:54 +0000 (23:58 +0200)]
Special test preambles needed for these.

6 years agopod_rules.t needs special preamble.
Jarkko Hietaniemi [Wed, 8 Oct 2014 21:47:20 +0000 (23:47 +0200)]
pod_rules.t needs special preamble.

6 years agoVersion bump for e6425454.
Jarkko Hietaniemi [Wed, 8 Oct 2014 21:34:00 +0000 (23:34 +0200)]
Version bump for e6425454.

6 years agoTest preamble: explicit @INC, instead of unshift.
Jarkko Hietaniemi [Wed, 8 Oct 2014 21:12:16 +0000 (23:12 +0200)]
Test preamble: explicit @INC, instead of unshift.

Exception: t/run/switchI.t, needs the unshift way.

6 years agoTest preamble: if requiring ./, needs chdir.
Jarkko Hietaniemi [Fri, 26 Sep 2014 01:02:08 +0000 (21:02 -0400)]
Test preamble: if requiring ./, needs chdir.

Exception: t/op/chdir, which does things its own way, for obvious reasons.

6 years agoTest preamble: unify to dot slash test dot pl
Jarkko Hietaniemi [Fri, 26 Sep 2014 00:58:56 +0000 (20:58 -0400)]
Test preamble: unify to dot slash test dot pl

6 years agoTest preamble: unify chdir 't' if -d 't';
Jarkko Hietaniemi [Fri, 26 Sep 2014 00:53:35 +0000 (20:53 -0400)]
Test preamble: unify chdir 't' if -d 't';

6 years agoAdd various *BSD O_ constants.
Jarkko Hietaniemi [Wed, 8 Oct 2014 19:08:54 +0000 (21:08 +0200)]
Add various *BSD O_ constants.

6 years agoTru64: the socket API defines must come early.
Jarkko Hietaniemi [Wed, 8 Oct 2014 06:40:21 +0000 (08:40 +0200)]
Tru64: the socket API defines must come early.

There seems to be no way around needing to select the socket API early.

6 years agoattrs.t: Test that attr handlers can see prototypes
Father Chrysostomos [Wed, 8 Oct 2014 15:29:04 +0000 (08:29 -0700)]
attrs.t: Test that attr handlers can see prototypes

6 years agoperldelta for ff5314c5aa54
Tony Cook [Tue, 7 Oct 2014 23:37:34 +0000 (10:37 +1100)]
perldelta for ff5314c5aa54

6 years agofix attributes memcmp without len<6 (asan catch)
Reini Urban [Tue, 7 Oct 2014 04:44:27 +0000 (15:44 +1100)]
fix attributes memcmp without len<6 (asan catch)

6 years agoTru64: does have sa_len.
Jarkko Hietaniemi [Tue, 7 Oct 2014 20:20:28 +0000 (22:20 +0200)]
Tru64: does have sa_len.

6 years agoTru64: _SOCKADDR_LEN is good.
Jarkko Hietaniemi [Tue, 7 Oct 2014 20:21:54 +0000 (22:21 +0200)]
Tru64: _SOCKADDR_LEN is good.

Declare it as early as possible.  The earlier position lead into
getting a mix of different APIs with mismatching sockadddrs.

6 years agot/io/eintr.t: Make this pass on my ppc64 box
Ævar Arnfjörð Bjarmason [Tue, 7 Oct 2014 19:57:59 +0000 (19:57 +0000)]
t/io/eintr.t: Make this pass on my ppc64 box

See the "Test failures in blead on ppc64" thread on perl5-porters for
details. I'd fail on the previous value, this passes every time.

6 years agoTru64: the cluster filesystem is special.
Jarkko Hietaniemi [Tue, 7 Oct 2014 18:28:20 +0000 (20:28 +0200)]
Tru64: the cluster filesystem is special.

(It has non-POSIX interfaces and semantics which probably should
 be left outside e.g. Cwd::realpath()).

6 years agoTru64: Document "read_cur_obj_info: bad file magic number" error.
Jarkko Hietaniemi [Mon, 6 Oct 2014 21:34:56 +0000 (23:34 +0200)]
Tru64: Document "read_cur_obj_info: bad file magic number" error.

6 years agoSkip the test if in linux but not in x86*.
Jarkko Hietaniemi [Tue, 7 Oct 2014 06:49:02 +0000 (08:49 +0200)]
Skip the test if in linux but not in x86*.

The state of things found by Ævar in ppc linux was even weirder:
most -- but not all! -- text symbols were in D section, not in T.

Skipping is fine since we are here after best-effort testing,
failing softly is quite acceptable.

6 years agoThe double-double precision can be really large.
Jarkko Hietaniemi [Tue, 7 Oct 2014 06:35:04 +0000 (08:35 +0200)]
The double-double precision can be really large.

I don't know where I had pulled the earlier smaller limit,
but sisyphus@ set me right.

6 years agoFix EBCDIC-only bug with /[...]/
Karl Williamson [Mon, 6 Oct 2014 22:13:31 +0000 (16:13 -0600)]
Fix EBCDIC-only bug with /[...]/

Perl has special handling with ranges in bracketed character classes
when the end points are either both uppercase or both lowercase.  This
used a different test which is incorrect.  The consequences were that a
some Latin1 ranges would be rendered as empty.

6 years agoregcomp.c: Fix EBCDIC-only memory leak
Karl Williamson [Mon, 6 Oct 2014 20:55:38 +0000 (14:55 -0600)]
regcomp.c: Fix EBCDIC-only memory leak

6 years agoregcomp.c: Fix typo in comment
Karl Williamson [Mon, 6 Oct 2014 20:55:00 +0000 (14:55 -0600)]
regcomp.c: Fix typo in comment

6 years agoDocument special EBCDIC [...] literal range handling
Karl Williamson [Mon, 6 Oct 2014 18:14:36 +0000 (12:14 -0600)]
Document special EBCDIC [...] literal range handling

6 years ago\N{...} now treated as literal for EBCDIC qr/[...]/
Karl Williamson [Mon, 6 Oct 2014 18:02:25 +0000 (12:02 -0600)]
\N{...} now treated as literal for EBCDIC qr/[...]/

Perl specially handles some ranges in bracketed character classes to
deal with gaps between, for example, "i" and "j".  The next commit will
better document this.  This special handling is only invoked when both
ends of the range are literals.  This commit extends that so that a
\N{...} construct is considered a literal for this purpose.

There really shouldn't be any difference in the handling of "A" vs
"\N{LATIN CAPITAL LETTER A}".  And this commit makes them be handled the

It further makes \N{U+0041} be treated the same.  The programmer here is
effectively saying "A", and invoking the Unicode definition for it, so
it stands to reason that the range s/he wants should also be interpreted
the Unicode way.

6 years agore/pat.t: Add some EBCDIC tests
Karl Williamson [Mon, 6 Oct 2014 17:49:00 +0000 (11:49 -0600)]
re/pat.t: Add some EBCDIC tests

These test the special handling of ranges in bracketed character classes
where the endpoints are alphanumeric literals, but there is a code point
gap in the range that would otherwise match but shouldn't.

6 years agotoke.c: Extract into a named string constant
Karl Williamson [Sat, 4 Oct 2014 17:13:45 +0000 (11:13 -0600)]
toke.c: Extract into a named string constant

This moves a literal double-quoted string into a const variable, so that
it only need be written out once, and its  size can be compiler-computed
and used as another const variable.  Hence, mnemonics are used instead
of bare numbers.

6 years agotoke.c: Update, clarify comments, fix some indents
Karl Williamson [Sat, 4 Oct 2014 16:09:46 +0000 (10:09 -0600)]
toke.c: Update, clarify comments, fix some indents

6 years agoreg_mesg.t: Add comments; remove trailing white-space
Karl Williamson [Fri, 3 Oct 2014 04:46:31 +0000 (22:46 -0600)]
reg_mesg.t: Add comments; remove trailing white-space

6 years agoperlapi: Clarify two entries
Karl Williamson [Thu, 2 Oct 2014 03:00:28 +0000 (21:00 -0600)]
perlapi: Clarify two entries

6 years agoimprove and reword README.win32
Daniel Dragan [Tue, 7 Oct 2014 06:47:15 +0000 (02:47 -0400)]
improve and reword README.win32

6 years agofix op/infnan.t failures on VC 6
Daniel Dragan [Tue, 7 Oct 2014 05:44:44 +0000 (01:44 -0400)]
fix op/infnan.t failures on VC 6

fixes 2 failures, first is a fatal error, sceond is a not ok
ok 460 - abs(NaN) is NaN
ok 461 - int(NaN) is NaN
Can't take sqrt of NaN at op/infnan.t line 319.
ok 465 - sin(NaN) is NaN
not ok 466 - rand(NaN) is NaN
# Failed test 466 - rand(NaN) is NaN at op/infnan.t line 331
#      got "0.20653527722801"
# expected "NaN"
ok 467 - sin(9**9**9) is NaN

6 years agoMollify concise-xs.t
Father Chrysostomos [Tue, 7 Oct 2014 05:10:40 +0000 (22:10 -0700)]
Mollify concise-xs.t

6 years agoDeparse foreach state $x
Father Chrysostomos [Tue, 7 Oct 2014 04:59:16 +0000 (21:59 -0700)]
Deparse foreach state $x

B::Deparse was emitting ‘foreach my’ instead of ‘foreach state’.

This example prints 1:

use feature ':all'; no warnings experimental;
sub f {
  my sub foo;
  foo(), return if @_;
  for state $x (1) {
    sub foo { print $x, "\n" }

If you change ‘state’ to ‘my’, it prints nothing.

So there is a difference between ‘for my’ and ‘for state’.  (At first
I thought there might not be.)

6 years agoDeparse.t: Delete a test
Father Chrysostomos [Tue, 7 Oct 2014 03:39:12 +0000 (20:39 -0700)]
Deparse.t: Delete a test

It was identical to one 3 tests earlier.

6 years agoop_reg_common.h: Nits
Karl Williamson [Mon, 29 Sep 2014 18:41:42 +0000 (12:41 -0600)]
op_reg_common.h: Nits

Add missing U suffix to unsigned numeric constant; parenthesize macro
expansions for safety.

6 years agoFinish deparsing ‘my sub if; CORE::if...’
Father Chrysostomos [Tue, 7 Oct 2014 01:46:54 +0000 (18:46 -0700)]
Finish deparsing ‘my sub if; CORE::if...’

Commit 3188a8216 took care of the majority of cases making mostly gen-
eral changes.

This commit finishes up all the weird keywords that need spe-
cial handling.

6 years agopodcheck.
Jarkko Hietaniemi [Mon, 6 Oct 2014 21:04:12 +0000 (23:04 +0200)]

6 years agoThe double-double mantissa precision ... it's complicated.
Jarkko Hietaniemi [Mon, 6 Oct 2014 19:36:04 +0000 (21:36 +0200)]
The double-double mantissa precision ... it's complicated.

6 years agoAIX/longdouble: switch the default to allow it.
Jarkko Hietaniemi [Mon, 6 Oct 2014 19:27:28 +0000 (21:27 +0200)]
AIX/longdouble: switch the default to allow it.

Since the only really unfixable part is the inf/nan support.

Document the troublesomeness in README.aix.

6 years agoDelete obsolete comment fragment.
Jarkko Hietaniemi [Mon, 6 Oct 2014 18:36:29 +0000 (20:36 +0200)]
Delete obsolete comment fragment.

6 years agoUse the double-double size only if using long double.
Jarkko Hietaniemi [Mon, 6 Oct 2014 18:33:32 +0000 (20:33 +0200)]
Use the double-double size only if using long double.

... and only for the buffer size, not for the extraction.

6 years agoThe leading underscore is optional in Darwin.
Jarkko Hietaniemi [Mon, 6 Oct 2014 18:02:14 +0000 (20:02 +0200)]
The leading underscore is optional in Darwin.

6 years agoBail out if there seem to be no text symbols.
Jarkko Hietaniemi [Mon, 6 Oct 2014 17:55:38 +0000 (19:55 +0200)]
Bail out if there seem to be no text symbols.

Found by Ævar in an IBM pSeries POWER7 Fedora Linux box.
All the text symbols (code) seemed to be 'D' (data).

There might be something further to fix regarding the use of 'nm'
(or maybe 'ar'?) in this particular box, but this change makes
the test more robust against surprising nm results.

6 years agoDeparse sub calls quietly
Father Chrysostomos [Mon, 6 Oct 2014 15:28:40 +0000 (08:28 -0700)]
Deparse sub calls quietly

In commit a958cfbb8 I used eval{prototype "CORE::..."} to see whether
something is a keyword, not realising that we have a __DIE__ hand-
ler that squeaks every time.  It is only installed when Deparse is
invoked via -MO.

Localising $SIG{__DIE__} does the trick.  Localising $@ as well is a
good idea when using eval, though I haven’t checked whether that was
causing problems.

6 years ago[perl #122911] regexp.h: Rmv VOL from op_comp sig
Father Chrysostomos [Mon, 6 Oct 2014 13:06:51 +0000 (06:06 -0700)]
[perl #122911] regexp.h: Rmv VOL from op_comp sig

It is no longer needed as of 1067df30ae9.

6 years agosilence some compiler warnings on VC6
Daniel Dragan [Mon, 6 Oct 2014 08:04:05 +0000 (04:04 -0400)]
silence some compiler warnings on VC6

sv.c and toke.c have the following warnings on VC6 but not VC 2003
(and probably newer too), example
..\toke.c(3149) : warning C4761: integral size mismatch in argument;
conversion supplied

find_default_stash (commit 90aeefb473 )& gv_magicalize (commit 71c35c050e )
..\gv.c(1680) : warning C4028: formal parameter 6 different from declaration
..\gv.c(1783) : warning C4028: formal parameter 6 different from declaration

not all VC6 compiler warnings are fixed by this patch

6 years agoDeparse with CORE:: to avoid lex sub conflicts
Father Chrysostomos [Mon, 6 Oct 2014 05:32:23 +0000 (22:32 -0700)]
Deparse with CORE:: to avoid lex sub conflicts

If a lexical sub with the same name as a keyword is in scope, we need
to deparse the keyword with a CORE:: prefix.

This commit handles most of the cases, but there are a few exceptional
cases remaining.

6 years agoDeparse-core.t: Fix ineffective tests
Father Chrysostomos [Mon, 6 Oct 2014 00:30:59 +0000 (17:30 -0700)]
Deparse-core.t: Fix ineffective tests

In a958cfbb8, I accidentally changed this to test ‘test::foo()’,
rather than ‘foo()’ deparsing as ‘test::foo()’, which was what I
had intended.

6 years agoCorrect ‘"my" variable "&f::b"...’ message
Father Chrysostomos [Mon, 6 Oct 2014 00:25:57 +0000 (17:25 -0700)]
Correct ‘"my" variable "&f::b"...’ message

"my" variable &foo::bar can't be in a package at - line 2, near "my sub foo::bar"

It should say ‘subroutine’, not ‘variable’.  When I implemented lexi-
cal subs, I thought I caught all these, must I missed this one.

6 years agotoke.c: Add comment for greppability
Father Chrysostomos [Mon, 6 Oct 2014 00:15:43 +0000 (17:15 -0700)]
toke.c: Add comment for greppability

6 years agoReorder t/lib/croak/toke
Father Chrysostomos [Mon, 6 Oct 2014 00:10:59 +0000 (17:10 -0700)]
Reorder t/lib/croak/toke

to put string terminator errors all in one place.

6 years agoMake B::Deparse qualify sub calls named after keywords
Father Chrysostomos [Sun, 5 Oct 2014 20:32:20 +0000 (13:32 -0700)]
Make B::Deparse qualify sub calls named after keywords

While B::Deparse was correctly applying CORE:: as necessary to dis-
ambiguate between keywords and custom subroutines, it was not doing
likewise for subroutines whose names were keywords.  main::foo()
should be deparsed as main::foo() if ‘foo’ is a keyword.

6 years ago[perl #122771] Fix assertion failure with -d and sort
Father Chrysostomos [Sun, 5 Oct 2014 20:30:36 +0000 (13:30 -0700)]
[perl #122771] Fix assertion failure with -d and sort

-d was conflicting with sort optimisations added by 932bca295d, which
had assertions that checked for nextstate, but not dbstate ops.