This is a live mirror of the Perl 5 development currently hosted at
6 years agofix the non-Win32 build breakage introduced in ce9582af
Tony Cook [Wed, 28 Oct 2015 03:11:12 +0000 (14:11 +1100)]
fix the non-Win32 build breakage introduced in ce9582af

On Unix, EU::MM was falling back to EU::MM::version::vpp, which
was removed above.

Make the real available instead.

6 years agoWin32 parallel build fixes C++
Daniel Dragan [Tue, 27 Oct 2015 16:07:51 +0000 (12:07 -0400)]
Win32 parallel build fixes C++

-dmake's parallel scheduler is poor and has problems finding work to run
 leading to idle cores, see note in commit c2c7bda088 about
 generate_uudmap.exe target so compile+link perlglob.exe in 1 process run
-remove whitespace from LIBFILES as much as possible while keeping some
 prettyness in the makefile. This is so the console isn't flooded as much
 with a wall of text as before.
-although perlglob.exe is very small (1 main func, that is it),
 add $(OPTIMIZE), it previously wasnt CC optimized at all
-when -xc++ flag is used (USE_CPLUSPLUS=define), the command options
 file is compiled like C code and syntax errors, use -x to reset file type
 to nothing/auto

g++ -xc++ -I.\include -I. -I.. -DWIN32 -DPERLDLL -DPERL_CORE -s -O2  -DPERL_TEXT
asing -mms-bitfields -o..\generate_uudmap.exe ..\generate_uudmap.c  -s -L"c:\per
l\lib\CORE" -L"C:\MinGW\lib" \
C:\Users\Owner\AppData\Local\Temp\mk10:1:7: error: expected constructor, destruc
tor, or type conversion before '(' token
 INPUT (  -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool  -lcomdlg32 -ladvapi
32 -lshell32 -lole32 -loleaut32 -lnetapi32  -luuid -lws2_32 -lmpr -lwinmm -lvers
ion -lodbc32 -lodbccp32 -lcomctl32 )
dmake:  Error code 129, while making '..\bitcount.h'

-since does not create perl523.lib during link time of
 perl523.dll anymore, to allow parallelism the interface (def file and
 .exp/.lib files) between libperl and XS modules is created before libperl
 and XS modules are every created, this allows the 2 to build in parallel
 and not be dependent on each other. This caused a link failure where an
 XS module wanted a C++ mangled perl data symbol, while the def/lib file
 only had the extern "C", C named data symbol (unless you take
 extraordinary measures, the def/lib file is always extern "C" even if
 the symbol is mangled inside C/C++ lang world and for static linking
 purpose), so make all data symbols EXTERN_C, not extern, in the headers

link -out:..\..\lib\auto\PerlIO\encoding\encoding.dll -dll -nologo -nodefaultlib
 -debug -opt:ref,icf -ltcg              -libpath:"c:\perl\lib\CORE"
-machine:x86 "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Co
ntrols' version='' processorArchitecture='*' publicKeyToken='6595b64144cc
f1df' language='*'" -subsystem:console,"5.01" encoding.obj   "..\..\lib\CORE\per
l523.lib" oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.l
ib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.
lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib
b -def:encoding.def
   Creating library ..\..\lib\auto\PerlIO\encoding\encoding.lib and object ..\..
encoding.obj : error LNK2001: unresolved external symbol "__declspec(dllimport)
struct _PerlIO_funcs const PerlIO_perlio" (__imp_?PerlIO_perlio@@3U_PerlIO_funcs
..\..\lib\auto\PerlIO\encoding\encoding.dll : fatal error LNK1120: 1 unresolved
dmake:  Error code 224, while making '..\..\lib\auto\PerlIO\encoding\encoding.dl
link -dll -out:..\perl523.dll  -nologo -nodefaultlib -debug -opt:ref,icf -ltcg
        -libpath:"c:\perl\lib\CORE"             -machine:x86 "/manifestdependenc
y:type='Win32' name='Microsoft.Windows.Common-Controls' version='' proces
sorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'" -subsystem:c
onsole,"5.01" \
            @Extensions_static \
perl523.exp : error LNK2001: unresolved external symbol _PL_interp_size
perl523.exp : error LNK2001: unresolved external symbol _PL_interp_size_5_18_0
perl523.exp : error LNK2001: unresolved external symbol _PerlIO_pending
perl523.exp : error LNK2001: unresolved external symbol _PerlIO_perlio
..\perl523.dll : fatal error LNK1120: 4 unresolved externals
dmake:  Error code 224, while making '..\perl523.dll'

With this commit, "dmake all" VC C++ build succeeds to the end, G++ build
won't build until 1 other issue is fixed, I fixed that issue for testing
but it is not in this patch, so only that issue remains preventing a G++
build from running to the end.

6 years agodon't distribute version::vpp/EUMM::version::vpp
Daniel Dragan [Sun, 25 Oct 2015 22:53:13 +0000 (18:53 -0400)]
don't distribute version::vpp/EUMM::version::vpp

