This is a live mirror of the Perl 5 development currently hosted at
3 years ago5.24.4-RC1 and 5.26.2-RC1 today
Steve Hay [Sat, 24 Mar 2018 17:23:37 +0000 (17:23 +0000)]
5.24.4-RC1 and 5.26.2-RC1 today

3 years agoBump Time-HiRes to 1.9759 to revert changes from 1.9754..1.9758 on CPAN
Todd Rinaldo [Fri, 23 Mar 2018 16:48:39 +0000 (11:48 -0500)]
Bump Time-HiRes to 1.9759 to revert changes from 1.9754..1.9758 on CPAN

Tag Porting/ so it is clear that a release to CPAN is

3 years agoRevert "Upgrade Time::HiRes from version 1.9753 to 1.9757"
Todd Rinaldo [Fri, 23 Mar 2018 16:36:08 +0000 (11:36 -0500)]
Revert "Upgrade Time::HiRes from version 1.9753 to 1.9757"

This reverts commit 13813507385079199d99d90776780dcd653f6919.

On recommendation of the Author, we are reverting these changes for
now in order to stabilize blead.

3 years agoRevert "Upgrade Time::HiRes from version 1.9757 to 1.9758"
Todd Rinaldo [Fri, 23 Mar 2018 16:35:45 +0000 (11:35 -0500)]
Revert "Upgrade Time::HiRes from version 1.9757 to 1.9758"

This reverts commit 554c20fe6eab1dc262c2fb2d036b76fa09153f1c.

3 years agoMaint releases are now expected mid-April; RC1s will be out soon
Steve Hay [Thu, 22 Mar 2018 21:33:12 +0000 (21:33 +0000)]
Maint releases are now expected mid-April; RC1s will be out soon

3 years agoRemove redundant advice in the RMG about using pod2html which you were just shown...
Todd Rinaldo [Thu, 22 Mar 2018 20:31:20 +0000 (15:31 -0500)]
Remove redundant advice in the RMG about using pod2html which you were just shown how to use

3 years agoUpdate Porting/ to match CPAN for Module::CoreList
Todd Rinaldo [Thu, 22 Mar 2018 19:31:54 +0000 (14:31 -0500)]
Update Porting/ to match CPAN for Module::CoreList

3 years agoUpgrade Time::HiRes from version 1.9757 to 1.9758
Todd Rinaldo [Thu, 22 Mar 2018 19:22:25 +0000 (14:22 -0500)]
Upgrade Time::HiRes from version 1.9757 to 1.9758


