This is a live mirror of the Perl 5 development currently hosted at
7 years agoConfigure: Improve the d_prctl_set_name detection for Android
Brian Fraser [Wed, 20 Aug 2014 17:19:13 +0000 (19:19 +0200)]
Configure: Improve the d_prctl_set_name detection for Android

On some versions of Android (e.g., 4.2.2, API level 17)
the header that defines the constants used for this test
will not work if unistd.h isn't already included.

7 years agoMention the possibility of fp rounding modes' effects.
Jarkko Hietaniemi [Wed, 20 Aug 2014 15:31:15 +0000 (11:31 -0400)]
Mention the possibility of fp rounding modes' effects.

7 years agoTry addressing perl #122578, low-order fp diffs.
Jarkko Hietaniemi [Wed, 20 Aug 2014 15:19:39 +0000 (11:19 -0400)]
Try addressing perl #122578, low-order fp diffs.

7 years agoPass $ENV{HARNESS_TIMER} to Test::Harness from t/harness.
Jarkko Hietaniemi [Wed, 20 Aug 2014 13:48:26 +0000 (09:48 -0400)]
Pass $ENV{HARNESS_TIMER} to Test::Harness from t/harness.

(One would think it worked as-is, but didn't.  Maybe T::H resets it somehow.)

7 years agoperldelta for hexadecimal floats.
Jarkko Hietaniemi [Wed, 20 Aug 2014 13:45:50 +0000 (09:45 -0400)]
perldelta for hexadecimal floats.

7 years agoSeparate grok_infnan() from grok_number().
Jarkko Hietaniemi [Mon, 18 Aug 2014 16:41:41 +0000 (12:41 -0400)]
Separate grok_infnan() from grok_number().

Remaining issues:

(1) would need tests, but there are two problems: [a] generating inf/nan
    reliably and testing for it from Perl level is hard (see items (2) and
    (3) below), and [b] the behavior of various systems with especially NaN
    differs (some platforms might throw SIGFPEs).

(2) toke.c:scan_number() will not call this code (via grok_number)
    because "NaN" or "Inf" do not look at all like floats to it.

(3) Even as we now recognize these forms, the native strtod()
    might not (problem of cross-portability of these exceptional
    forms: Win32 outputs e.g. "1.#INF", what Linux reading this should do,
    or conversely Linux outputs "Inf", what should Win32 do?)

7 years agoPerl_signbit should return non-zero for -0.
Jarkko Hietaniemi [Mon, 18 Aug 2014 15:31:50 +0000 (11:31 -0400)]
Perl_signbit should return non-zero for -0.

7 years agoWin32 apparently has _isnan() and _finite(), and _fpclass().
Jarkko Hietaniemi [Mon, 18 Aug 2014 14:55:13 +0000 (10:55 -0400)]
Win32 apparently has _isnan() and _finite(), and _fpclass().

(At least, if one believes the Oracle of Google.)

7 years agoUse Perl_isfinite().
Jarkko Hietaniemi [Mon, 18 Aug 2014 13:12:09 +0000 (09:12 -0400)]
Use Perl_isfinite().

Also kill obsolete/wrong comment: Perl_frexp is not casting its
argument to NV, and if USE_LONG_DOUBLE Perl_frexp is frexpl.
And if we do have long double and don't have frexpl, it is unclear
what should we do? (in this particular case, casting to double might
be the best possible thing to do anyway.)

7 years agoPerl_isinf enhancements.
Jarkko Hietaniemi [Mon, 18 Aug 2014 12:23:17 +0000 (08:23 -0400)]
Perl_isinf enhancements.

Try isfinitel first, and require Perl_isnan.

7 years agoOSX does have isfinite(), and 10.9+ prefers it over finite().
Jarkko Hietaniemi [Mon, 18 Aug 2014 12:56:48 +0000 (08:56 -0400)]
OSX does have isfinite(), and 10.9+ prefers it over finite().

isfinite() is a macro+inline while Configure tests it as a library symbol.

7 years agoPerl_isfinite() enhancements.
Jarkko Hietaniemi [Mon, 18 Aug 2014 12:55:23 +0000 (08:55 -0400)]
Perl_isfinite() enhancements.

Use isfinitel() if available, prefer C99 isfinite() over BSD finite().

7 years agoConfigure for isfinitel / isinfl.
Jarkko Hietaniemi [Mon, 18 Aug 2014 13:57:06 +0000 (09:57 -0400)]
Configure for isfinitel / isinfl.

7 years agoAdd todo comment about special hexfp values.
Jarkko Hietaniemi [Tue, 19 Aug 2014 22:44:30 +0000 (18:44 -0400)]
Add todo comment about special hexfp values.

7 years agoQuadruple float BE test triggering had a typo.
Jarkko Hietaniemi [Wed, 20 Aug 2014 02:16:54 +0000 (22:16 -0400)]
Quadruple float BE test triggering had a typo.

7 years agoReduce double-double %a to single-double for now.
Jarkko Hietaniemi [Mon, 18 Aug 2014 16:56:51 +0000 (12:56 -0400)]
Reduce double-double %a to single-double for now.

How to exactly handle the second double is unknown, so for
now extract the mantissa bits only from the first double.
(Known platforms aix-ppc and linux-ppc.)

7 years agodouble-double needs the first mantissa bits of doubles.
Jarkko Hietaniemi [Mon, 18 Aug 2014 21:04:06 +0000 (17:04 -0400)]
double-double needs the first mantissa bits of doubles.

7 years agoModify the hexfp exponent explicitly in each long double case.
Jarkko Hietaniemi [Mon, 18 Aug 2014 19:27:58 +0000 (15:27 -0400)]
Modify the hexfp exponent explicitly in each long double case.

7 years agoComment: scan_num also handles hexadecimal floats now.
Jarkko Hietaniemi [Mon, 18 Aug 2014 12:13:18 +0000 (08:13 -0400)]
Comment: scan_num also handles hexadecimal floats now.

7 years agoConfigure backports cause reorder
H.Merijn Brand [Wed, 20 Aug 2014 09:07:25 +0000 (11:07 +0200)]
Configure backports cause reorder

7 years agoperldelta: fix my bad pod
Peter Martini [Wed, 20 Aug 2014 07:15:28 +0000 (03:15 -0400)]
perldelta: fix my bad pod

7 years agoMake S_method_common use gv_stashpvn instead of copypasted cache usage
syber [Fri, 8 Aug 2014 17:06:10 +0000 (21:06 +0400)]
Make S_method_common use gv_stashpvn instead of copypasted cache usage

The previous commit copied the PL_stashcache handling code from
S_method_common() to gv_stashpvn(), so now we can call that function
directly rather than doing it ourselves.

7 years agoMake gv_stashpvn() use PL_stashcache
syber [Fri, 8 Aug 2014 15:03:03 +0000 (19:03 +0400)]
Make gv_stashpvn() use PL_stashcache

perl has a stash name lookup cache, which is currently just used for
looking up up class names in Some::Class->method calls. This means
that a lookup of the class name 'A::B::C' gets reduced from doing
several stash lookups (e.g. $::{'A::'}{'B::'}{'C::'}) to a single
cache lookup (e.g. $PL_stashcache{'A::B::C::'}, so to speak).

Make gv_stashpvn() use this cache too, which means that all package
name lookups benefit, not just class method calls. Among other things,
this also indirectly affects bless operations both from Perl (OP_BLESS)
and XS.

7 years agoperldelta: finished the stragglers
Peter Martini [Wed, 20 Aug 2014 06:55:31 +0000 (02:55 -0400)]
perldelta: finished the stragglers

Cleaned up remaining XXX entries, checked formatting,
all that's left is contributors.

7 years agoperldelta for 7e0dd61, MurmurHash64[AB]
Peter Martini [Wed, 20 Aug 2014 06:42:00 +0000 (02:42 -0400)]
perldelta for 7e0dd61, MurmurHash64[AB]

7 years agoperldelta for f04d2c3
Peter Martini [Wed, 20 Aug 2014 06:39:44 +0000 (02:39 -0400)]
perldelta for f04d2c3

7 years agoperldelta: put fatal perldiags in the right spot
Peter Martini [Wed, 20 Aug 2014 06:33:15 +0000 (02:33 -0400)]
perldelta: put fatal perldiags in the right spot

7 years agoperldelta: No deprecations or perf enhancements
Peter Martini [Wed, 20 Aug 2014 06:29:48 +0000 (02:29 -0400)]
perldelta: No deprecations or perf enhancements

7 years agoperldelta for 842a9d2, [perl #122460]
Peter Martini [Wed, 20 Aug 2014 06:22:45 +0000 (02:22 -0400)]
perldelta for 842a9d2, [perl #122460]

7 years agoperldelta: platform specific notes
Peter Martini [Wed, 20 Aug 2014 06:16:34 +0000 (02:16 -0400)]
perldelta: platform specific notes

7 years agoperldelta: document grok_atou
Peter Martini [Wed, 20 Aug 2014 05:53:59 +0000 (01:53 -0400)]
perldelta: document grok_atou

7 years agoperldelta for f57000b
Peter Martini [Wed, 20 Aug 2014 05:49:31 +0000 (01:49 -0400)]
perldelta for f57000b

7 years agoperldelta: Added documentation changes
Peter Martini [Wed, 20 Aug 2014 05:32:35 +0000 (01:32 -0400)]
perldelta: Added documentation changes

7 years agoperldelta remove (most) boilerplate
Peter Martini [Wed, 20 Aug 2014 05:05:48 +0000 (01:05 -0400)]
perldelta remove (most) boilerplate

7 years agoperldelta for Safe changes
Peter Martini [Wed, 20 Aug 2014 04:53:26 +0000 (00:53 -0400)]
perldelta for Safe changes

Safe was bumped to 2.38 after a mechanism to replace subs was
discovered and fixed.

7 years agoperldelta for 57d69a4
Peter Martini [Wed, 20 Aug 2014 04:33:49 +0000 (00:33 -0400)]
perldelta for 57d69a4

HTTP::Tiny version bump

7 years agoperldelta for f4ef132
Peter Martini [Wed, 20 Aug 2014 04:31:07 +0000 (00:31 -0400)]
perldelta for f4ef132

defined(AASSIGN) is not fatalized

7 years agoperldelta for 60df683
Peter Martini [Wed, 20 Aug 2014 04:16:34 +0000 (00:16 -0400)]
perldelta for 60df683

Config::Perl::V version bump

7 years agoperldelta for 5f8324b
Peter Martini [Wed, 20 Aug 2014 04:14:32 +0000 (00:14 -0400)]
perldelta for 5f8324b

CPAN::Meta version bump

7 years agoperldelta for 54b7cb3
Peter Martini [Wed, 20 Aug 2014 04:13:22 +0000 (00:13 -0400)]
perldelta for 54b7cb3

Delta for CPAN::Meta::Requirements version bump

7 years agoperldelta for 438f0014a812, revised
Peter Martini [Wed, 20 Aug 2014 03:59:06 +0000 (23:59 -0400)]
perldelta for 438f0014a812, revised

It was actually 1.19 to 1.21, missed the earlier one.

7 years agoperldelta for 438f0014a812
Peter Martini [Wed, 20 Aug 2014 03:55:46 +0000 (23:55 -0400)]
perldelta for 438f0014a812

7 years agoperldelta for jhi double/float work
Peter Martini [Wed, 20 Aug 2014 03:48:48 +0000 (23:48 -0400)]
perldelta for jhi double/float work

7 years agoperldelta for 4cedf205aa6e
Peter Martini [Wed, 20 Aug 2014 02:58:33 +0000 (22:58 -0400)]
perldelta for 4cedf205aa6e

7 years agoperldelta for 3699825258c
Peter Martini [Wed, 20 Aug 2014 02:40:08 +0000 (22:40 -0400)]
perldelta for 3699825258c

7 years agoperldelta typo fix: change a ',' to a '.'
Peter Martini [Wed, 20 Aug 2014 02:16:52 +0000 (22:16 -0400)]
perldelta typo fix: change a ',' to a '.'

7 years agoRevert Test::Builder changes in prep for 5.21.3
Peter Martini [Wed, 20 Aug 2014 01:23:39 +0000 (21:23 -0400)]
Revert Test::Builder changes in prep for 5.21.3

This reverts commit 6bdb88770f849c47b5c09e733ac460ce3e9dbc97
and commit 59c96aebdd56baf5d1979103046b1c6d4e308aa2, which
are causing the test suite to run much slower and which are
failing on some platforms. has
further details, with RT 122538 being the ticket number.

7 years agospelling: till -> until
Karen Etheridge [Wed, 20 Aug 2014 00:21:09 +0000 (17:21 -0700)]
spelling: till -> until

7 years agodocument what version \K was added in
Karen Etheridge [Wed, 20 Aug 2014 00:20:01 +0000 (17:20 -0700)]
document what version \K was added in

7 years agoWhen cross-compiling, copy cpan/Module-Metadata/
Brian Fraser [Tue, 29 Jul 2014 18:30:44 +0000 (20:30 +0200)]
When cross-compiling, copy cpan/Module-Metadata/

cpan/Module-Metadata/t/encoding.t needs some files in the
distribution to pass.

7 years agoFix finite/finitel/isfinite in
Craig A. Berry [Tue, 19 Aug 2014 11:53:42 +0000 (06:53 -0500)]
Fix finite/finitel/isfinite in

VMS has had these for a very long time but we haven't been
admitting it.  Spotted by Jarkko.

7 years agoUpdate blead to Test::Builder alpha 40
Chad Granum [Mon, 18 Aug 2014 21:04:14 +0000 (14:04 -0700)]
Update blead to Test::Builder alpha 40

Fixes performance issues
Fixes a test failure specific to certain utf8 conditions
Fixes a broken win32+fork test

Committer's notes: 2nd Test-Simple patch applied;
corresponds to $Test::Simple::VERSION 1.301001_040

7 years agoperldelta for b5b6210a9/#46947
Father Chrysostomos [Mon, 18 Aug 2014 00:26:47 +0000 (17:26 -0700)]
perldelta for b5b6210a9/#46947

7 years agoInclude longdblkind in perl -V output.
Jarkko Hietaniemi [Sun, 17 Aug 2014 20:47:01 +0000 (16:47 -0400)]
Include longdblkind in perl -V output.

7 years agoComment tweaks.
Jarkko Hietaniemi [Sun, 17 Aug 2014 17:51:01 +0000 (13:51 -0400)]
Comment tweaks.

7 years agoLittle-endian double-double detection was wrong.
Jarkko Hietaniemi [Sun, 17 Aug 2014 17:50:08 +0000 (13:50 -0400)]
Little-endian double-double detection was wrong.

7 years agoAdd quadruple precision tests, verified by Craig Berry.
Jarkko Hietaniemi [Sun, 17 Aug 2014 14:00:06 +0000 (10:00 -0400)]
Add quadruple precision tests, verified by Craig Berry.

Also tentatively adding double-double tests, but those are probably bogus.

Also comment tweaks.

7 years agoSeparate the extraction of hex values.
Jarkko Hietaniemi [Sat, 16 Aug 2014 15:27:52 +0000 (11:27 -0400)]
Separate the extraction of hex values.

This way we can call it twice: first to count the size of output (and
sanity check the extraction indices), and the second time to actually
extract.  Otherwise with bad extraction code we will smash the stack.

Furthermore, this makes for cleaner code since the large #ifdef forest
(about differing long double formats, and different uv/nv/quad sizes)
is moved within the helper function.

Furthermore: IEEE 754 128-bit extraction was extracting wrong:
we need only the mantissa bits, and in the right nybble order.

Last but not least, handle the 'implicit bit' of IEEE 754 quadruple
and double-double (but which is explicitly *not* in the 80-bit format).
(If we handled the standard 64-bit format by explicit byte extraction,
instead of frexp+ldexp the hidden bit would be needed there, too.)

7 years agoUpdate to include latest Test::Builder alpha
Chad Granum [Fri, 15 Aug 2014 15:40:10 +0000 (08:40 -0700)]
Update to include latest Test::Builder alpha

Also updated some tests that the new builder broke

7 years agoUpdate exp_name in toke.c, following b5b6210a976
Father Chrysostomos [Sat, 16 Aug 2014 04:52:12 +0000 (21:52 -0700)]
Update exp_name in toke.c, following b5b6210a976


$  ./miniperl -DT -e 'undef'
### <== UNIOP(ival=op_undef)

### 1:LEX_NORMAL/XNumber too long ";"  <------ Look here!
### <== ';'

### Tokener got EOF
### <== EOF


7 years agoSocket 2.015
Jarkko Hietaniemi [Sat, 16 Aug 2014 01:54:48 +0000 (21:54 -0400)]
Socket 2.015

7 years agoreg_posixcc.t: display chr(\\xXX) should be chr(0xXX)
Karl Williamson [Fri, 15 Aug 2014 16:34:53 +0000 (10:34 -0600)]
reg_posixcc.t: display chr(\\xXX) should be chr(0xXX)

The test name was misleading.  The operand to chr should be an ord.

7 years agoperldelta: Add entry for sync_locale()
Karl Williamson [Fri, 15 Aug 2014 15:05:28 +0000 (09:05 -0600)]
perldelta: Add entry for sync_locale()

7 years agoMake a wild guess at how to handle double-double.
Jarkko Hietaniemi [Fri, 15 Aug 2014 13:50:03 +0000 (09:50 -0400)]
Make a wild guess at how to handle double-double.

7 years agoLimit testing with 80-bit doubles.
Jarkko Hietaniemi [Fri, 15 Aug 2014 13:25:37 +0000 (09:25 -0400)]
Limit testing with 80-bit doubles.

(The test data would be wrong for 128-bit doubles.)

7 years ago80-bit big-endian extraction was also wrong.
Jarkko Hietaniemi [Fri, 15 Aug 2014 11:47:49 +0000 (07:47 -0400)]
80-bit big-endian extraction was also wrong.

Not that this format probably ever happens.

7 years agoTry preparing for weird UVSIZE or NV_MANT_DIG.
Jarkko Hietaniemi [Fri, 15 Aug 2014 02:20:16 +0000 (22:20 -0400)]
Try preparing for weird UVSIZE or NV_MANT_DIG.

(UVSIZE=4 and no quad, or NV_MANT_DIG=106, where quad would not help.)

7 years agoIn frexp+ldexp path simply prefer Uquad_t to UV.
Jarkko Hietaniemi [Fri, 15 Aug 2014 01:44:44 +0000 (21:44 -0400)]
In frexp+ldexp path simply prefer Uquad_t to UV.

7 years agoBig endian frexp+ldexp byte extraction was wrong.
Jarkko Hietaniemi [Fri, 15 Aug 2014 01:42:39 +0000 (21:42 -0400)]
Big endian frexp+ldexp byte extraction was wrong.

7 years agoOn literal hexadecimal floats use uquad, not UV.
Jarkko Hietaniemi [Thu, 14 Aug 2014 20:43:06 +0000 (16:43 -0400)]
On literal hexadecimal floats use uquad, not UV.

Since it is possible to have quads but not use64bitint.

7 years agoComment tweaks.
Jarkko Hietaniemi [Fri, 15 Aug 2014 01:06:06 +0000 (21:06 -0400)]
Comment tweaks.

7 years agoUse XDIGIT_VALUE().
Jarkko Hietaniemi [Thu, 14 Aug 2014 20:25:31 +0000 (16:25 -0400)]

7 years agoZero is better longdblkind for "no long double" than -1.
Jarkko Hietaniemi [Thu, 14 Aug 2014 20:13:11 +0000 (16:13 -0400)]
Zero is better longdblkind for "no long double" than -1.

(zero = long double is double, -1 = unknown long double)

7 years agoWhitespace only: line breaks before elses.
Jarkko Hietaniemi [Thu, 14 Aug 2014 20:11:10 +0000 (16:11 -0400)]
Whitespace only: line breaks before elses.

7 years agoAdjust need size for locale radix.
Jarkko Hietaniemi [Thu, 14 Aug 2014 20:03:27 +0000 (16:03 -0400)]
Adjust need size for locale radix.

7 years agoperldelta for 5c45bbe050f6
Tony Cook [Fri, 15 Aug 2014 01:30:47 +0000 (11:30 +1000)]
perldelta for 5c45bbe050f6

7 years ago[perl #122476] use a hash instead of a ptr_table
Tony Cook [Mon, 11 Aug 2014 06:47:51 +0000 (16:47 +1000)]
[perl #122476] use a hash instead of a ptr_table

Perl will duplicate the hash on ithread creation, so this will be

7 years ago[perl #122476] TODO test for isfoo() crash on Win32 with threads
Tony Cook [Mon, 11 Aug 2014 06:31:32 +0000 (16:31 +1000)]
[perl #122476] TODO test for isfoo() crash on Win32 with threads

7 years agoperldelta for 496f5ba57a43
Tony Cook [Fri, 15 Aug 2014 01:04:03 +0000 (11:04 +1000)]
perldelta for 496f5ba57a43

7 years agofix debugger y command scope level
Tony Cook [Fri, 15 Aug 2014 00:45:57 +0000 (10:45 +1000)]
fix debugger y command scope level

5c2b78e73d3 moved handling of the y command into its own function,
but did not adjust the provided scope level to account for the extra

7 years agoAdd sync_locale()
Karl Williamson [Thu, 14 Aug 2014 17:56:03 +0000 (11:56 -0600)]
Add sync_locale()

This trivial function is to be used by XS code when it changes the
program's locale.  It hides the details from that code of what needs to
be done, which could change in the future.

7 years agoperldata: Fix too long verbatim lines
Karl Williamson [Thu, 14 Aug 2014 17:37:23 +0000 (11:37 -0600)]
perldata: Fix too long verbatim lines

7 years agoHexadecimal float literals, for perl #122219
Jarkko Hietaniemi [Tue, 12 Aug 2014 12:39:40 +0000 (08:39 -0400)]
Hexadecimal float literals, for perl #122219

Do not use system strtod/strtold since its C99 (which we do not require).

If we can fit the mantissa bits of a NV to a UV (which is the case for
the most common format, 64-bit IEEE 754 double, which has 52 mantissa bits)
we will use that, and only in the end convert to NV.  If we cannot fit
the bits, accumulate the bits incrementally to a NV.

7 years agoHexadecimal float sprintf, for perl #122219
Jarkko Hietaniemi [Tue, 12 Aug 2014 12:30:56 +0000 (08:30 -0400)]
Hexadecimal float sprintf, for perl #122219

Do not use the system sprintf since %a/%A is C99 (which we do not
require), and even if we did, there is room for interpretation
(for example whether to print trailing zeros or not) which means
that existing implementations will inevitably differ.

For the most common case, 64-bit doubles of IEEE 754, use first
frexp to extract the exponent, and then ldexp to scale the result
to a 64-bit unsigned integer.

For long doubles (80-bit or 128-bit) we look directly at the mantissa
(also known as fraction, or significand) bytes, and their 4-bit nybbles,
and extract them in correct order.

Since we bypass system printf, we need to do our own aligning, filling,
rounding, and other printf logic.

7 years agoPerl_ldexp is one of ldexpl, scalbnl, or ldexp
Jarkko Hietaniemi [Mon, 11 Aug 2014 15:58:27 +0000 (11:58 -0400)]
Perl_ldexp is one of ldexpl, scalbnl, or ldexp

7 years agoConfigure scan for ldexpl
Jarkko Hietaniemi [Mon, 11 Aug 2014 15:55:01 +0000 (11:55 -0400)]
Configure scan for ldexpl

7 years agoConfigure scan for the kind of long double we have
Jarkko Hietaniemi [Sun, 10 Aug 2014 23:46:12 +0000 (19:46 -0400)]
Configure scan for the kind of long double we have

(Somewhat like quadkind, but for the format of the long double)

7 years agoStop defined(aassign) from being an error
Father Chrysostomos [Thu, 14 Aug 2014 00:59:32 +0000 (17:59 -0700)]
Stop defined(aassign) from being an error

(See the thread starting at

This commit changed the message 'defined(@...) is deprecated' into
a hard error:

commit e35475dec7197e291306173beba241d4e43bd5b2
Author: Karl Williamson <>
Date:   Mon Jun 16 18:56:44 2014 -0600

    Fatalize defined(@) and defined{%)

As I pointed out a couple of years (?) ago, this warning was also
showing up in places that did not involve checking the definedness of
an array; namely, defined(any list assignment):

$ perl -we '$_ = defined(my($a,$b)=3)'
defined(@array) is deprecated at -e line 1.
        (Maybe you should just omit the defined()?)

While checking that a list assignment evaluated in scalar context is
useless, as the result (a number) will always be defined, there is no
reason why this code should be any more invalid than ‘rand() > -1’ or
‘defined(time)’.  But now it has inadvertently become a hard error.

This commit simply removes the error for defined(aassign), under the
possibly false assumption that such a mistake will be rare, so it is
not worth clutting up perl itself with a special case for it.  Whether
that assumption is true remains to be seen.  In any case, in the
absence of any data, smaller is better, is it not?

7 years agolocale.c: Clarify comment
Karl Williamson [Wed, 13 Aug 2014 22:04:52 +0000 (16:04 -0600)]
locale.c: Clarify comment

7 years agolocale.c: Use PERL_UNUSED_RESULT
Karl Williamson [Wed, 13 Aug 2014 22:02:00 +0000 (16:02 -0600)]

The previous way to suppress messages wasn't working for all gcc
versions.  Spotted by Jarkko Hietaniemi.

7 years agoRemove compiler warning spam on dos-djgpp
Chris 'BinGOs' Williams [Wed, 13 Aug 2014 21:39:19 +0000 (22:39 +0100)]
Remove compiler warning spam on dos-djgpp

7 years agoFor older clang versions put back -Wno-unused-value.
Jarkko Hietaniemi [Mon, 11 Aug 2014 16:47:22 +0000 (12:47 -0400)]
For older clang versions put back -Wno-unused-value.

Logical revert of b679cac0, but redone.

Apple versions only for now; situation on Linux side unknown.

7 years ago[perl #46947] Parse method-BLOCK arguments as a term
Father Chrysostomos [Mon, 11 Aug 2014 16:51:34 +0000 (09:51 -0700)]
[perl #46947] Parse method-BLOCK arguments as a term

(C.f. bug #114222 and commit 52d0e95b, which did the same thing
for ‘use’.)

When parsing the arguments following a method name and a block (for
‘method { $obj } LIST‘ syntax), the lexer was using heuristics to
determine whether an opening brace was a hash constructor or a block,
as it does at the beginning of a statement.  In every case in which it
determined it was a block, the parser would them throw a syntax error.

In this case, the lexer should not be trying to guess, since we *know*
it can only be a hash here.

This was the result:

$ perl -e 'method {$obj} {$foo=>undef}'
syntax error at -e line 1, near "} {"
Execution of -e aborted due to compilation errors.

Now we get this:

$ ./miniperl -e 'method {$obj} {$foo=>undef}'
Can't call method "method" on an undefined value at -e line 1.

as expected.

7 years agofix fix for stat.t on win32
David Mitchell [Tue, 12 Aug 2014 15:09:46 +0000 (16:09 +0100)]
fix fix for stat.t on win32

My previous commit made a test open a file, then delete it. It should of
course have closed the file before deleting it. On Linux this is just bad
manners, but on Win32 it actively fails.

7 years agoop/.stat.t: fix race condition
David Mitchell [Tue, 12 Aug 2014 10:44:35 +0000 (11:44 +0100)]
op/.stat.t: fix race condition

A test was checking that stat on FILEHANDLE and lstat on *FILEHANDLE{IO}
gave the same results. It was using STDOUT as the filehandle, but since
this can be modified by other processes during parallel testing, a race
condition is possible.

Open a file instead to get reliability.

7 years agot/run/locale.t: Improve skip message
Karl Williamson [Mon, 11 Aug 2014 16:20:43 +0000 (10:20 -0600)]
t/run/locale.t: Improve skip message

Better wording uggested by H.Merijn Brand

7 years agoPATCH: [perl #121930] Bleadperl breaks MDOOTSON/Wx
Karl Williamson [Mon, 4 Aug 2014 22:29:12 +0000 (16:29 -0600)]
PATCH: [perl #121930] Bleadperl breaks MDOOTSON/Wx

The root cause of this issue is that XS code or the libraries it calls
is changing the locale behind Perl's back so that the decimal point
character is not a dot.  Version number parsing relies on it being a

This patch fixes the problem by retrieving the current locale just
before version number parsing, and updating Perl's records if the locale
has changed away from what is expected.  Given accurate records, the
pre-existing call to the STORE_NUMERIC_LOCAL_SET_STANDARD macro will
do what it's supposed to do, and change the locale so that the dot is
the radix character for the version number parsing.

After the parsing is done, the pre-existing call to the
RESTORE_NUMERIC_LOCAL macro will restore properly, but see below

This patch should be suitable for both 5.20.1 and 5.21 (though the SHA-1
value in the porting/customize.dat will have to be adjusted because the
files aren't otherwise identical).  But there is a fundamental
difference between the releases.  In 5.20.X, Perl does not attempt to
keep the radix character a dot at almost all times (though it
initializes things so it is a dot, overriding any environmental settings
to the contrary).  This leads to known non-regression bugs in 5.20
because very little XS code can cope with a non-dot.  To fix this, Perl
has changed the macros in 5.21 so that the result after the
RESTORE_NUMERIC_LOCAL is that the current locale will have a dot.  This
will fix those long-standing bugs where XS code expecting a dot fails
should it be mashed up with modules that change it to something else.
But this will break the relatively few modules that want it the other
way.  So it has been done early in 5.21 to give things a chance to
settle down.

The extra {} braces around the code that calls the macros is because
STORE_NUMERIC_LOCAL_SET_STANDARD declares a variable, and so must be
within the declarations area of a block for C89 compilers.  (I myself
would not write a macro that does this without indicating so in its

7 years agoperldelta for 2806bfd899e5, 3969ff3f8e4b
Tony Cook [Sun, 10 Aug 2014 23:53:39 +0000 (09:53 +1000)]
perldelta for 2806bfd899e53969ff3f8e4b

7 years ago[perl #122107] ensure that BEGIN blocks with errors don't remain named subs
Tony Cook [Mon, 14 Jul 2014 00:40:47 +0000 (10:40 +1000)]
[perl #122107] ensure that BEGIN blocks with errors don't remain named subs

7 years ago[perl #122107] test that BEGIN blocks with errors don't remain named subs
Tony Cook [Thu, 10 Jul 2014 01:37:39 +0000 (11:37 +1000)]
[perl #122107] test that BEGIN blocks with errors don't remain named subs