version::vpp is not part of the public API of version::, the core
cpan/version/lib/ is not capable of using it unlike the on cpan, and the Makefile.PL from cpan version:: that picks
between vpp and vxs isn't in core either. The xsubs behind core
are permanently baked in universal.c, they arent "static XS" or
"dynamic (shared lib) XS", and no XSLoader/DynaLoader is used. is
therefore useless in blead distributed version:: since is only
useful on very old perls. In blead, vpp only existed for the purpose of
making 00impl-pp.t pass, yet takes up space in the perl tarball, and was
installed into the final install location, so remove to save space
since it is unusable. and the rest of version is developed on
cpan, not in core, and is sort of a devel tool and sanity check and
therefore an author test, and core doesn't include author tests like
pod-coverage.t so that is one other reason it is being removed.

Also remove EUMM's, first it isn't miniperl compatible, and it also
is a copy more or less of version::vpp, and blead perl comes with, since it is blead perl and not an old perl. If there is an
accident/error/bad behaviour can get loaded
), but it is an error for it to ever be loaded. Prevent "silent failure"
by deleteing, this way the failure will be an obvious
can't find instead of subtle differences between the XS and
PP version implementations, or the not miniperl compatible failure.
Although could be deleted for
the same reasons as, I am leaving it in for now until the
EUMM patch in "version PP is not PP" goes through review, but still dont
install it, blead comes with the official is 22KB
00impl-pp.t is 0.5KB is 23KB is 5KB

The 3 .pm files were being installed into the final installed perl location
where they are useless on blead perl. Some people complain perl core is
too big/bloated (redhat perl), removing 50KB and 3 files from final
location, and 45.5KB and 3 files from the tarball helps to trim the

6 years agoAlso IRIX seems to have NaN comparison issues.
Jarkko Hietaniemi [Tue, 27 Oct 2015 12:45:28 +0000 (08:45 -0400)]
Also IRIX seems to have NaN comparison issues.