1.9758 [2018-03-21]
 - fix build in Win32 with Visual C by introducing a fake struct timezone
   [ #124844]
 - in utime.t detect better being run in a noatime filesystem,
   and if so, skip the test (for the HAMMER filesystem of DragonflyBSD)
 - also for the HAMMER fs (if not in noatime), lower the expected subsecond
   timestamp granularity to microseconds
 - fix the version number typo in Changes: 1.9577 -> 1.9757

3 years agoutf8.c: Update comment
Karl Williamson [Thu, 22 Mar 2018 14:27:11 +0000 (08:27 -0600)]
utf8.c: Update comment

3 years agoI18N::Langinfo/t/Langinfo.t: Skip tests on early netbsd
Karl Williamson [Mon, 19 Mar 2018 00:19:48 +0000 (18:19 -0600)]
I18N::Langinfo/t/Langinfo.t: Skip tests on early netbsd

The names of the months and weekdays are swapped with the abbreviated
names before netbsd 7, so skip the tests on those platforms.  See their

 date: 2013-09-07 20:11:41 +0400;  author: bouyer;  state: Exp;  lines:
 +38 -38;  commitid: HURUJwL5bnZmww4x;
  Apply patch, requested by joerg in ticket #934:
    lib/libc/locale/global_locale.c: patch
     provide consistent and correct data for the C locale.

3 years agolocale.c: Really silence compiler warning
Karl Williamson [Thu, 15 Mar 2018 17:37:16 +0000 (11:37 -0600)]
locale.c: Really silence compiler warning

Commit 32a62865ef662fce2b2250a7e0eca15861e7fe20 did not work, as gcc
doesn't recognize a void cast as handling a return value.  This should
hopefully work, though we discard the value before looking at it, which
could cause another warning.

3 years agoop_dump(): display PARENT of top-most node
David Mitchell [Tue, 20 Mar 2018 16:21:20 +0000 (16:21 +0000)]
op_dump(): display PARENT of top-most node

When dumping a subtree, display the op_parent() value for
the top-most node of the subtree.

3 years agoPush release of 5.28 by a month to May
Sawyer X [Wed, 21 Mar 2018 09:05:54 +0000 (11:05 +0200)]
Push release of 5.28 by a month to May

3 years agomktables: Add aliases to the Present_In property
Karl Williamson [Wed, 21 Mar 2018 04:42:31 +0000 (22:42 -0600)]
mktables: Add aliases to the Present_In property

This property parallels the Age property (but is cumulative).  Each
table in it should have the same property value possibilities as the
corresponding Age table.

3 years agoAdjust code which did not get automatically switched over to 5.027011
Todd Rinaldo [Wed, 21 Mar 2018 00:47:24 +0000 (19:47 -0500)]
Adjust code which did not get automatically switched over to 5.027011

The following changes were still required after doing

  $ ./perl -Ilib Porting/bump-perl-version -i 5.27.10 5.27.11

Module::CoreList had to be updated by hand. had to be updated by doing regen/ lib/B/

3 years agoDevel::PPPort: Use prefix D_PPP_ for helper macros
Pali [Thu, 15 Mar 2018 19:51:30 +0000 (20:51 +0100)]
Devel::PPPort: Use prefix D_PPP_ for helper macros

Prefix D_PPP_ is already handled by This change cleanups code,
makes code more consistent and avoids specifying helper macros in =dontwarn

3 years agoBump the perl version in various places for 5.27.11
Todd Rinaldo [Tue, 20 Mar 2018 21:48:46 +0000 (16:48 -0500)]
Bump the perl version in various places for 5.27.11

3 years agoNew Perldelta for 5.27.11
Todd Rinaldo [Tue, 20 Mar 2018 21:47:13 +0000 (16:47 -0500)]
New Perldelta for 5.27.11

3 years agoTick another dev release off
Chris 'BinGOs' Williams [Tue, 20 Mar 2018 21:30:35 +0000 (21:30 +0000)]
Tick another dev release off

3 years agoEpigraph for 5.27.10
Todd Rinaldo [Tue, 20 Mar 2018 21:29:53 +0000 (16:29 -0500)]
Epigraph for 5.27.10

3 years agoPerlhist entry for 5.27.10 v5.27.10
Todd Rinaldo [Tue, 20 Mar 2018 17:31:44 +0000 (12:31 -0500)]
Perlhist entry for 5.27.10

3 years agoFinalize perldelta for 5.27.10
Todd Rinaldo [Tue, 20 Mar 2018 17:17:27 +0000 (12:17 -0500)]
Finalize perldelta for 5.27.10

3 years agoupdate Module::CoreList for v5.27.10
Todd Rinaldo [Tue, 20 Mar 2018 17:11:12 +0000 (12:11 -0500)]
update Module::CoreList for v5.27.10

3 years handle postfix $r->$#*
David Mitchell [Tue, 20 Mar 2018 12:05:13 +0000 (12:05 +0000)] handle postfix $r->$#*

(\my @a)->$#*

was being deparsed as

$#{\my @a}

which incorrectly reduced the scope of the lexical @a.

Make recognise this case and use the new postfix notation

This fixes

    ./TEST -deparse op/array.t

which was using ->$#*.

3 years agoDeparse: handle \our @a
David Mitchell [Tue, 20 Mar 2018 09:51:37 +0000 (09:51 +0000)]
Deparse: handle \our @a

\our @a
was being deparsed as

which incorrectly converts the \ from a scalar op to a list op

3 years ago[MERGE] Deparse fixups.
David Mitchell [Tue, 20 Mar 2018 09:28:23 +0000 (09:28 +0000)]
[MERGE] Deparse fixups.

    ./TEST -deparse
pass again

3 years agoadd entries to Porting/deparse-skips.txt
David Mitchell [Mon, 19 Mar 2018 23:42:05 +0000 (23:42 +0000)]
add entries to Porting/deparse-skips.txt

Two test scripts are newly failing under
    ./TEST -deparse

    there are two issues:

        \our @a
        is getting deparsed as
        \our (@a)
        and so being misinterpreted as refgen rather than srefgen
        isn't deparsed, so
        (\my @a)->$#*
        gets deparsed as
        $#{\my @a}
        with an incorrect scope for the my delcaration


    for some reason, some functions from ./lib/
    are being output as part of lib/Config.t, and so things
    like strict throw a wobbly.
    Not sure yet why its happening

3 years bump version
David Mitchell [Mon, 19 Mar 2018 23:46:39 +0000 (23:46 +0000)] bump version

3 years agoDeparse -l: set correct line num at end of sub
David Mitchell [Mon, 19 Mar 2018 20:35:26 +0000 (20:35 +0000)]
Deparse -l: set correct line num at end of sub

A sub declaration like

    sub f { ...}

will be deparsed under -l as

    #line 1 "foo"
    sub f {
    #line 1 "foo"

which means that the closing '}' of the sub is incorrectly seen as being
on the next line.

This matters when a glob is created based on a sub being compiled: the
glob's gp_line field is set to the line containing the '}'.

This was causing some tests in ext/B/t/xref.t to fail under
    ./TEST -deparse

This commit causes an extra #line directive to be emitted:

    #line 1 "foo"
    sub f {
    #line 1 "foo"
    #line 1 "foo"   <=== NEW

Whether xref.t failed depended on another factor. The optimisation
which created the GV for a just-compiled sub as an RV to a CV rather than
a GV to CV, causes the later-vifified GV (upgraded from an RV) to instead
have a gp_line corresponding to the first cop in the sub's body.

Arguably this difference (gp_line being set to the line number of first
line of the sub rather than the last line) is a bug, but it's not obvious
how to fix it, and I don't address it here.

However, the optimisation originally only applied to GVs in the main
stash;  it was later extended to all stashes but then reverted again,
in the sequence of commits


which caused xref.t to pass, then fail again.

3 years tr/...//c was failing
David Mitchell [Tue, 13 Mar 2018 12:20:03 +0000 (12:20 +0000)] tr/...//c was failing

Deparsing a tr/....//c (complement and an empty replacement list)
was failing due to the 'delete RHS if LHS == RHS' action not triggering,
due the LHS having already been complemented.

At the same time, expand the set deparse tr/// tests;

3 years add some code comments
David Mitchell [Mon, 12 Mar 2018 12:20:23 +0000 (12:20 +0000)] add some code comments

3 years agoDeparse: remove spurious tr/// debugging
David Mitchell [Sun, 11 Mar 2018 18:04:53 +0000 (18:04 +0000)]
Deparse: remove spurious tr/// debugging

I accidentally left a debugging print statement in after my recent tr///

3 years agoFix locale failures introduced 5 hours ago
Karl Williamson [Tue, 20 Mar 2018 02:52:25 +0000 (20:52 -0600)]
Fix locale failures introduced 5 hours ago

Commit 9fe4122e6defd7e9204ed6f2370d926d4c3b261b broke threaded builds
because it changed to free a global variable upon thread exit (I had
forgotten that it wasn't an interpreter variable).

I do not know why this passed before pushing; others have had trouble
reproducing it.  But the same tests were failing for me now.  The one
difference is that I had been using clang with address sanitizer
compiled in but turned off when I made that commit.  Now I'm using g++

Spotted by Dave Mitchell

3 years agoFirst draft of perldelta for 5.27.10
Todd Rinaldo [Tue, 20 Mar 2018 01:54:17 +0000 (20:54 -0500)]
First draft of perldelta for 5.27.10

3 years agoSpelling correction in perldiag.pod
Todd Rinaldo [Tue, 20 Mar 2018 01:49:35 +0000 (20:49 -0500)]
Spelling correction in perldiag.pod

3 years agoperl.c: Free some locale stuff on exit
Karl Williamson [Mon, 19 Mar 2018 22:00:21 +0000 (16:00 -0600)]
perl.c: Free some locale stuff on exit

This stops potential memory leaks when using POSIX 2008 locale handling,
by freeing the current locale object and two special ones.

3 years agolocale.c: Add detail to debugging statement
Karl Williamson [Mon, 19 Mar 2018 21:53:04 +0000 (15:53 -0600)]
locale.c: Add detail to debugging statement

so that it is easier to debug memory leaks.

3 years agolocale.c: Fix memory leak
Karl Williamson [Mon, 19 Mar 2018 21:36:56 +0000 (15:36 -0600)]
locale.c: Fix memory leak

This was caused by doing some initialization work out-of-order.  This
commit just moves some code to later in the function, revising some
comments to make sense after the move.

3 years agoUpdate File::Glob to 1.31 to account for changes in 5.27.10
Todd Rinaldo [Mon, 19 Mar 2018 21:33:52 +0000 (16:33 -0500)]
Update File::Glob to 1.31 to account for changes in 5.27.10

 - C89 changes from Aaron Crane
 - Unit test timing fixes
 - Don't use loop: as a label to avoid struct loop confusion

3 years agoUpgrade Test-Harness from version 3.39 to 3.41
Todd Rinaldo [Mon, 19 Mar 2018 20:35:27 +0000 (15:35 -0500)]
Upgrade Test-Harness from version 3.39 to 3.41


3.42    19-03-2018
        - Enable rulesfile.t to run in core

3 years agoFix locale problems on mingw
Karl Williamson [Sun, 18 Mar 2018 18:39:47 +0000 (12:39 -0600)]
Fix locale problems on mingw

Various symbols get exported (or not) by  The determination
of some of the new ones is fairly complex in perl.h, and unfortunately
in general the code logic to do so must be copied into (until
a volunteer fixes this).  I thought I could avoid a bunch of this by
using the symbol ${^SAFE_LOCALES} which in fact was created so that
programs wouldn't have to know about this complexity.

The problem is that on Windows, miniperl is always compiled
single-thread and so locales are always safe, and so (which
is called by miniperl) got the wrong information.  The solution,
unfortunately, is to reproduce the complexity in

Spotted by Daniel Dragan.

3 years agoperlapi: bytes_to_utf8(), from_utf8(): Add clarification
Karl Williamson [Sun, 18 Mar 2018 18:38:39 +0000 (12:38 -0600)]
perlapi: bytes_to_utf8(), from_utf8(): Add clarification

The caller is responsible for freeing the memory used by these functions

3 years agoUpdate ExtUtils-MakeMaker to CPAN version 7.34
Chris 'BinGOs' Williams [Mon, 19 Mar 2018 11:08:13 +0000 (11:08 +0000)]
Update ExtUtils-MakeMaker to CPAN version 7.34


7.34  Mon Mar 19 10:21:12 GMT 2018

    No changes since v7.33_03

3 years agoUpgrade Test-Harness from version 3.39 to 3.41
Todd Rinaldo [Sun, 18 Mar 2018 20:19:36 +0000 (15:19 -0500)]
Upgrade Test-Harness from version 3.39 to 3.41


3.41    27-02-2018
        - Released 3.40_01 without code modifications

3.40_01 23-07-2017
        - Return handle for pipes and sockets #58 (Erik Huelsmann)
        - TAP v13 plan allows trailing whitespace (Steffen Schwigon)
        - prove: add a --statefile=<path> option to customize the .prove file
          (Ævar Arnfjörð Bjarmason)
        - Avoid non-deterministic source handling, make a SourceHandler tie an
          error. (Michael Schwern, Leon Timmermans)
        - Fix and simplify MSWin32 colorization (Roy Ivy III)
        - Fix file source handler to accept single extensions option (Tomoki Aonuma)
        - Spelling fixes (Brian Wightman)

3 years agoMark CPAN changes for if/PathTools as irrelevant
Todd Rinaldo [Sun, 18 Mar 2018 22:08:27 +0000 (17:08 -0500)]
Mark CPAN changes for if/PathTools as irrelevant

There are no significant changes for these modules upstream. This change quiets
the tools that monitor for differences on CPAN.

3 years agoUpgrade Time::HiRes from version 1.9753 to 1.9757
Todd Rinaldo [Sun, 18 Mar 2018 22:08:21 +0000 (17:08 -0500)]
Upgrade Time::HiRes from version 1.9753 to 1.9757


1.9577 [2018-03-15]
 - fix win32 (and cygwin?) builds which have been broken since 1.9755:
   problem was that gettimeofday() is a macro and needs to stay such
 - regenerate ppport.h with Perl 5.26.1 (was previously generated with
   5.25.6) and Devel::PPPort 3.35 (previously 3.36) -- this doesn't
   change the ppport.h, though

1.9756 [2018-03-14]
 - division by zero in new test tv_interval.t [ #124775]:
   made the test pass even if the difference is zero, but also
   made it practically impossible to ever be zero by adding
   a sub-second sleep.
 - remove comments from inside qw [ #124777],
   only seemed to be caught by Perl 5.18.4

1.9755 [2018-03-14]
 - adjust the error messages of tv_interval()
 - the NV_1EX constants now cast to be NV so that
   tv_interval() with long double builds does not
   produce ugly results [ #106456]
 - add tests for tv_interval()
 - centralize the mygettimeofday() logic
 - make the mygettimeofday() a function instead of macro
 - add the OS X 10.12+ clock_gettime() constants
 - regenerate the fallback files

1.9754 [2018-02-16]
 - unify the gettimeofday() and time() forked code
   that had near identical code paths for MacOS Classic
   (which has two unusual features: unsigned time_t,
   and a special tz struct member), and for non-MacOS Classic
 - tv_interval should be implemented in XS
   [ #106456]
   thanks to Sergey Aleynikov (suggested implementation simplified
   by the above-mentioned MacOS Classic simplification)

3 years agoUpgrade Encode from version 2.96 to 2.97
Todd Rinaldo [Sun, 18 Mar 2018 22:08:15 +0000 (17:08 -0500)]
Upgrade Encode from version 2.96 to 2.97

3 years agoUpgrade Locale::Codes from version 3.55 to 3.56
Todd Rinaldo [Sun, 18 Mar 2018 22:08:09 +0000 (17:08 -0500)]
Upgrade Locale::Codes from version 3.55 to 3.56

3 years agoUpgrade Scalar::Util from version 1.49 to 1.50
Todd Rinaldo [Sun, 18 Mar 2018 22:08:04 +0000 (17:08 -0500)]
Upgrade Scalar::Util from version 1.49 to 1.50


1.50 -- 2018-02-20 19:13:27
* Added head() and tail() functions (thanks preaction)
* Support binary and Unicode in symbol names for set_subname()

* Fix building with C++ and C89 compilers
* Fix uniq() test for old Test::More
* Fix example get_code_info for unnamed subs (RT#116962)
* Fixes for symbol names containing ' characters
* Don't leak SVs from sum0/product1 when called with zero args (RT#124017)
* Use sv_rvunweaken() in Scalar::Util::unweaken() (thanks ilmari)
* Misc. fixes for perl 5.6

3 years agoUpgrade Test-Simple from version 1.302122 to 1.302133
Todd Rinaldo [Sun, 18 Mar 2018 22:07:59 +0000 (17:07 -0500)]
Upgrade Test-Simple from version 1.302122 to 1.302133


1.302133  2018-03-11 12:48:37-07:00 America/Los_Angeles

    - No changes since last trial

1.302132  2018-03-09 15:43:51-08:00 America/Los_Angeles (TRIAL RELEASE)

    - Add method to validate facet data
    - Add Test2::Event::V2 event class, and context helpers
    - Improve how events handle facets
    - Break out meta_facet_data
    - Document and fix Facets2Legacy
    - Fix nested and in_subtest to look at hub facets
    - Fix event->related and trace with uuid

1.302131  2018-03-07 09:36:16-08:00 America/Los_Angeles (TRIAL RELEASE)

    - Make sure event puts the uuid into the about facet

1.302130  2018-03-07 08:07:54-08:00 America/Los_Angeles

    - No changes since last trial

1.302129  2018-03-06 13:43:22-08:00 America/Los_Angeles (TRIAL RELEASE)

    - Make hubs tag events with a new facet

1.302128  2018-03-05 09:26:53-08:00 America/Los_Angeles

    - No changes since the trial

1.302127  2018-03-02 12:43:56-08:00 America/Los_Angeles (TRIAL RELEASE)

    - Fix missing UUID in Test::Builder subtests

1.302126  2018-03-01 23:15:52-08:00 America/Los_Angeles (TRIAL RELEASE)

    - Add optional UUID tagging

1.302125  2018-02-21 23:10:39-08:00 America/Los_Angeles

    - No changes since trial

1.302124  2018-02-13 22:02:48-08:00 America/Los_Angeles (TRIAL RELEASE)

    - Fix a test to skip without threads

1.302123  2018-02-13 21:39:31-08:00 America/Los_Angeles (TRIAL RELEASE)

    - Make it possible to disable IPC

3 years agoUpgrade Time::Piece from vesion 1.3203 to 1.3204
Todd Rinaldo [Sun, 18 Mar 2018 22:07:45 +0000 (17:07 -0500)]
Upgrade Time::Piece from vesion 1.3203 to 1.3204


1.3204  2018-02-19
        - Fix compilation warnings.

3 years agoSilence compilter warning
Karl Williamson [Fri, 16 Mar 2018 20:11:52 +0000 (14:11 -0600)]
Silence compilter warning

See thread beginning at

3 years agolocale.c: Clarify warning message
Karl Williamson [Fri, 16 Mar 2018 19:57:00 +0000 (13:57 -0600)]
locale.c: Clarify warning message

When there are discrepancies in the locale and what Perl is expecting, a
warning is raised listing the problematic characters.  For \n, and \t,
they should have been displayed as mnemonics, but a required backslash
to escape things had been omitted, so they were displayed literally, so
looked just like white space.  Also, put any displayed blank in ' ' so
it won't look like the list is empty.

3 years agolocale.c: Handle and edge case
Karl Williamson [Fri, 16 Mar 2018 19:53:48 +0000 (13:53 -0600)]
locale.c: Handle and edge case

setlocale(LC_ALL, "LC_foo=bar; LC_baz=gah") is legal.  Any categories
omitted in the string are set to "C".  Prior to this commit the omitted
categories were unchanged

3 years agoDon't include interpreter variable unless used
Karl Williamson [Thu, 15 Mar 2018 03:08:54 +0000 (21:08 -0600)]
Don't include interpreter variable unless used

This adds an #ifdef around this variable, so that it isn't defined
unless used.

Spotted by Daniel Dragan.

3 years agoMake Unicode data structures global
Karl Williamson [Wed, 14 Mar 2018 03:52:15 +0000 (21:52 -0600)]
Make Unicode data structures global

These structures are read-only, use const C strings, and are truly
global, so no need to have them be interpreter level.  This saves
duplicating and freeing them as threads come and go.

In doing this, I noticed that not every one was properly being
copied/deallocated, so this fixes some potential unreported bugs, and

3 years agolocale.c: Silence Win32 compiler warning
Karl Williamson [Wed, 14 Mar 2018 14:39:59 +0000 (08:39 -0600)]
locale.c: Silence Win32 compiler warning

The return value is discarded here, and a few lines down calls this
function again, retaining its return value.

3 years agolocale.c: Add savepv() to setlocale() returns
Karl Williamson [Tue, 13 Mar 2018 18:08:16 +0000 (12:08 -0600)]
locale.c: Add savepv() to setlocale() returns

The next call to setlocale can overwrite the returned value from the
current call, depending on platform.  Therefore, one should save the
results.  I forgot this in commit 39e69e777b8.  Now fixing it.

I also audited locale.c to find any other instances.  There were several
where setlocale() is called without saving, and that return is passed to
a function.  It may work now, but it's dangerous to rely on the function
not getting changed in such a way as to do its own setlocale, expecting
the input parameter to be unchanged.  So save the returns from these as
well, as a precaution.

3 years agoperl_langinfo.h: Fix typo in comment
Karl Williamson [Mon, 12 Mar 2018 17:26:17 +0000 (11:26 -0600)]
perl_langinfo.h: Fix typo in comment

3 years agoperllocale: Update, clarify
Karl Williamson [Mon, 12 Mar 2018 18:42:23 +0000 (12:42 -0600)]
perllocale: Update, clarify

3 years agoperlapi/Perl_setlocale: Clarify
Karl Williamson [Mon, 12 Mar 2018 18:29:42 +0000 (12:29 -0600)]
perlapi/Perl_setlocale: Clarify

3 years agoFix comments/pod for LC_NUMERIC not always C
Karl Williamson [Mon, 12 Mar 2018 18:24:04 +0000 (12:24 -0600)]
Fix comments/pod for LC_NUMERIC not always C

In recent Perl versions, the underlying locale for LC_NUMERIC has been
kept in C because XS code is expecting a dot radix character.  But if
the LC_NUMERIC locale has a dot, that is unnecessary.  (There is also
the thousands grouping separator which for safety we verify is empty.)
Thus 5.27 doesn't always keep the underlying locale in C; it does so
only if necessary.

This commit updates various comments and pods to reflect this change.

3 years agot/lib/croak/regcomp: Fix up for EBCDIC
Karl Williamson [Mon, 12 Mar 2018 17:18:11 +0000 (11:18 -0600)]
t/lib/croak/regcomp: Fix up for EBCDIC

This skips the current ASCII-centric test on EBCDIC platforms, and adds
an equivalent test for just those.

3 years agoDon't use duplocale() unless is present
Karl Williamson [Wed, 7 Mar 2018 17:20:53 +0000 (10:20 -0700)]
Don't use duplocale() unless is present

Prior to this patch, the code assumed that if you have the other, more
significant, POSIX 2008 functions available, that duplocale was present
and correctly functioning too.

However, we found that there have been bugs in it, so that a hints file
or Configure probe might want to exclude just it.

3 years agolocale.c: Reduce too-large indent
Karl Williamson [Sun, 11 Mar 2018 20:48:38 +0000 (14:48 -0600)]
locale.c: Reduce too-large indent

3 years agoPOSIX.pod: Fix nit
Karl Williamson [Sun, 11 Mar 2018 20:47:58 +0000 (14:47 -0600)]
POSIX.pod: Fix nit

3 years agoperl.h: White-space, comment changes only
Karl Williamson [Sun, 11 Mar 2018 20:39:04 +0000 (14:39 -0600)]
perl.h: White-space, comment changes only

3 years agoWork around Microsoft threaded locale bug for localeconv()
Karl Williamson [Fri, 9 Mar 2018 19:53:13 +0000 (12:53 -0700)]
Work around Microsoft threaded locale bug for localeconv()

Prior to Visual Studio 2015, the localeconv() function only looks at the
global locale, not the per-thread one it should.  This works around this
by creating critical sections, switching to the global locale to call
localeconv(), then switching back.  For the most common usage, it avoids
the switch by parsing a string it generates that should contain the
desired substring.  This leaves the switch required for retrieving the
floating point grouping separator and the currency string, plus
POSIX::localeconv().  The first two could be avoided by extra code as
detailed in the pod for switch_to_global_locale(); patches welcome!

3 years agoperl.h: Move macros to earlier in the file
Karl Williamson [Fri, 9 Mar 2018 19:14:43 +0000 (12:14 -0700)]
perl.h: Move macros to earlier in the file

There should be no other differences

3 years agoperl.h: Refactor some #defines
Karl Williamson [Fri, 9 Mar 2018 04:57:52 +0000 (21:57 -0700)]
perl.h: Refactor some #defines

These put the defines dealing with locale critical sections in one
place, more logically set out.

3 years agoResync duplicated code in perl.h
Karl Williamson [Fri, 9 Mar 2018 18:25:58 +0000 (11:25 -0700)]
Resync duplicated code in perl.h

These had gotten out of sync

3 years agoDon't create locale object unless threaded
Karl Williamson [Fri, 9 Mar 2018 19:06:30 +0000 (12:06 -0700)]
Don't create locale object unless threaded

PL_C_locale_obj is now only created on threaded builds on systems with
POSIX 2008.  On unthreaded builds, we really should continue to use the
old tried and true library calls.

3 years agoperl.h: Move some locale definitions around
Karl Williamson [Thu, 8 Mar 2018 21:43:23 +0000 (14:43 -0700)]
perl.h: Move some locale definitions around

For clarity, this places these locale definitions that depend solely on
having locales or not earlier, and by themselves, so don't get mixed up
with the definitions that have more complicated provenances.

In moving them, I also changed white space to accepted indentations,
and vertical alignment.

3 years agoperl.h: Rmv dummy definitions
Karl Williamson [Thu, 8 Mar 2018 21:32:28 +0000 (14:32 -0700)]
perl.h: Rmv dummy definitions

These macros are core-only, so should generate a compiler error if used
outside of core, instead of compiling as no-ops.

3 years agoDon't create unneeded mutexes
Karl Williamson [Fri, 9 Mar 2018 18:27:28 +0000 (11:27 -0700)]
Don't create unneeded mutexes

These mutexes are needed only for unsafe threaded-locale operations.

3 years agoLanginfo: Implement CODESET on Windows
Karl Williamson [Thu, 8 Mar 2018 20:00:40 +0000 (13:00 -0700)]
Langinfo: Implement CODESET on Windows

This applies to I18N::Langinfo, and the API function Perl_langinfo.
Windows doesn't have nl_langinfo, so an emulation is used.  It turns out
that it is easy to emulate the behavior for the CODESET item on Windows,
as that vendor has kept things consistent.

3 years agoPATCH: [perl #127288] I18N::Langinfo sets UTF-8 bit
Karl Williamson [Thu, 8 Mar 2018 05:48:55 +0000 (22:48 -0700)]
PATCH: [perl #127288] I18N::Langinfo sets UTF-8 bit

This commit will turn UTF-8 on in the returned SV if its string is legal
UTF-8 containing something besides ASCII, and the locale is a UTF-8 one.
It is based on the patch included in the ticket, but is generalized to
handle edge cases.

3 years agoI18N::Langinfo: fix pod nits
Karl Williamson [Wed, 7 Mar 2018 19:04:00 +0000 (12:04 -0700)]
I18N::Langinfo: fix pod nits

Removing trailing space; fix typo, clarify

3 years agoperlapi: Clarifications to Perl_langinfo
Karl Williamson [Wed, 7 Mar 2018 19:11:26 +0000 (12:11 -0700)]
perlapi: Clarifications to Perl_langinfo

3 years agoActually make I18N::Langinfo avail on all platforms
Karl Williamson [Thu, 8 Mar 2018 17:59:53 +0000 (10:59 -0700)]
Actually make I18N::Langinfo avail on all platforms

I thought I had done this earlier, but testing on Windows demonstrated
that I hadn't.

While at it, move the details in the docs for Perl_langinfo to the
module's pod.

This doesn't follow the paradigm for putting the Configure stuff in all
the related configure files, but I saw no point to doing so.  If you are
reading this because I was wrong, feel free to ticket it or fix it.

3 years agoChange enum names for new locale function parameters
Karl Williamson [Thu, 8 Mar 2018 17:51:09 +0000 (10:51 -0700)]
Change enum names for new locale function parameters

Earlier in the 5.27 series, I introduced Perl_langinfo which calls
the system nl_langinfo() on platforms that have it, and emulates it
otherwise.  For each enum parameter 'foo', I made an equivalent
parameter PERL_foo.  I did this so that no conflicts would arise if
any 'foo' were negative.  This is less than ideal to have to rename the

In looking further, I realized that perl has always excluded the
possibility of negative values for 'foo', so my precaution is
unnecessary.  And before this new code is released is the time to fix up
the interface.

3 years agoAPItest/t/locale.t: Store hash return for readability
Karl Williamson [Wed, 7 Mar 2018 19:08:01 +0000 (12:08 -0700)]
APItest/t/locale.t: Store hash return for readability

3 years agoAPItest/t/locale.t: Sort some tests
Karl Williamson [Wed, 7 Mar 2018 19:05:46 +0000 (12:05 -0700)]
APItest/t/locale.t: Sort some tests

These now appear in the file in their logical order

3 years agoCarp: Use ${^LAST_FH} if available
Father Chrysostomos [Sun, 11 Mar 2018 22:28:27 +0000 (15:28 -0700)]
Carp: Use ${^LAST_FH} if available

Using ${^LAST_FH}, available in 5.18, in faster than using eval/die
to get the last file handle.

Also, the eval/die method is not going to produce anything if $. is 0
so skip that entire block if $. is false (by removing the defined check).

(Not significant enough for perldelta.  carp("zonk") gets faster by
only 5% or so.)

3 years agoLet cmp_version be run from the top level
Father Chrysostomos [Sun, 11 Mar 2018 21:25:14 +0000 (14:25 -0700)]
Let cmp_version be run from the top level

I’m used to typing ‘./perl -Ilib t/porting/cmp_version.t’; it’s annoy-
ing to have to add ‘-I.’.

(Obviously no perldelta entry necessary.)

3 years sprintf is faster than concat
Father Chrysostomos [Sun, 11 Mar 2018 21:23:42 +0000 (14:23 -0700)] sprintf is faster than concat

I benchmarked this line alone in a one-liner and found the sprintf
variant to be roughly 10% faster than the concat version.  It’s also
more readable (and maintainable).

(Not significant enough to warrant a perldelta entry.)

3 years ago(perl #127743) re-work for debugging builds with MSVC
Tony Cook [Sun, 11 Mar 2018 23:53:05 +0000 (10:53 +1100)]
(perl #127743) re-work for debugging builds with MSVC

My original change here broke debugging builds, since tmp was no longer
available for the TRACEME.

3 years agot/lib/croak/regcomp: Another attempt to fix test failure
Karl Williamson [Sun, 11 Mar 2018 19:43:31 +0000 (13:43 -0600)]
t/lib/croak/regcomp: Another attempt to fix test failure

Commit e10187a7905cc53ffe233c0f091b3a7b3a6da4a9 failed to entirely fix
the failure, and this expands on that.

I had forgotten the pitfalls of using literal non-ASCIIs in tests

3 years agoperlrequick: Nits, clarifications
Karl Williamson [Wed, 27 Dec 2017 00:20:26 +0000 (17:20 -0700)]
perlrequick: Nits, clarifications

3 years agoregcomp.c: Quiet false warning
Karl Williamson [Sat, 10 Mar 2018 04:31:16 +0000 (21:31 -0700)]
regcomp.c: Quiet false warning

One compiler is complaining that this variable may be used
uninitialized.  It's not true, but set it to NULL anyway.

3 years agot/lib/croak/regcomp: Hopefully fix test failure
Karl Williamson [Fri, 9 Mar 2018 23:05:39 +0000 (16:05 -0700)]
t/lib/croak/regcomp: Hopefully fix test failure

This is failing on H. Merijn Brand's machines.  I can't reproduce it
there, but it makes sense that it has something to do with printing a
non-ASCII character, given that it's only failing under a particular
locale.  So try this simple solution.

3 years agoAvoid goto into glob test failure on VMS.
Craig A. Berry [Thu, 8 Mar 2018 17:59:49 +0000 (11:59 -0600)]
Avoid goto into glob test failure on VMS.

glob() does not return a list on VMS, so joining its result fails
expectations for this test.

3 years agolocale.c: Add missing STATIC
Karl Williamson [Thu, 8 Mar 2018 20:10:30 +0000 (13:10 -0700)]
locale.c: Add missing STATIC

Spotted by H. Merijn Brand

3 years agoremove empty file
Yves Orton [Thu, 8 Mar 2018 15:26:48 +0000 (16:26 +0100)]
remove empty file

3 years agoadd an empty file (to be removed next commit)
Yves Orton [Thu, 8 Mar 2018 15:14:38 +0000 (16:14 +0100)]
add an empty file (to be removed next commit)

3 years agoDon't run stack_after_err.t on VMS.
Craig A. Berry [Thu, 8 Mar 2018 13:50:33 +0000 (07:50 -0600)]
Don't run stack_after_err.t on VMS.

It uses IPC::Open3, which uses fork(), which doesn't exist.

3 years agofix line numbers in multi-line s///
David Mitchell [Wed, 7 Mar 2018 09:27:26 +0000 (09:27 +0000)]
fix line numbers in multi-line s///

my commit v5.25.6-230-g6432a58, "Eliminate SVrepl_EVAL and SvEVALED()",
introduced a regression: __LINE__ no longer took account of multiple
lines in the s///.

Now fixed.

Spotted by Abigail.

3 years ago(perl #132870) workaround VC2017 compiler bug
Tony Cook [Tue, 20 Feb 2018 05:18:05 +0000 (16:18 +1100)]
(perl #132870) workaround VC2017 compiler bug

For non-debug builds MSVC could read small integers like 1 as -255.

It's possible it was confused by the AIX compiler bug workaround.

This change needs no further tests, the integer.t fails without
this workaround.

3 years agormv/de-dup static const char array "strings"
Daniel Dragan [Thu, 1 Mar 2018 21:41:59 +0000 (16:41 -0500)]
rmv/de-dup static const char array "strings"

MSVC due to a bug doesn't merge identicals between .o'es or discard these
vars and their contents.

MEM_WRAP_CHECK_2 has never been used outside of core according to cpan grep
MEM_WRAP_CHECK_2 was removed on the "have PERL_MALLOC_WRAP" branch in
commit fabdb6c0879 "pre-likely cleanup" without explination, probably bc
it was unused. But MEM_WRAP_CHECK_2 was still left on the "no
PERL_MALLOC_WRAP" branch, so remove it from the "no" side for tidyness
since it was a mistake to leave it there if it was removed from the "yes"
side of the #ifdef.

Add MEM_WRAP_CHECK_s API, letter "s" means argument is string or static.
This lets us get rid of the "%s" argument passed to Perl_croak_nocontext at
a couple call sites since we fully control the next and only argument and
its guaranteed to be a string literal. This allows merging of 2
"Out of memory during array extend" c strings by linker now.

Also change the 2 op.h messages into macros which become string literals
at their call sites instead of "read char * from a global char **" which
was going on before.

VC 2003 32b perl527.dll section size before
  .text name
   DE503 virtual size
  .rdata name
   4B621 virtual size

  .text name
   DE503 virtual size
  .rdata name
   4B5D1 virtual size

3 years agoFile::Glob bsd_glob.c dont use "loop" as a goto label
Daniel Dragan [Tue, 6 Mar 2018 22:27:04 +0000 (17:27 -0500)]
File::Glob bsd_glob.c dont use "loop" as a goto label

Using loop as a label conflicts with Perl's "struct loop" and "LOOP" types
and Visual C 2003 in C++ mode (but not the default C build) doesn't like
that. The loop label is from 5.27.1 commit 0db967b2e6
"[perl #131211] fixup File::Glob degenerate matching"

bsd_glob.c(995) : error C2226: syntax error : unexpected type 'loop'