The issues seem to be much harder to trigger (harder than in VC6 or
Tru64, that is), though: the perl #125298 is the only spot where
the problem has surfaced so far.  Though see also perl #126396,
with long doubles (the #125298 is with plain doubles).

All tests pass now in IRIX in blead with default config,
including the t/op/infnan.t.  With -Duselongdouble nothing
new breaks (known issues with locales and M::BI)

6 years agoUpgrade Unicode-Normalize from version 1.21 to 1.23
Steve Hay [Tue, 27 Oct 2015 17:38:55 +0000 (17:38 +0000)]
Upgrade Unicode-Normalize from version 1.21 to 1.23

6 years agoUpgrade Math-BigInt from version 1.999704 to 1.999705
Steve Hay [Tue, 27 Oct 2015 17:37:24 +0000 (17:37 +0000)]
Upgrade Math-BigInt from version 1.999704 to 1.999705

6 years agoReplace two ugly casts in reg_recode() calls.
Jarkko Hietaniemi [Tue, 27 Oct 2015 01:38:09 +0000 (21:38 -0400)]
Replace two ugly casts in reg_recode() calls.

With one ugly cast inside the reg_recode() call.

6 years agodist/ExtUtils-CBuilder/t/02-link.t: Skip on os390
Karl Williamson [Fri, 25 Sep 2015 18:18:33 +0000 (12:18 -0600)]
dist/ExtUtils-CBuilder/t/02-link.t: Skip on os390

This module needs a little work for os390.  But until someone
wants/needs to have it done, we'll simply skip the test.

6 years agoregen podcheck db
Karl Williamson [Mon, 26 Oct 2015 17:38:53 +0000 (11:38 -0600)]
regen podcheck db

Commit 9846bace45546ab19676c8577ccf9218ddd7931d added some overlong
verbatim lines

6 years agoXS-APItest:fetch_pad_names.t: Comments, skip message
Karl Williamson [Sun, 25 Oct 2015 02:06:10 +0000 (20:06 -0600)]
XS-APItest:fetch_pad_names.t: Comments, skip message

6 years agot/re/subst.t: Don't skip a test on EBCDIC
Karl Williamson [Sun, 25 Oct 2015 02:11:47 +0000 (20:11 -0600)]
t/re/subst.t: Don't skip a test on EBCDIC

There is no longer any reason to skip this test.

6 years agore/subst.t: Clarify a test's EBCDIC skip message
Karl Williamson [Sun, 25 Oct 2015 02:11:13 +0000 (20:11 -0600)]
re/subst.t: Clarify a test's EBCDIC skip message

6 years agore/pat_rt_report.t: Clarify EBCDIC skip msg for a test
Karl Williamson [Sun, 25 Oct 2015 02:09:40 +0000 (20:09 -0600)]
re/pat_rt_report.t: Clarify EBCDIC skip msg for a test

6 years agot/op/print.t: Improve EBCDIC skip msg
Karl Williamson [Sun, 25 Oct 2015 02:08:17 +0000 (20:08 -0600)]
t/op/print.t: Improve EBCDIC skip msg

6 years agot/op/chr.t: Improve EBCDIC skip msg
Karl Williamson [Sun, 25 Oct 2015 02:07:51 +0000 (20:07 -0600)]
t/op/chr.t: Improve EBCDIC skip msg

6 years agot/base/lex.t: Generalize for EBCDIC
Karl Williamson [Sun, 25 Oct 2015 02:07:24 +0000 (20:07 -0600)]
t/base/lex.t: Generalize for EBCDIC

6 years ago[perl #126452] partly 0b057af7 revert for C++ builds
Tony Cook [Mon, 26 Oct 2015 04:59:53 +0000 (15:59 +1100)]
[perl #126452] partly 0b057af7 revert for C++ builds

6 years agoXS staticing in ext and dist
Daniel Dragan [Sun, 25 Oct 2015 23:57:11 +0000 (19:57 -0400)]
XS staticing in ext and dist

None of these symbols are exported on Win32 (listed in Makefile.PL with
EUMM's FUNCLIST), so they shouldn't be exported on Linux. Making them
static saves space in the SOs by removing symbol name strings, and removing
runtime plt/got indirection.

6 years agoCarp: prepare for a new CPAN release
Ricardo Signes [Mon, 26 Oct 2015 01:26:37 +0000 (21:26 -0400)]
Carp: prepare for a new CPAN release

6 years agoUpgrade to Thread::Queue 3.07
Jerry D. Hedden [Fri, 23 Oct 2015 23:55:17 +0000 (19:55 -0400)]
Upgrade to Thread::Queue 3.07

Committer: Add additional email address for contributor.

6 years agohv_iternext can return NULL
Jarkko Hietaniemi [Thu, 22 Oct 2015 12:35:10 +0000 (08:35 -0400)]
hv_iternext can return NULL

Coverity #104801

6 years agoAscertain that the fd for fcntl is not negative
Jarkko Hietaniemi [Thu, 22 Oct 2015 11:36:56 +0000 (07:36 -0400)]
Ascertain that the fd for fcntl is not negative

Coverity id #45354

Since maxsysfd is I32 Coverity cannot prove that being larger than
it means that the fd is non-negative.

6 years agoMake FITS_IN_8_BITS() always true under Coverity
Jarkko Hietaniemi [Thu, 22 Oct 2015 11:31:58 +0000 (07:31 -0400)]
Make FITS_IN_8_BITS() always true under Coverity

Similar in spirit to 3e94db23

Coverity id #28938
Coverity id #104778
Coverity id #131329

6 years agoFix the (serial) build with dmake on Windows
Steve Hay [Fri, 23 Oct 2015 07:31:47 +0000 (08:31 +0100)]
Fix the (serial) build with dmake on Windows

The switch to building non-XS modules last in win32/ (introduced
by design as part of the changes to enable parallel building) causes the
build of POSIX to break due to problems with the version module.

This change is the simplest of several workarounds/fixes put forward in
the following threads:

It appears that the version module could benefit from some work to render
this change unnecessary, but for now it's the least invasive way to
restore the dmake build. Thanks to all for chasing this down.

6 years agolib/ExtUtils/t/Embed.t: Fix for z/OS
Karl Williamson [Fri, 25 Sep 2015 18:21:03 +0000 (12:21 -0600)]
lib/ExtUtils/t/Embed.t: Fix for z/OS

6 years agoAdd test for \b{sb}
Karl Williamson [Wed, 21 Oct 2015 17:47:25 +0000 (11:47 -0600)]
Add test for \b{sb}

It turns out that the merge commit
f0bd363c36d925d8d3dfe3b68715763c850b171a makes \b{sb} work much better,
with the main improvement being by commit

We were puzzled as to why it didn't seem to work as advertised, yet
passed all the extensive tests furnished by Unicode.  The answer appears
to be that that those tests mostly test pair-wise things, and the bug
was because results were getting overwritten for longer inputs.
This new test is a simple, but long one.

6 years agot/re/pat_advanced.t: Add comment
Karl Williamson [Wed, 21 Oct 2015 17:34:47 +0000 (11:34 -0600)]
t/re/pat_advanced.t: Add comment

6 years agopp_hot.c: Add comment
Karl Williamson [Wed, 21 Oct 2015 04:22:41 +0000 (22:22 -0600)]
pp_hot.c: Add comment

6 years agoutf8.h: Change formal macro param name to match docs
Karl Williamson [Wed, 21 Oct 2015 04:08:30 +0000 (22:08 -0600)]
utf8.h: Change formal macro param name to match docs

6 years agoPATCH: [perl #126253] Nested quantifiers not caught
Karl Williamson [Thu, 22 Oct 2015 03:30:14 +0000 (21:30 -0600)]
PATCH: [perl #126253] Nested quantifiers not caught

Commit 4fa6dd16d2149c2aeeb32633e3a796d5ebc5b657 added a message
when a quantifier was useless, but then caused the parse to skip it, so
that if it was in an illegal combination, that was no longer caught.

6 years agoPATCH: [perl # 126178] Unterminated /(?i/
Karl Williamson [Wed, 21 Oct 2015 18:45:46 +0000 (12:45 -0600)]
PATCH: [perl # 126178] Unterminated /(?i/

6 years agoUpdate Time-Piece to CPAN version 1.31
Chris 'BinGOs' Williams [Wed, 21 Oct 2015 17:58:58 +0000 (18:58 +0100)]
Update Time-Piece to CPAN version 1.31


1.31    2015-10-20
        - No Changes since 1.30_01

1.30_01 2015-09-01
        - Ignore some tests on non *nix platforms
        - fix compile warnings
        - Inherit from Dynaloader (fix static build issues)
        - Fix windows mem corruption

6 years agoModule-CoreList is 5.20151020 on teh CPAN
Chris 'BinGOs' Williams [Wed, 21 Oct 2015 17:57:07 +0000 (18:57 +0100)]
Module-CoreList is 5.20151020 on teh CPAN

6 years agoCarp: fix test not working on older toolchain
Peter Rabbitson [Wed, 21 Oct 2015 02:02:19 +0000 (22:02 -0400)]
Carp: fix test not working on older toolchain

The newly introduced _dump() utility function is a faithful
representation of what explain() does in newer Test::More versions

6 years agoCarp: fix test incorrectly assuming a recent-enough in @INC
Peter Rabbitson [Wed, 21 Oct 2015 01:58:01 +0000 (21:58 -0400)]
Carp: fix test incorrectly assuming a recent-enough in @INC

6 years agoRe-run two regen/ programs to clear up test failures in t/porting/regen.t
James E Keenan [Wed, 21 Oct 2015 01:44:41 +0000 (21:44 -0400)]
Re-run two regen/ programs to clear up test failures in t/porting/regen.t

./perl -Ilib regen/
./perl -Ilib regen/

6 years agoNote the resource hungriness of mktables.
Jarkko Hietaniemi [Wed, 21 Oct 2015 00:28:25 +0000 (20:28 -0400)]
Note the resource hungriness of mktables.

6 years agomake non-zero exit from Makefile.PL fatal in
Daniel Dragan [Tue, 20 Oct 2015 22:03:45 +0000 (18:03 -0400)]
make non-zero exit from Makefile.PL fatal in

A non-zero exit is fatal according to so do not
continue building even if a Makefile was generated (an END block or code
after WriteMakefile() could have died for example).

This patch is from trying to fix problems in this thread

6 years agoPrepare Module::CoreList for 5.23.5
Steve Hay [Tue, 20 Oct 2015 23:09:32 +0000 (00:09 +0100)]
Prepare Module::CoreList for 5.23.5

6 years agoBump version to 5.23.5
Steve Hay [Tue, 20 Oct 2015 22:53:22 +0000 (23:53 +0100)]
Bump version to 5.23.5

6 years agoCreate perldelta for 5.23.5
Steve Hay [Tue, 20 Oct 2015 22:42:55 +0000 (23:42 +0100)]
Create perldelta for 5.23.5

6 years agoTick off 5.23.4
Steve Hay [Tue, 20 Oct 2015 22:30:33 +0000 (23:30 +0100)]
Tick off 5.23.4

6 years agoAdd 5.23.4 epigraph
Steve Hay [Tue, 20 Oct 2015 22:28:59 +0000 (23:28 +0100)]
Add 5.23.4 epigraph

6 years agoLast-minute perldelta tweak v5.23.4
Steve Hay [Tue, 20 Oct 2015 19:19:24 +0000 (20:19 +0100)]
Last-minute perldelta tweak

6 years agoPerl 5.23.4 today
Steve Hay [Tue, 20 Oct 2015 19:11:49 +0000 (20:11 +0100)]
Perl 5.23.4 today

6 years agoFinalize perldelta
Steve Hay [Tue, 20 Oct 2015 19:09:32 +0000 (20:09 +0100)]
Finalize perldelta

6 years agoUpdate Module::CoreList for 5.23.4
Steve Hay [Tue, 20 Oct 2015 18:59:55 +0000 (19:59 +0100)]
Update Module::CoreList for 5.23.4

6 years agoregcomp.c: Keep parse pointer on full character boundary
Karl Williamson [Tue, 20 Oct 2015 17:23:40 +0000 (11:23 -0600)]
regcomp.c: Keep parse pointer on full character boundary

I think, but am unsure, that this commit isn't necessary.  Without it,
the parse pointer can point to an interior byte of a multi-byte
character.  Recent work has sensitized me to trying to avoid this.  So
this commit advances the pointer a full character width at a time.

6 years agoperldelta for #126181
Karl Williamson [Tue, 20 Oct 2015 17:21:47 +0000 (11:21 -0600)]
perldelta for #126181

6 years agoPATCH: [perl #126181] regex: handle \cX inside (?[])
Victor Adam [Sun, 27 Sep 2015 08:22:08 +0000 (10:22 +0200)]
PATCH: [perl #126181] regex: handle \cX inside (?[])

The \cX notation for control characters used to cause panics and unexpected
behavior when used insed an extended character class. See bug #126181.

The solution is to ignore the byte following \c during the first parsing
pass of a (?[]) construct.

6 years agoAUTHORS: Add Victor Adam
Victor Adam [Fri, 2 Oct 2015 17:38:25 +0000 (19:38 +0200)]
AUTHORS: Add Victor Adam

6 years agoImprove pod for [ah]v_(clear|undef)
David Mitchell [Tue, 6 Oct 2015 10:50:06 +0000 (11:50 +0100)]
Improve pod for [ah]v_(clear|undef)

See [perl #117341].

6 years agoperldelta for #126404
Karl Williamson [Tue, 20 Oct 2015 05:00:40 +0000 (23:00 -0600)]
perldelta for #126404

6 years agoPATCH: [perl #12406] regnode panic
Karl Williamson [Tue, 20 Oct 2015 04:51:53 +0000 (22:51 -0600)]
PATCH: [perl #12406] regnode panic

This was due to an "=" that should have been a "+=", which ended up in
this situation not allocating enough space for the pattern.  This is not
likely to cause real field problems since the generated pattern won't
succeed, and the problem is warned about and would be corrected.

6 years agoconst vtables in win32/perlhost.h
Daniel Dragan [Mon, 19 Oct 2015 21:47:16 +0000 (17:47 -0400)]
const vtables in win32/perlhost.h

This allows some more memory to be shared between 2 perl processes since
it is const. VC 2013 32b build, before Virtual Size of perl523.dll
sections, .rdata 0x3DE00 bytes .data 0x1B90, after .rdata 0x3E140
.data 0x18B0.

6 years agoPATCH: [perl #126404] Assertion fail in (?[...])
Karl Williamson [Tue, 20 Oct 2015 04:24:24 +0000 (22:24 -0600)]
PATCH: [perl #126404] Assertion fail in (?[...])

This was due to the '()' in the test case being empty, and not reducing
to an operand.  The code didn't expect it, but was guarded by an
assertion.  Now it generates a proper error.

6 years agofix pod error introduced in 65c4791f
Tony Cook [Tue, 20 Oct 2015 04:11:42 +0000 (15:11 +1100)]
fix pod error introduced in 65c4791f

6 years agoMention the HP-UX cadvise (Code Advisor).
Jarkko Hietaniemi [Tue, 20 Oct 2015 02:32:45 +0000 (22:32 -0400)]
Mention the HP-UX cadvise (Code Advisor).

6 years agoAdd link for the Coverity perl5 project.
Jarkko Hietaniemi [Tue, 20 Oct 2015 02:26:56 +0000 (22:26 -0400)]
Add link for the Coverity perl5 project.

6 years agoMention
Jarkko Hietaniemi [Tue, 20 Oct 2015 01:55:12 +0000 (21:55 -0400)]

6 years agoMake __ASSERT__() empty under Coverity, avoiding many false alerts.
Jarkko Hietaniemi [Tue, 20 Oct 2015 01:11:15 +0000 (21:11 -0400)]
Make __ASSERT__() empty under Coverity, avoiding many false alerts.

(As suggested by khw.)

6 years agoperldelta tweaks
Steve Hay [Mon, 19 Oct 2015 21:27:21 +0000 (22:27 +0100)]
perldelta tweaks

6 years agoperl.h: Remove some unused, non-portable #defines
Karl Williamson [Mon, 19 Oct 2015 21:17:17 +0000 (15:17 -0600)]
perl.h: Remove some unused, non-portable #defines


These #defines are ASCII-platform only, so any code that might use them
would be wrong for non-ASCII ones.

6 years agoAdd test for [perl #126204]
Karl Williamson [Mon, 19 Oct 2015 21:13:18 +0000 (15:13 -0600)]
Add test for [perl #126204]

This bug is the same cause as #126180, fixed by

This current commit just adds the test case for #126204 to the test

6 years agoPATCH: [perl #126177] Document /(?n)/
Karl Williamson [Mon, 19 Oct 2015 19:40:23 +0000 (13:40 -0600)]
PATCH: [perl #126177] Document /(?n)/

This adds /n to various places in perlre where it was omitted, and adds
a heading to better structure the document, and a clarifying sentence.

6 years agoperldelta for #126319
Karl Williamson [Mon, 19 Oct 2015 19:12:29 +0000 (13:12 -0600)]
perldelta for #126319

6 years agoPATCH: [perl #126319] Seg fault
Karl Williamson [Mon, 19 Oct 2015 18:41:10 +0000 (12:41 -0600)]
PATCH: [perl #126319] Seg fault

This is a merge into blead of a branch that fixes several errors in the
\b{gcb}, \b{wb}, and \b{sb} (and \B{} corresponding) constructs added in

Finding and fixing the bug in the ticket caused several other
bugs to show up, so that fixing just that one caused other tests to

6 years agoRemove TODOs from tests now passing
Karl Williamson [Mon, 19 Oct 2015 18:21:30 +0000 (12:21 -0600)]
Remove TODOs from tests now passing

These were instituted commits prior to this one.

6 years ago"" =~ /\b{gcb}/ should fail; same \b{wb}, \b{sb}
Karl Williamson [Mon, 19 Oct 2015 18:14:36 +0000 (12:14 -0600)]
"" =~ /\b{gcb}/ should fail; same \b{wb}, \b{sb}

The Unicode standard indicates that these breaks should succeed at the
beginning and end of text.  It appears to me to be an oversight on their
part to not make an exception when there is no actual text.  (Their test
suite does not cover this case.)  I blindly implemented their algorithm
for 5.22, but it really is the wrong thing to do.

6 years agoFix some bugs in \B[sb}, \B{wb}, \B[gcb}
Karl Williamson [Mon, 19 Oct 2015 17:59:05 +0000 (11:59 -0600)]
Fix some bugs in \B[sb}, \B{wb}, \B[gcb}

Under \B{} the result is the complement of the \b{} result.  However in
this code, the result was getting complemented again, wrongly.

6 years agoregexec.c: Combine some if's
Karl Williamson [Mon, 19 Oct 2015 17:41:00 +0000 (11:41 -0600)]
regexec.c: Combine some if's

The previous commit removed all but a single if statement each from
within the scope of other if statements.  Combine them into one each.

6 years agoFix some bugs with \b{gcb}, wb and sb
Karl Williamson [Mon, 19 Oct 2015 17:16:58 +0000 (11:16 -0600)]
Fix some bugs with \b{gcb}, wb and sb

These were thinkos.  These things shouldn't have been in the
conditional, but after it so they are executed each time through the

6 years agoFix look-behind bug with \b{wb}
Karl Williamson [Mon, 19 Oct 2015 15:56:27 +0000 (09:56 -0600)]
Fix look-behind bug with \b{wb}

The algorithm for determining a word break requires look-behind in some
cases.  Certain characters are ignored in the look-behind, but until
this commit, the parse pointer was unchanged, causing things to get out
of sync in some edge cases.

6 years agoAdd TODO tests for [perl #126319]
Karl Williamson [Mon, 19 Oct 2015 15:12:46 +0000 (09:12 -0600)]
Add TODO tests for [perl #126319]

Some of these pass already, but may temporarily fail as a result of the
next few commits, until it all gets straightened out in the end.

6 years agoregexec.c: Remove extraneous 'break'
Karl Williamson [Mon, 19 Oct 2015 18:08:41 +0000 (12:08 -0600)]
regexec.c: Remove extraneous 'break'

6 years agoregexec.c: Add comment
Karl Williamson [Mon, 19 Oct 2015 17:35:15 +0000 (11:35 -0600)]
regexec.c: Add comment

6 years agot/re/subst.t: Use loc_tools for skipping locale tests
Karl Williamson [Mon, 19 Oct 2015 15:04:59 +0000 (09:04 -0600)]
t/re/subst.t: Use loc_tools for skipping locale tests

t/ is used as a centralized place for providing
infrastructure for core testing involving locales.

6 years agomktables: Improve .t diagnostic message
Karl Williamson [Mon, 19 Oct 2015 14:18:05 +0000 (08:18 -0600)]
mktables: Improve .t diagnostic message

Through an oversight, the text that was supposed to be printed as the
name for a test was just getting output as a 1 or 0.

6 years agomktables: Update comments
Karl Williamson [Mon, 19 Oct 2015 14:11:26 +0000 (08:11 -0600)]
mktables: Update comments

This function's capabilities has expanded beyond its original use, but
the descriptive comments weren't until now.

6 years agoregexec.c: Change function return from I32 to bool
Karl Williamson [Sun, 18 Oct 2015 16:04:51 +0000 (10:04 -0600)]
regexec.c: Change function return from I32 to bool

This only returns TRUE or FALSE; no need for a wider return value.

6 years agoperldelta: Nit
Karl Williamson [Mon, 19 Oct 2015 18:31:14 +0000 (12:31 -0600)]
perldelta: Nit

6 years agoFix broken link in perldelta added by f83db99040
Steve Hay [Mon, 19 Oct 2015 17:31:39 +0000 (18:31 +0100)]
Fix broken link in perldelta added by f83db99040

6 years agoRemove boilerplate stuff from perldelta
Steve Hay [Mon, 19 Oct 2015 17:18:41 +0000 (18:18 +0100)]
Remove boilerplate stuff from perldelta

6 years agoFill in perldelta
Steve Hay [Mon, 19 Oct 2015 17:02:52 +0000 (18:02 +0100)]
Fill in perldelta

6 years agoperl #126396 IRIX longdouble infinity issues
Jarkko Hietaniemi [Mon, 19 Oct 2015 02:30:43 +0000 (22:30 -0400)]
perl #126396 IRIX longdouble infinity issues

In IRIX longdouble (which uses the double-double format, bigendian)
multiplying with infinity introduces garbage bytes to the second double
of the double-double.

This garbage, in turn, seems to tickle another bug in long doubles,
in comparing infinities, where these garbage bytes errorneously matter
when they should not.

Workaround: zero these garbage bytes in multiplication.

The garbage bytes seem to appear only the multiplication, as far as
t/op/infnan.t can detect.

Even though we could place the multiplication result to a temporary NV
variable (for easier infiniteness inspection) for all the platforms and
depend on optimizer doing away with the temporary, let's be conservative.

6 years agoIRIX long-double sqrt(2) one bit error in the least significant end.
Jarkko Hietaniemi [Mon, 19 Oct 2015 11:10:45 +0000 (07:10 -0400)]
IRIX long-double sqrt(2) one bit error in the least significant end.

6 years agoIRIX cc -c99 does -D__c99 but none of the other C99 macros.
Jarkko Hietaniemi [Mon, 19 Oct 2015 02:28:37 +0000 (22:28 -0400)]
IRIX cc -c99 does -D__c99 but none of the other C99 macros.

Admittedly this change could make C99-ness visible also
on platforms beyond IRIX, but that should be a good thing.

6 years agoIRIX long double: use the C99/C11-style generic math macros.
Jarkko Hietaniemi [Mon, 19 Oct 2015 12:05:19 +0000 (08:05 -0400)]
IRIX long double: use the C99/C11-style generic math macros.

Without this the IRIX libmath _isinfl/_isnanl APIs are not used,
and the explicit comparison against NV_MAX/-NV_MAX is used instead,
which seems to work, but is definitely ickier and probably slower.

In the ideal world we could have a Configure test for these math macros.

6 years agoperldelta copy-editing
Steve Hay [Mon, 19 Oct 2015 08:07:11 +0000 (09:07 +0100)]
perldelta copy-editing

6 years agoClean-up temporary directories in Module-Metadata tests
Steve Hay [Mon, 19 Oct 2015 07:26:32 +0000 (08:26 +0100)]
Clean-up temporary directories in Module-Metadata tests

Already merged upstream, and no version bump required for this test-only

6 years agoreimplement $^WIN32_SLOPPY_STAT as a magic var
Daniel Dragan [Fri, 16 Oct 2015 21:49:20 +0000 (17:49 -0400)]
reimplement $^WIN32_SLOPPY_STAT as a magic var

The original implementation in commit cba61fe146 was sloppy. It is named
like a special var, it is listed as a special var, but it was a regular GV.
Since nobody knows this var exists, and full stat is the default (which I
disagree with see below). There will be alot more PP and C/XS perl stat()
calls (atleast a couple to dozens or low 100s for short lived perl
processes) than reads/writes to this global scalar (rounded to 0 R/Ws)
in a Win32 perl process. So avoid the 1 usually failing GV package (hash)
lookup for each PP/XS/PL C stat by using magic vars and a C bool. This is
a perf increase. Use sv_true instead of SvTRUE_NN because this code is
extremely rare to execute and the macro has large machine code.

I disagree with the default being full stat with since this increases the
number of kernel IO calls and ASCII->UTF16 conversions, and there was
perf criticism in the original thread that implemented this
but why full stat is default is for another ticket. This patch lessens the
overhead of full stat until something else is decided.

Change the initial value of the sloppystat setting for miniperl to be true
instead of doing it in in PP. Revert part of
commit 8ce7a7e8b0 "speed up miniperl require on Win32" to acomplish this.
Unlike Unix perl, no object files are shared between mini and full perl,
so changing the default is fine on Win32 Perl. If minitest/miniperl really
need hard link testing/support, they can explictly turn off sloppy stat
and enable full stat with the special var. Changing the stat default from
C for miniperl avoids creating the special GV on each miniperl process
start as it previously was with the way.

Changing stat setting in C and not PP also saves a couple IO calls in
win32_stat when opening the first .pl if it isn't -e, and
opening in all permutations. The PP code in S_parse_body
contains a -f. See ticket for this patch for details.

Only CPAN use of this special var is
File-Stat-Moose-0.06/lib/File/Stat/  according to cpangrep.

6 years agoMake IO::Poll->poll call _poll even with an empty fd array
Dagfinn Ilmari Mannsåker [Fri, 16 Oct 2015 16:23:40 +0000 (17:23 +0100)]
Make IO::Poll->poll call _poll even with an empty fd array

Now that _poll() properly handles an empty array, this fixes
[ #25049].  The commit referenced in that ticket never made
it to CPAN nor blead.

6 years agoFix assertion when calling IO::Poll::_poll() with an empty fd array
Dagfinn Ilmari Mannsåker [Fri, 16 Oct 2015 16:20:04 +0000 (17:20 +0100)]
Fix assertion when calling IO::Poll::_poll() with an empty fd array

  perl: IO.xs:322: XS_IO__Poll__poll: Assertion
  `PL_valid_types_PVX[((svtype)((_svpvx)->sv_flags & 0xff)) & 0xf]'

This is because NEWSV(…, 0) returns undef, with a grabage pointer in
the PV slot.  This doesn't seem to matter in practice, since nothing
actually dereferences the pointer when nfds is zero, but to be safe we
should pass in _some_ valid pointer, so just use the SV* itself;

6 years agoremove extra stat() call from .pm opening+remove extra safepath check
Daniel Dragan [Fri, 16 Oct 2015 21:40:38 +0000 (17:40 -0400)]
remove extra stat() call from .pm opening+remove extra safepath check

Originally S_doopen_pm had 2 stat calls, one on the .pm path, and another
on the .pmc, to get mtimes of both. Commit a91233bf4c "Load .pmc always,
even if they are older than a matching .pm file." (see )
got rid of one of the stat calls but the other was left in place, possibly
as an oversight. S_check_type_and_open itself does another stat call on
unix to check for bad kinds of FS entries (reading a dir as a file), so
assuming someone used .pmc files, a good .pmc would be stat, stat,
open instead of the ideal, stat, open. Remove the extra stat from
S_doopen_pm for efficiency. Since the timestamp compare was removed, the
role of S_doopen_pm has been to verify an attempted path is acceptable to
pass to the FS (no IO done), and generate a .pmc path (no IO done), the
IO side of thing is in S_check_type_and_open, it shouldn't be in

On Win32, on a no .pmc build, an open is directly done on the attempted
.pm path for efficiency, no stat is done normally (see commit d345f48775
"Win32: stat() only after a failed open() on a module"). Before this patch
the .pmc attempted path got a stat which on Win32 is more than 1 IO call,
compared to Win32 open which is 1 IO call. With this patch, the Win32
specific IO logic in S_check_type_and_open executes instead of a generic
Win32 stat so there is just 1 failing IO call for file not found (typical
case for .pmc) instead of multiple file not found IO calls. See ticket for

When .pmc files are enabled (enabled is default), 2 checks for bad null
char paths were done, once in S_doopen_pm, then again in lower level
S_check_type_and_open. Do the check only once in the higher level call
(S_doopen_pm) for efficiency, there is no way for string "c" which is
catted on to contain a null. There was an existing comment refering to
the problem of a low level check for null returning a message about a
".pmc" instead of a ".pm", so that is another reason to do it at a higher
level. Note on no PMC builds, S_check_type_and_open replaces S_doopen_pm
and still must do the check.

6 years agoFor IRIX the official symbol is __sgi, not __irix__.
Jarkko Hietaniemi [Sat, 17 Oct 2015 23:03:01 +0000 (19:03 -0400)]
For IRIX the official symbol is __sgi, not __irix__.

The __sgi is defined both by SGI cc and gcc.

The change does not seem to change the set of failures with
uselongdouble build; there are two known ones in general
[perl #125298] (warnings) and [cpan #105030] (Time::Piece %z),
and then for uselongdouble a bunch of infnan and locale failures
that I haven't gotten around to reporting or fixing.

6 years agosome perldelta entries
David Mitchell [Sun, 18 Oct 2015 11:30:22 +0000 (12:30 +0100)]
some perldelta entries


    6768377 make EXTEND() and stack_grow() safe(r)
    052a7c7 fix up EXTEND() callers

and a missed one (my fault) from 5.23.2:

    a5f4850 re-implement OPpASSIGN_COMMON mechanism

6 years agooptimise save/restore of PL_delaymagic.
David Mitchell [Tue, 13 Oct 2015 16:02:39 +0000 (17:02 +0100)]
optimise save/restore of PL_delaymagic.

A few places (pp_push, pp_unshift, pp_aassign) have to
set PL_delaymagic on entry, and restore it on exit. These are hot
pieces of code. Rather than using  ENTER/SAVEI16(PL_delaymagic)/LEAVE,
add an extra field to the jumpenv struct, and make the JUMPENV_PUSH / POP
macros automatically save and restore this var.

This means that pp_push etc only need to do a local save:

    U16 old_delaymagic = PL_delaymagic;
    PL_delaymagic = DM_DELAY;
    PL_delaymagic = old_delaymagic;

and in case of an exception being raised, PL_delaymagic still gets

This transfers the cost of saving PL_delaymagic from each call to
pp_aassign etc to each time a new run level is invoked. The latter should
be much less frequent.

Note that prior to this commit, pp_aassign wasn't actually saving and
restoring PL_delaymagic; it was just setting it to 0 at the end. So this
commit also makes pp_aassign safe against PL_delaymagic re-entrancy like
pp_push and pp_unshift already were.

6 years agoDelay @ISA magic while unshifting
Dagfinn Ilmari Mannsåker [Fri, 18 Sep 2015 16:40:01 +0000 (17:40 +0100)]
Delay @ISA magic while unshifting

pp_unshift() first calls av_unshift(), which prepends the the
requisite number of undefs, then calls av_store() for each item.
However, unlike pp_push() it was not setting PL_delaymagic around the
av_store() loop, so when unshifting onto @ISA, its magic would be
triggered while there were still undefs in the array, causig the
following spurious warning:

    $ perl -wE 'package Foo; unshift @ISA, qw(A B)'
    Use of uninitialized value in unshift at -e line 1.

Also fix pp_push() to save and restore PL_delaymagic instead of
clearing it, so that e.g. unshifting a tied value with FETCH pushing
onto another @ISA doesn't erroneously clear the value from underneath
the unshift.

6 years #123977 - clear errno in IRIX PERLIO=stdio
Jarkko Hietaniemi [Sat, 17 Oct 2015 22:11:37 +0000 (18:11 -0400)] #123977 - clear errno in IRIX PERLIO=stdio

Under some circumstances IRIX stdio fgetc() and fread() set the errno
to ENOENT, which makes no sense according to either IRIX or POSIX docs.
Just clear such an errno.

6 years agoBook-keeping for the previous commit (which restored the VC6 build, btw)
Steve Hay [Sat, 17 Oct 2015 21:22:55 +0000 (22:22 +0100)]
Book-keeping for the previous commit (which restored the VC6 build, btw)