develooper Front page | perl.perl5.changes | Postings from May 2021

[Perl/perl5] 0ced87: perlapi: Rmv repeated word

From:
Karl Williamson via perl5-changes
Date:
May 2, 2021 22:45
Subject:
[Perl/perl5] 0ced87: perlapi: Rmv repeated word
Message ID:
Perl/perl5/push/refs/heads/smoke-me/khw-env/000000-d20160@github.com
  Branch: refs/heads/smoke-me/khw-env
  Home:   https://github.com/Perl/perl5
  Commit: 0ced87c5b4115310a0d39fd82bdea332ec1afb8b
      https://github.com/Perl/perl5/commit/0ced87c5b4115310a0d39fd82bdea332ec1afb8b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M sv.c

  Log Message:
  -----------
  perlapi: Rmv repeated word


  Commit: 19c8c90f9e302365ad783ffdde6a1fa6e9fb63c0
      https://github.com/Perl/perl5/commit/19c8c90f9e302365ad783ffdde6a1fa6e9fb63c0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M dosish.h
    M unixish.h

  Log Message:
  -----------
  XXX craig Unixish.h, doshish.h: Reorder terminations; simplify

The IO and memory terminations need to be after other things.  Add a
comment so that future maintainers won't make the mistakes I did.

Also refactor to that amiga os doesn't have a separate list to get out
of sync

I suspect that the amiga termination should be moved to earlier in
the sequence, but absent any evidence; I'm leaving it unchanged.


  Commit: 26e073b301030d688a6c48572e47a265bf8ad142
      https://github.com/Perl/perl5/commit/26e073b301030d688a6c48572e47a265bf8ad142
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Win32: Don't check folds validity

This code will check, when warnings are on, that the libc functions
return valid values.  But Windows platforms will always fail because
they have multiple divergences from the Posix standard.  The macros that
implement the case changing/folding in handy.h take extra steps to bring
Windows code more into alignment with Posix.  Those are too complicated
to easily duplicate the logic here.  The result of these checks is
looked at by our test suite, which has long, without anyone noticing,
skipped portions on Windows, even though handy.h should correct for
this.  So simply, don't do the checking under Windows, and find out what
handy.h has failed to fully correct for.


  Commit: fc0aa170b98abbbccd1ccbe66a5014aca284e566
      https://github.com/Perl/perl5/commit/fc0aa170b98abbbccd1ccbe66a5014aca284e566
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  DEBUG_L now also looks at environment variable

Because locale initialization happens before command line processing,
one can't pass a -DL argument to enable debugging of locale
initialization.  Instead, an environment variable is read then, and is
used to enable debugging or not.  In the past, code specifically had to
test for this being set.  This commit changes that so that debugging can
automatically be enabled without having to write special code.  Future
commits will strip out those special checks.


  Commit: b9774e90b6e2283c60109fbda07a76f883156b29
      https://github.com/Perl/perl5/commit/b9774e90b6e2283c60109fbda07a76f883156b29
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Replace most #ifdef DEBUGGING lines

THe previous commit enhanced the DEBUG macros so that they contain the
logic that previously had to be done with conditional compilation
statements.  Removing them makes the code easier to read.


  Commit: 8419ca193d42fb3aa104faffcf0fcbe7d6405748
      https://github.com/Perl/perl5/commit/8419ca193d42fb3aa104faffcf0fcbe7d6405748
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h
    M numeric.c
    M regcomp.c
    M regexec.c
    M utfebcdic.h

  Log Message:
  -----------
  Change handy.h macro names to be C standard conformant

C reserves symbols beginning with underscores for its own use.  This
commit moves the underscore so it is trailing, which is legal.  The
symbols changed here are most of the ones in handy.h that have few uses
outside it.


  Commit: eb3693e2c1eee2d850bc79c296fdcebfcf32cb84
      https://github.com/Perl/perl5/commit/eb3693e2c1eee2d850bc79c296fdcebfcf32cb84
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Remove only 2 calls to an internal macro

Replace isIDFIRST_LC and isWORD_CHAR_LC isIDFIRST_LC  with slightly
faster implementations.


  Commit: 53d3fb0eee3b8eb52ef47512679aa0719d501bb2
      https://github.com/Perl/perl5/commit/53d3fb0eee3b8eb52ef47512679aa0719d501bb2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Refactor some #ifdef's for commonality

This changes these compilation conditionals so that things in common
between Windows and other platforms are only defined once.

It changes the isIDFIRST_LC and isWORDCHAR_LC definitions for
non-Windows to match that platform superficially, though expanding to
what it previously did to.


  Commit: b175e7d058347cef700481fb2ccf353203b86959
      https://github.com/Perl/perl5/commit/b175e7d058347cef700481fb2ccf353203b86959
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Add some branch predictions


  Commit: dad2ee3c7ffe319f2851545dcbe03bc253ac0c88
      https://github.com/Perl/perl5/commit/dad2ee3c7ffe319f2851545dcbe03bc253ac0c88
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: White-space, comment only


  Commit: bf79b4e05e944124a3b5300c6af688e94cb578bf
      https://github.com/Perl/perl5/commit/bf79b4e05e944124a3b5300c6af688e94cb578bf
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Don't use char class if no LC_CTYPE

It is possible to compile perl to not pay attention to LC_CTYPE.  This
was testing for no locales at all; whereas the stricter requirement
should be used.


  Commit: 73174975cfffcd3b51750d2cbb082e6aa77c07c2
      https://github.com/Perl/perl5/commit/73174975cfffcd3b51750d2cbb082e6aa77c07c2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M charclass_invlists.h
    M handy.h
    M l1_char_class_tab.h
    M lib/unicore/uni_keywords.pl
    M perl.c
    M perl.h
    M regcomp.c
    M regcomp.h
    M regen/mk_PL_charclass.pl
    M regexec.c
    M sv.c
    M uni_keywords.h
    M utfebcdic.h

  Log Message:
  -----------
  Change handy.h macro names to be C standard conformant

C reserves symbols beginning with underscores for its own use.  This
commit moves the underscore so it is trailing, which is legal.  The
symbols changed here are many of the ones in handy.h that have
significant uses outside it.


  Commit: 49c657bbbcea46af9cdf1c683fd8a871a9f95030
      https://github.com/Perl/perl5/commit/49c657bbbcea46af9cdf1c683fd8a871a9f95030
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Rmv internal macro

LC_CAST_ was my attempt at generality, but I didn't realize that the
POSIX standard specifies the type that this was meant to generalize, so
there isn't any need for it.


  Commit: e6b2065cb3ca98aec2f8cf081f8e2c36ab3e433f
      https://github.com/Perl/perl5/commit/e6b2065cb3ca98aec2f8cf081f8e2c36ab3e433f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Refactor some internal macros

This changes the parameters etc, in preparation for further changes


  Commit: fa84fca4226c18123b4712673516149ef81937b0
      https://github.com/Perl/perl5/commit/fa84fca4226c18123b4712673516149ef81937b0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Rmv unnecessary parameter to internal macros

The cast is required to be U8 by the POSIX standard.  There is no need
to have this added generality.


  Commit: 730a63d613864c08adbe7f332a7c65a462388656
      https://github.com/Perl/perl5/commit/730a63d613864c08adbe7f332a7c65a462388656
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: #define one macro in terms of another

These two macros are equivalent as folding and lowercasing are the same
for this input domain.  Better to say so rather than to replicate the
definitions.


  Commit: 87902c2f7a6c6b4d51eb1b92e812f30f642926c5
      https://github.com/Perl/perl5/commit/87902c2f7a6c6b4d51eb1b92e812f30f642926c5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  No locales => don't use isspace(), toLower() etc.

This commit changes what happens on platforms without locale handling to
use our precomputed definitions of what the various character class
definitions and case changing operations are.  Previously, it just
called the libc locale-dependent functions and made sure the result was
ASCII.  I think this is a holdover from before we had the precomputed
definitions


  Commit: c3bda700b61dc7571429a98506364796e0936226
      https://github.com/Perl/perl5/commit/c3bda700b61dc7571429a98506364796e0936226
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Collapse two sets of macros

By redefining a wrapper macro used in one set based on compile-time
info; the other set can be defined in terms of it, and the separate
entries removed.


  Commit: cfa86fd800cc8f35c3d83a0d201eb9048fb15573
      https://github.com/Perl/perl5/commit/cfa86fd800cc8f35c3d83a0d201eb9048fb15573
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Move some macro defns around

This is to make the difference listing in future commits smaller.

This change includes some comment changes, and some extra parens around
some subexpressions


  Commit: 649dd4d392ac795754a62661636387cbce782f1f
      https://github.com/Perl/perl5/commit/649dd4d392ac795754a62661636387cbce782f1f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Collapse some macros

These 3 sets of macros can be collapsed trivially into 3 macros.


  Commit: d091ac8d7cae228c8afecab4ba4aec9a770ea8a8
      https://github.com/Perl/perl5/commit/d091ac8d7cae228c8afecab4ba4aec9a770ea8a8
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Add wrapper layer macros for isalnum() ...

This adds a new set of macros, forming a lower layer to what is currently
there to wrap the character classification libc functions, isdigit()
etc, and case changing ones, tolower(), toupper().

On most platforms these expand simply to the libc function call.  But on
windows, they expand to something more complex, to bring the Windows
calls into POSIX compliance.  Previously that was achieved at the higher
level, with the result that lower level calls were broken.  This
resulted in parts of the test suite being skipped on Windows.

The current level is rewritten to use the new lower layer, with the
result that it is simpler, as the complexity is now done further down.

I thought about calling these macros is_porcelain_isalnum or something
similar to emphaisze that they are close to the bare libc version, but
thought isU8_alnum() is shorter and conveys another truth, that being
the input is assumed to be a byte, without checking.


  Commit: a7878479ae3fc04ed94ff2b9b8ef25c7872a0a35
      https://github.com/Perl/perl5/commit/a7878479ae3fc04ed94ff2b9b8ef25c7872a0a35
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M vms/vms.c

  Log Message:
  -----------
  locale.c: Use new macros from the prev commit

This should result in Windows boxes now passing the locale sanity
checks.  Previously that failure would cause the test suite tests to be
skipped, and warnings generated to Windows users that actually were
invalid, as the flaws were actually compensated for in other code.


  Commit: 6f8997535527a44f8326e741b9e0d5e6e0b37bb9
      https://github.com/Perl/perl5/commit/6f8997535527a44f8326e741b9e0d5e6e0b37bb9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  XXX SEE IF WORKS handy.h: Change Windows macros


  Commit: b5aa6cb9b51ee680f5c63974b5ac14917cc177bd
      https://github.com/Perl/perl5/commit/b5aa6cb9b51ee680f5c63974b5ac14917cc177bd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Add isCASED_LC

As a convenience to other code.


  Commit: db86282cd1cc3a8ad6027542fd62e9af5e8dcd0e
      https://github.com/Perl/perl5/commit/db86282cd1cc3a8ad6027542fd62e9af5e8dcd0e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M regexec.c

  Log Message:
  -----------
  regexec.c: Improve code

These case statements in a switch all had the same prelude for checking
if the locale is UTF-8 and handling that case separately.  A few commits
ago created macros closer to the base level.  This commit factors out
the common UTF-8 handling, and then puts the lower lever things in the
switch().  Perhaps the C optimizer will be smart enough to do this too,
but we might as well do it ourselves, now that it is convenient.


  Commit: 497647ee356e7a44811517640ec88458998dfaa4
      https://github.com/Perl/perl5/commit/497647ee356e7a44811517640ec88458998dfaa4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M regexec.c

  Log Message:
  -----------
  regexec.c: Refactor switch default()

It seems clearer to me to have the panic at the end of the routine
instead of as the default: of a switch().


  Commit: a427b28cfd116cc8c9f2a113261e015f2e7fd0c6
      https://github.com/Perl/perl5/commit/a427b28cfd116cc8c9f2a113261e015f2e7fd0c6
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Declare three static arrays to be so.


  Commit: 431cd59f8250db1968817de6ae194f005f4246c4
      https://github.com/Perl/perl5/commit/431cd59f8250db1968817de6ae194f005f4246c4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  Move some locale.c #defines to perl.h

This is in preparation for them to be used in macros from outside
locale.c


  Commit: 684a42c021105075d357154d9297cfba264e714e
      https://github.com/Perl/perl5/commit/684a42c021105075d357154d9297cfba264e714e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  Mark newly moved symbols as private

The previous commit made certain symbols that previously were local to
locale.c now available everywhere.  Add a trailing underscore to their
names to mark them as private.


  Commit: 9f00008cf8eb966cd95eb4e2e6863acf36f94480
      https://github.com/Perl/perl5/commit/9f00008cf8eb966cd95eb4e2e6863acf36f94480
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M makedef.pl
    M perl.h

  Log Message:
  -----------
  Add USE_LOCALE_THREADS #define

This is in preparation for supporting configurations where there threads
are available, but the locale handling code should ignore that fact.

This stems from the unusual locale handling of z/OS, where any attempt
is ignored to change locales after the first thread is created.


  Commit: b928fc61d133cabb3dcbb70b3f60dfc07448cd30
      https://github.com/Perl/perl5/commit/b928fc61d133cabb3dcbb70b3f60dfc07448cd30
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs
    M ext/POSIX/lib/POSIX.pm
    M intrpvar.h
    M locale.c
    M makedef.pl
    M perl.c
    M perl.h
    M sv.c

  Log Message:
  -----------
  Regularize HAS_POSIX_2008_LOCALE, USE_POSIX_2008_LOCALE

A platform shouldn't be required to use the Posix 2008 locale handling
functions if they are present.  Perhaps they are buggy.  So, a separate
define for using them was introduced, USE_POSIX_2008_LOCALE.  But until
this commit there were cases that were looking at the underlying
availability of the functions, not if the Configuration called for their
use.


  Commit: 9642e24222b61e310db2f322f55bf62376d9db19
      https://github.com/Perl/perl5/commit/9642e24222b61e310db2f322f55bf62376d9db19
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Change macro name

Adopt the git convention of 'porcelain' meaning without special
handling.  This makes it clear that porcelain_setlocale() is the base
level.


  Commit: 2d81c2aa055d6247da35d3bc58c33f2297380267
      https://github.com/Perl/perl5/commit/2d81c2aa055d6247da35d3bc58c33f2297380267
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Cast return of setlocale() to const

If they had it to do over again, the libc makers would have made the
return of this function 'const char *'.  We can cast it that way
internally to catch erroneous uses at compile time.


  Commit: 9fd1d44d1aeef8cfbd815ae770be5a656e5d944e
      https://github.com/Perl/perl5/commit/9fd1d44d1aeef8cfbd815ae770be5a656e5d944e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Create S_get_category_index()

libc locale categories, like LC_NUMERIC, are opaque integers.  This
makes it inconvenient to have table-driven code.  Instead, we have
tables that are indexed by small positive integers, which are a
compile-time mapping from the libc values.

This commit creates a run-time function to also do that mapping.  It
will first be used in the next commit.

The function does a loop through the available categories, looking for a
match.  It could be replaced by some sort of quick hash lookup, but the
largest arrays in the field have a max of 12 elements, with almost all
searches finding their quarry in the first 6.  It doesn't seem
worthwhile to me to replace a linear search of 6 elements by something
more complicated.  The design intent is this search will be used only at
the edges of the locale-handling code; once found the index is used in
future bits of the current operation.


  Commit: 85cc3a09ff54b1c941881704111b1a09bb1aba3a
      https://github.com/Perl/perl5/commit/85cc3a09ff54b1c941881704111b1a09bb1aba3a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Use get_category_index()

This creates the first uses of the function added in the previous commit.

It changes the name of a function that now takes an index to have the
suffix _i to indicate its calling parameter is a category index rather
than a category.  This will become a common paradigm in this file in
later commits.

Two macros are also created to call that function; they have suffixes _c
(to indicate the parameter is a category known at compile time, and _r
(to indicate it needs to be computed at runtime).  This is in keeping
with the already existing paradigm in this file.


  Commit: 8de81d512ad804e6e8406dac587a140587a42b77
      https://github.com/Perl/perl5/commit/8de81d512ad804e6e8406dac587a140587a42b77
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Change S_emulate_setlocale name and sig

It turns out this function is called only from places where we have the
category index already computed; so change the signature to use the
index and remove the re-calculation.

It renames it to emulate_setlocale_i() to indicate that the category
parameter is an index.

This also means, that it's very unlikely that it will be called with an
out-of-bounds value.  Remove the debugging statement for that case (but
retain the error return value).


  Commit: 8b169a86cb0fef5d88be471ba51c2a9c9bf474c9
      https://github.com/Perl/perl5/commit/8b169a86cb0fef5d88be471ba51c2a9c9bf474c9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M pod/perldelta.pod
    M pod/perldiag.pod

  Log Message:
  -----------
  locale.c: Simplify S_category_name

We can use the new function S_get_category_index() to simplify this.
Also, when I wrote it I didn't know about Perl_form(), and had
reimplemented a portion of it here; which is yanked as well.


  Commit: f6397593b4d3c465f9809db3724f042fa9f95bbd
      https://github.com/Perl/perl5/commit/f6397593b4d3c465f9809db3724f042fa9f95bbd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move unreachable code

It turns out this code, setting errno, is unreachable.  Move it to the
place where it would do some good, removing an extraneous, unreachable
return;


  Commit: 5674507e9c4f9f54c4112999deeadd01d1f805e7
      https://github.com/Perl/perl5/commit/5674507e9c4f9f54c4112999deeadd01d1f805e7
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Comment clarifications, white space

Some of these are to make future difference listings shorter

Some of the changes look like incorrect indentation here, but anticipate
future commits.


  Commit: 8316b0722603b1ef98ef1d6761283d2d29cad310
      https://github.com/Perl/perl5/commit/8316b0722603b1ef98ef1d6761283d2d29cad310
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move fcn within file

This is for later commits which will change it to rely on new defines
that won't occur until later in the file than its current position


  Commit: 59fc47335d1a262c85951c2866d04bed22511669
      https://github.com/Perl/perl5/commit/59fc47335d1a262c85951c2866d04bed22511669
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Separate query part of emulate_setlocale()

This splits a large function so that it is easier to comprehend, and is
in preparation for them to be separately callable.


  Commit: a3855128e2401b7c05fdb873af29e4a4f863a3f6
      https://github.com/Perl/perl5/commit/a3855128e2401b7c05fdb873af29e4a4f863a3f6
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Outdent previous commit

The previous commit kept the indentation level the same as it moved code
to a new function, even though an outer block was stripped off in the
process.  This was to minimize diff output.  This commit is white space
only.


  Commit: 3d16dc5be0e4d3dc9781fbd2c51c32589e8b163b
      https://github.com/Perl/perl5/commit/3d16dc5be0e4d3dc9781fbd2c51c32589e8b163b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Remove spaces around a '##' preprocessor directive

It turns out that at least my gcc preprocessor gets confused in some
contexts if spaces surround the ##.  CAT2() doesn't work for these.

It is working in this context, but future commits will introduce ones
where it won't, so this commit will help make things consistent within
this file

What seems to fail is #define f(x) (..., g(x ## y), ...) where 'x' is a
an already #defined symbol.  I want 'xy', but instead, for example if
'x' has been defined to be 1, I get '1y'


  Commit: 4aae9e5e21136e908968a96958c75196a109e2ef
      https://github.com/Perl/perl5/commit/4aae9e5e21136e908968a96958c75196a109e2ef
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: #define some macros in terms of a base one

This is so changes to the lowest level automatically propagate to the
others


  Commit: 319b32a5037c501e28d0983f89bd386d80b6233e
      https://github.com/Perl/perl5/commit/319b32a5037c501e28d0983f89bd386d80b6233e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Create new macros for just querying locale

There are two sets of names, which immediately indicate if the result
can be relied on to be thread level or must be assumed to be global to
the whole process.  At the moment they all expand to the same thing,
since on a threadless perl, it's a don't care; and on a threaded perl,
they are all already thread-level, in the Configurations we support.

Future commits will cause the macros to diverge, and comments will be
added then.

For POSIX 2008, this commit causes queries to go directly to the query
function, avoiding S_emulate_setlocale_i() completely.


  Commit: bc99d4d3c9c57b3027b6452af8a23d4e688852dd
      https://github.com/Perl/perl5/commit/bc99d4d3c9c57b3027b6452af8a23d4e688852dd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Generalize certain Win32 calls

The old versions were windows-specific; the changes use a more generic
macro that currently expands to the same thing, but future commits will
change that.


  Commit: 771685785eecd6b42138df8a216dc05386fb9d4d
      https://github.com/Perl/perl5/commit/771685785eecd6b42138df8a216dc05386fb9d4d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add a convenience #define

This makes it clear if we are using an array that currently only happens
on non-querylocale systems, but that will change in future commits.


  Commit: 67d3da9c4f8eba7cf31a12955cc66f4c0836d9d3
      https://github.com/Perl/perl5/commit/67d3da9c4f8eba7cf31a12955cc66f4c0836d9d3
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add setlocale() return context macros

Future commits will benefit from knowing if the return value of
setlocale is to be ignored, just checked for if it worked, or the full
value is needed and can be relied on (or not) to be per-thread.


  Commit: f70999ebbf44eec2823ce6f81ec61a7c0129514c
      https://github.com/Perl/perl5/commit/f70999ebbf44eec2823ce6f81ec61a7c0129514c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Add panic check/message

This panic is done when a setlocale unexpectedly fails.


  Commit: 25885438b535aced5e660902ae6d5e5b68edae5b
      https://github.com/Perl/perl5/commit/25885438b535aced5e660902ae6d5e5b68edae5b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Use a function table to simplify code

Some locale categories require extra steps when they are changed.  This
moves that logic to a table, which gets rid of some code


  Commit: df11044eb330ece42ed18a57f8ba3f6225f87b9f
      https://github.com/Perl/perl5/commit/df11044eb330ece42ed18a57f8ba3f6225f87b9f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Perl_setlocale(): Same code for all param2 == NULL

Calling Perl_setlocale() with a NULL 2nd parameter returns the current
locale, rather than changing it.  Previously LC_NUMERIC and LC_ALL were
treated specially; other categories were lumped in with the code that
changes the locale.

Changing some categories involves a non-trivial amount of work.  This
commit avoids that by moving all queries to the same 'if' branch.
LC_NUMERIC and LC_ALL still have to be treated specially, but now it's
all within the same outer 'if', and the unnecessarily executing code
for when the locale changes is avoided.


  Commit: 2bfe0614938c82a49af51579b98ee5cd37f17309
      https://github.com/Perl/perl5/commit/2bfe0614938c82a49af51579b98ee5cd37f17309
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use low level macros at low level

Implementing Perl_setlocale, we can safely use the internal macros that
the public ones expand to call, without the overhead those public macros
impose (which they do to be more immune from improper calls from outside
code).


  Commit: d6dc73f4df2b1f0b99c2d10670a82d880484d4a0
      https://github.com/Perl/perl5/commit/d6dc73f4df2b1f0b99c2d10670a82d880484d4a0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Remove exploratory code

This code was to find out, in debugging builds, if an undocumented glibc
feature worked.  There were no reports that it didn't, and so, after,
several releases, it has served its purpose.  A future commit will allow
enabling this feature as a Configuration option.


  Commit: 37fc04106aaa928dd6e821b72bd307921ff0fbdc
      https://github.com/Perl/perl5/commit/37fc04106aaa928dd6e821b72bd307921ff0fbdc
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Expand scope of cpp conditional

This just doesn't bother with checking some locale-related stuff if not
paying attention to locales.


  Commit: c5e3bf6fb26a8e3832049fba39f34c0981b42d11
      https://github.com/Perl/perl5/commit/c5e3bf6fb26a8e3832049fba39f34c0981b42d11
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  locale.c: Create new convenience macro

glibc doesn't have the querylocale() function, available on some other
platforms, such as Darwin and *BSD.  However, it instead has the
equivalent functionality available through an undocumented feature.

This commit allows someone in the know to compile perl to use that
feature, and wraps its API with a macro so that the calling code doesn't
have to be aware of the different APIs of the two methods.

That macro's definition is now done in perl.h, as future commits will
use it in other files.

Since this is an undocumented feature, I am not currently documenting
this wrapper availability.  However, it has been used in the field
without complaint for a couple of releases, as follows:  A more
cumbersome substitute method continues to be used to get what it does.
But in the past both methods were tried and the program died if they
yielded different results.  Since no one has complained, I'm fairly
confident it works.  But sill I'm deferring its more general use.


  Commit: 804f4fc5f7c007fa62739ac6d3fead26df7d854d
      https://github.com/Perl/perl5/commit/804f4fc5f7c007fa62739ac6d3fead26df7d854d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M intrpvar.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: querylocale() doesn't work on LC_ALL

I had misread the man pages.  This bug has been in the field for several
releases now, but most likely hasn't shown up because it's almost always
the case that the locale categories will be set to the same locale.  And
so most implementations of querylocale() would return the correct
result.

This commit works by splitting the calculation of the value of LC_ALL
from S_emulate_setlocale_i() into a separate function, and extending it
to work on querylocale() systems.  This has the added benefit of
removing tangential code from the main line, making
S_emulate_setlocale_i easier to read.

calculate_LC_ALL() is the new function, and is now called from two
places.  As part of this commit, constness is added to PL_curlocales[]

Part of this change is to keep our records of LC_ALL on non-querylocale
systems always up-to-date, which is better practice

And part of this change is temporary, marked as such, to be removed a
few commits later.


  Commit: 7cefa3b45f3307681e4d8797f99ae240796a8724
      https://github.com/Perl/perl5/commit/7cefa3b45f3307681e4d8797f99ae240796a8724
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M intrpvar.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  Make three locale PL_ strings const char*

This adds some compile safety to these.


  Commit: 807435b0e2cb1f8badb016fadeb542d690b1e73e
      https://github.com/Perl/perl5/commit/807435b0e2cb1f8badb016fadeb542d690b1e73e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c Make a char * variable const

A future commit will want this


  Commit: 8e2c68ce233601c3c17f16926e7bd1156be8b2bd
      https://github.com/Perl/perl5/commit/8e2c68ce233601c3c17f16926e7bd1156be8b2bd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M embedvar.h
    M intrpvar.h
    M locale.c
    M perl.c
    M proto.h
    M sv.c

  Log Message:
  -----------
  locale.c: Generalize stdize_locale()

This function is rewritten to handle LC_ALL, and to make it easier to
add new checks.

There is also a change, which I think is an improvement, in that everything
starting with a \n is trimmed, instead of just a trailing \n being

A couple of calls to stdize_locale() are removed, as they are redundant,
because they are called only as a result of Perl_setlocale() being
called, and that ends up calling stdize_locale always, early on.

The call to savepv() is also moved in a couple cases to after the result
is known to not be NULL

I originally had such a new check in mind, but it turned out that doing
it here didn't solve the problem, so this commit has been amended
(before ever being pushed) to not include that.
chomped.


  Commit: 5723312fd4686c9b0b3632d52d7a772018138ef4
      https://github.com/Perl/perl5/commit/5723312fd4686c9b0b3632d52d7a772018138ef4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX drop stdize_locale: #if 0, enabled even for emulate


  Commit: 75459d3b47e6c5557166fdf4c9920c3bef014a49
      https://github.com/Perl/perl5/commit/75459d3b47e6c5557166fdf4c9920c3bef014a49
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Refactor some derived #defines

The _c suffix is supposed to mean the category is known at compile time.
In some configurations this does not matter, and so I had named things
carelessly, so this might be confusing.  This commit fixes that.


  Commit: 15cdf8426ef87e7fab427602d5e12bdca6f00008
      https://github.com/Perl/perl5/commit/15cdf8426ef87e7fab427602d5e12bdca6f00008
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use setlocale() for init, not P2008

We have found bugs in the POSIX 2008 libc implementations on various
platforms.  This code, which does the initialization of locale handling
has always been very conservative, expecting possible failures due to
bugs in it our the libc implementations, and backing out if necessary to
a crippled, but workable state, if something goes wrong.

I think we should use the oldest, most stable locale implementation in
these circumstances


  Commit: cf7cdee6f4b90e81de8e9e77e8adb3c5d0c7fdb6
      https://github.com/Perl/perl5/commit/cf7cdee6f4b90e81de8e9e77e8adb3c5d0c7fdb6
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Split aggregate LC_ALL from emulate_setlocale

This splits into a separate function the code necessary in some
Configurations to calculate LC_ALL from a potentially disparate
aggregate of categories having different locales.

This is being done just for readability, as this extensive code in the
middle of something else distracts from the main point.

A goto is hence replaced by a recursive call.


  Commit: 6d431010aa3c79352d9944eb747be7b501f58c78
      https://github.com/Perl/perl5/commit/6d431010aa3c79352d9944eb747be7b501f58c78
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Change internal variable name

The new name better reflects its purpose, so is less confusing


  Commit: 2b78f4fb5bfe47114bbb57257f57fb997fd8430d
      https://github.com/Perl/perl5/commit/2b78f4fb5bfe47114bbb57257f57fb997fd8430d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Clean up handling of a glibc bug

This commit moves all mention of this bug to just the code that requires
it, and inlines a macro, making it easier to comprehend


  Commit: c8fc7f6dbb1734d636015ea08ba133f466027517
      https://github.com/Perl/perl5/commit/c8fc7f6dbb1734d636015ea08ba133f466027517
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Split ancillary from S_emulate_setlocale

This takes the code to update LC_ALL, used only in some Configurations,
out of the main line, making the main line more readable.

It also allows the removal of temporary code added a few commits back


  Commit: 29d0c3c34d5849939d754deff85ff3368588a912
      https://github.com/Perl/perl5/commit/29d0c3c34d5849939d754deff85ff3368588a912
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: locale "" can be disparate

Setting a locale "" means to get the value from environment variables.
These can set locale categories to different locales, and this needs to
be handled.  The logic before this commit only handled the disparate
case when the locale wasn't ""; but this was compensated for elsewhere.
A future commit will remove that compensation.


  Commit: 763415052c4396adf7e561241bcafb9245462ce2
      https://github.com/Perl/perl5/commit/763415052c4396adf7e561241bcafb9245462ce2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  Split off setting locale to "" from S_emulate_setlocale

This is done for readability, to move the special casing of setting a
locale to the empty string (hence getting it from the environment) out
of the main line code.


  Commit: 07f3118d1511cda9ee3bafccddf503fd3cc79f35
      https://github.com/Perl/perl5/commit/07f3118d1511cda9ee3bafccddf503fd3cc79f35
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M sv.c

  Log Message:
  -----------
  sv.c: Duplicate more variables during cloning

These locale-related ones should be getting initialized in the new
thread, but be certain.


  Commit: 926251ab5a7ac9c66da962ab137b02f6974f667e
      https://github.com/Perl/perl5/commit/926251ab5a7ac9c66da962ab137b02f6974f667e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M embedvar.h
    M intrpvar.h
    M locale.c
    M makedef.pl
    M perl.c
    M proto.h
    M sv.c

  Log Message:
  -----------
  locale.c: Add fcn to hide edge case undefined behavior

The POSIX 2008 API has an edge case in that the result of most of the
functions when called with a global (as opposed to a per-thread) locale
is undefined.

The duplocale() function is the exception which will create a per-thread
locale containing the values copied from the global one.

This commit just calls duplocale, if needed, and the caller need not
concern itself with this possibility


  Commit: 117ed628d4386f618689fca4848816642c482ff5
      https://github.com/Perl/perl5/commit/117ed628d4386f618689fca4848816642c482ff5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Add DEBUGGING information

These functions are called as expansions of macros.  It may be useful to
know where in the file the macro occurred.


  Commit: 362c87757b98dba967f484792ba893606cb1d029
      https://github.com/Perl/perl5/commit/362c87757b98dba967f484792ba893606cb1d029
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Separate out two Win fcns from a larger one

This makes the larger one easier to understand, and prepares for
possible independent calls to the two, which are potentially useful on
their own.


  Commit: 63e4e7c5d07aea245721464a15c5d2b8da7d4a33
      https://github.com/Perl/perl5/commit/63e4e7c5d07aea245721464a15c5d2b8da7d4a33
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  f XXX make fcns accessible to cygwin


  Commit: 969e7bcfc36c8b36fbcbce7bcbf34594b68d8280
      https://github.com/Perl/perl5/commit/969e7bcfc36c8b36fbcbce7bcbf34594b68d8280
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs

  Log Message:
  -----------
  POSIX.xs: Use macro to reduce complexity

This #defines a macro and uses it to populate a structure, so that
strings don't have to be typed twice.


  Commit: 963d4debbd6e855136b228077ac33bad6979ae20
      https://github.com/Perl/perl5/commit/963d4debbd6e855136b228077ac33bad6979ae20
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs

  Log Message:
  -----------
  POSIX.xs: White-space only

Properly indent some nested preprocessor directives


  Commit: cb67c0e8148304cfa6b10a0287213e9d29aff579
      https://github.com/Perl/perl5/commit/cb67c0e8148304cfa6b10a0287213e9d29aff579
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M ext/POSIX/POSIX.xs
    M locale.c
    M proto.h

  Log Message:
  -----------
  Move code from POSIX.xs to locale.c

This avoids duplicated logic.


  Commit: b4bd7841d6cab340e42cb82ed9e265b873d48719
      https://github.com/Perl/perl5/commit/b4bd7841d6cab340e42cb82ed9e265b873d48719
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Reorder cases in a switch

This moves handling the CODESET to the end, as future commits will make
its handling more complicated.  The cases are now ordered so the
simplest (based on the direction of future commits) are first


  Commit: 5ee10d5d8a90f75382379d260aa646b564a95844
      https://github.com/Perl/perl5/commit/5ee10d5d8a90f75382379d260aa646b564a95844
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Make statics of repeated string constants

These strings are (or soon will be) used in multiple places; so have
just one definition for them.


  Commit: d18c3061873d515f8346db69fbb5a72f4f7cf258
      https://github.com/Perl/perl5/commit/d18c3061873d515f8346db69fbb5a72f4f7cf258
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add two #defines

This makes sure that we handle having any variant of nl_langinfo() or
localeconv().


  Commit: f5643f8734508f1265298bada8b5536c5bfaede1
      https://github.com/Perl/perl5/commit/f5643f8734508f1265298bada8b5536c5bfaede1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Return defaults for uncomputable langinfo items

Return the values from the C locale for nl_langinfo() items that aren't
computable on this platform.  If the platform has nl_langinfo(), then
all of them are computable, but if not, some can't be computed, and
others can be, but only if there are alternative methods available on
the platform.

As part of this commit, S_my_nl_langinfo() and S_save_to_buffer() are no
longer used when USE_LOCALE is not defined, so don't compile them.


  Commit: 974402e4f2a06e6f374a22b6936fe40df3c96278
      https://github.com/Perl/perl5/commit/974402e4f2a06e6f374a22b6936fe40df3c96278
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Rmv reimplementation of my_strftime()

Prior to this commit, there was a near duplicate copy of the code from
util.c that implements my_strftime().  This was done because the util.c
version zaps the wday field, which made it incompatible.

But it dawned on me that if the arbitrary date we use to do our
calculations were such that it was for a year in which January 1 falls
on a Sunday, then the util.c version automatically works.


  Commit: 8030f69729d3eaebd740e58416dec651655c792b
      https://github.com/Perl/perl5/commit/8030f69729d3eaebd740e58416dec651655c792b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Shorten static function name

The extra syllable(s) are unnecessary noise


  Commit: a2cea9503cb728fc94c322cb6611fe0ea13c1d56
      https://github.com/Perl/perl5/commit/a2cea9503cb728fc94c322cb6611fe0ea13c1d56
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Extend a static function

This will allow it to be used in situations where the buffer it controls
is single use, and we don't need to keep track of the size for future
calls.


  Commit: adbbe00381177a8ad5180f14257dd455bc5619f7
      https://github.com/Perl/perl5/commit/adbbe00381177a8ad5180f14257dd455bc5619f7
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use typedef to simplify

This allows some preprocessor conditionals to be removed


  Commit: e647b0a55be2292fdccbe25da294e437cdd479d2
      https://github.com/Perl/perl5/commit/e647b0a55be2292fdccbe25da294e437cdd479d2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Rmv redundant cBOOL()

strEQ and && already return booleans


  Commit: 725c75e1060f2001da37265be39286a3d23c84fd
      https://github.com/Perl/perl5/commit/725c75e1060f2001da37265be39286a3d23c84fd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Fix currency symbol derivation

On platforms without nl_langinfo(), we derive the currency symbol from
localeconv().  The symbol must be tweaked to conform to nl_langinfo()
standards.  Prior to this commit, it guessed at how to tweak a rare
circumstance.  I found evidence this guess was wrong, so looked around,
and copied the way cygwin does it.

This also no longer returns just an empty string in certain cases.
nl_langinfo() itself doesn't, so conform to that.


  Commit: 674a0b37fc48f59868d352376714cdbad82eee75
      https://github.com/Perl/perl5/commit/674a0b37fc48f59868d352376714cdbad82eee75
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Don't add CP to Windows code page names

The actual name appears to be just the number for purposes of
nl_langinfo()-ish things.


  Commit: 46a226a471a84f2beb60bb9547da50a995b7b4b5
      https://github.com/Perl/perl5/commit/46a226a471a84f2beb60bb9547da50a995b7b4b5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Don't ask a static fcn to be inlined

It's too complicated to really be inlined, and the compiler can figure
things out itself given it is a static function


  Commit: 22a3c991d36ec7faa13b97cee776adb3502a5d21
      https://github.com/Perl/perl5/commit/22a3c991d36ec7faa13b97cee776adb3502a5d21
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Rmv no longer used param from static fnc

Previous commits have gotten rid of this parameter to S_save_to_buffer


  Commit: 23776c07cd3d8147583dae4f998a166d96644c13
      https://github.com/Perl/perl5/commit/23776c07cd3d8147583dae4f998a166d96644c13
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Don't change locale if already there

Changing the locale is cheap for some categories, but expensive for
others.  Changing LC_COLLATE is most expensive, requiring recalculation
of the collation transformation mapping.

This commit checks that we aren't already in the desired locale before
changing locales. and does nothing if no change is needed.


  Commit: 9f4b32a76bc25fe51598bd4fad48036b5982b980
      https://github.com/Perl/perl5/commit/9f4b32a76bc25fe51598bd4fad48036b5982b980
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use a scratch buf; instead of reusing old

This is in preparation for the next commit


  Commit: 2ebfd3876833c468d594b7500c8312cce08f768e
      https://github.com/Perl/perl5/commit/2ebfd3876833c468d594b7500c8312cce08f768e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Make static fcn reentrant

This makes my_langinfo() reentrant by adding parameters specifying where
to store the result.

This prepares for future commits, and fixes some minor bugs for XS
writers, in that the claim was that the buffer in calling
Perl_langinfo() was safe from getting zapped until the next call to it
in the same thread.  It turns out there were cases where, because of
internal calls, the buffer did get zapped.


  Commit: c3d350e810502d899abb9533b1984d189446562c
      https://github.com/Perl/perl5/commit/c3d350e810502d899abb9533b1984d189446562c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: langinfo: Use Windows fcn to find CODESET

There is a Windows function, available for quite a long time, that will
return the current code page.  Use this for the nl_langinfo() CODESET,
as that libc function isn't implemented on Windows.


  Commit: ea8f6f52ad04e8f378316427aa71f9a5c4346ecc
      https://github.com/Perl/perl5/commit/ea8f6f52ad04e8f378316427aa71f9a5c4346ecc
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Add static fcn to analyze locale codeset

It determines if the name indicates it is UTF-8 or not.  There are
several variant spellings in use, and this hides that from the the
callers.

It won't be actually used until the next commit


  Commit: ccda44cdb3b5006266cff79b4e49bfd45454c735
      https://github.com/Perl/perl5/commit/ccda44cdb3b5006266cff79b4e49bfd45454c735
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M ext/I18N-Langinfo/Langinfo.pm
    M locale.c

  Log Message:
  -----------
  locale.c: Improve non-nl_langinfo() CODESET calc

Prior to this commit, on non-Windows platforms that don't have a
nl_langinfo() libc function, the code completely punted computation of
the CODESET item.  I have not been able to figure out how to do this,
even going to the locale definition files on disk (which may vary
anyway), but we can do a lot better than punting.

This commit adds three checks:

1) If the locale name is C or POSIX, we know the codeset

2) We can detect if a locale is UTF-8.  If it is, that is the codeset.
Many modern locales are of this ilk.

3) Failing that, some locales have the codeset appear in the name,
following a dot.

It isn't perfect, but it's a lot better than completely punting.


  Commit: a059b32a7b77c0c7c03c1db26acebebb5d2086bb
      https://github.com/Perl/perl5/commit/a059b32a7b77c0c7c03c1db26acebebb5d2086bb
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  Add toggle_locale() fcns

These are designed to temporarily switch the locale for a cateogry
around some operation that needs it to be different than the current
one.  They will be used in the next commit.

These will eventually replace the more unwieldy
_is_cur_LC_category_utf8() function, which toggles as a side effect


  Commit: 5ac2f520478944ab842f8d0642472eb5aa659379
      https://github.com/Perl/perl5/commit/5ac2f520478944ab842f8d0642472eb5aa659379
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  New signature for static fcn my_langinfo()

This commit changes the calling sequence for my_langinfo to add the
desired locale (or a sentinel to indicate to use the current locale),
and the locale category of the desired item.

This allows the function to be able to return the desired value for any
locale, avoiding some locale changes that would happen until this
commit, and hiding the need for locale changes from outside functions,
though a couple continue to do so to avoid potential multiple changes.


  Commit: 5515bbd3e3770e35cfb344ed624bb07aa4fbfd7b
      https://github.com/Perl/perl5/commit/5515bbd3e3770e35cfb344ed624bb07aa4fbfd7b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Add is_locale_utf8()

Previous commits have added the infrastructure to be able to determine
if a locale is UTF-8.  This will prove useful, and this commit adds
a function to encapsulate this information, and uses it in a couple of
places, with more to come in future commits.

This uses as a final fallback, mbtowc(), which some sources view was a
late adder to C89, and others as not really being available until C99.
Future commits will add heuristics when that function isn't available.


  Commit: 33556a3830c910fbdc48bea28ed5793cd286d308
      https://github.com/Perl/perl5/commit/33556a3830c910fbdc48bea28ed5793cd286d308
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Add fcn for UTF8ness determination

get_locale_string_utf8ness_i() will determine if the string it is passed
in the locale it is passed is to be treated as UTF-8, or not.


  Commit: 967aed3d7a48ffddc59ca5733d1507e1874a756b
      https://github.com/Perl/perl5/commit/967aed3d7a48ffddc59ca5733d1507e1874a756b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M ext/POSIX/POSIX.xs
    M locale.c
    M proto.h

  Log Message:
  -----------
  XXX perldelta Move POSIX::localeconv() logic to locale.c

The code currently in POSIX.xs is moved to locale.c, and reworked some
to fit in that scheme, and the logic for the workaround for the Windows
broken localeconv() is made more robust.

This is in preparation for the next commit which will use this logic
instead of (imperfectly) duplicating it.

This also creates Perl_localeconv() for direct XS calls of this
functionality.


  Commit: b3a32fd1eecd28814a7e78e7a09b14375caa8dbf
      https://github.com/Perl/perl5/commit/b3a32fd1eecd28814a7e78e7a09b14375caa8dbf
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: localeconv() unconditional NUMERIC toggle

It is possible to lockout changing the LC_NUMERIC locale.  This is done
in some printf cases where a recursive call could get the radix
character wrong.  But localeconv(), which could be called during this
recursion on some platforms, toggles the locale briefly, without
affecting the surrounding calls; so it can do the toggle
unconditionally.

The previous commit merely moved the functionality of localeconv() from
POSIX.xs to locale.c.  This commit expands upon that.


  Commit: bd510b4d9f277248d66c9253ae26ef5be4fb6332
      https://github.com/Perl/perl5/commit/bd510b4d9f277248d66c9253ae26ef5be4fb6332
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Collapse duplicate logic into one instance

The previous commit move the logic for localeconv() into locale.c.  This
commit takes advantage of that to use it instead of repeating the logic.

On Windows, there is alternative way of finding the radix character for
systems that have a localeconv() that could cause a race.  Prior to this
commit, if that failed to find something that looked like the radix, it
returned a '?'.  Now it will drop down to using this new code, as the
likelihood of the race is small.

Notably, this commit removes the inconsistent duplicate logic that had
been used to deal with the Windows broken localeconv() bug.


  Commit: 98b56eb823b6a4f5c4b55780a7760a5d994eab39
      https://github.com/Perl/perl5/commit/98b56eb823b6a4f5c4b55780a7760a5d994eab39
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Fix windows bug with broken localeconv()

localeconv() was broken on Windows until VS 2015.  As a workaround, this
was using my_snprintf() to find what the decimal point character is,
trying to avoid our workaround for localeconv(), which has a (slight)
chance of a race condition.

The problem is that my_snprintf() might not end up calling snprintf at
all; I didn't trace all possibilities in Windows.  So it doesn't make
for a reliable sentinel.

This commit now specifically uses libc snprintf(), and if it fails, drops
down to try localeconv().


  Commit: 22d039bdb591ebf5bd98be9ec8930c45f71ad199
      https://github.com/Perl/perl5/commit/22d039bdb591ebf5bd98be9ec8930c45f71ad199
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M ext/POSIX/POSIX.xs
    M locale.c
    M proto.h

  Log Message:
  -----------
  XXXdelta Add my_strftime8()

This is like plain my_strftime(), but additionally returns an indication
of the UTF-8ness of the returned string


  Commit: 1bde66540a66de868e77f199cffcaa073d8c0fcd
      https://github.com/Perl/perl5/commit/1bde66540a66de868e77f199cffcaa073d8c0fcd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Add utf8ness return param to static fcn

my_langinfo_i() now will additionally return the UTF-8ness of the
returned string.


  Commit: 4bc9011933b7c6ca57d10bb7bf6989920e9ff4fd
      https://github.com/Perl/perl5/commit/4bc9011933b7c6ca57d10bb7bf6989920e9ff4fd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M ext/I18N-Langinfo/Langinfo.xs
    M locale.c
    M proto.h

  Log Message:
  -----------
  XXXdelta Add Perl_langinfo8()

This is like Perl_langinfo() but additionally returns information about
the UTF-8ness of the returned string.


  Commit: 9feeba9085a4e7622ec04fb2234132276620ca75
      https://github.com/Perl/perl5/commit/9feeba9085a4e7622ec04fb2234132276620ca75
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add fallbacks if no mbtowc()

This add heuristics that work well for non-English locales to determine
if a locale is UTF-8 or not when mbtowc() isn't available.  It would be
a very rare compiler that didn't have that these days, but this covers
that case as best as I have been able to figure out.


  Commit: 34d6f3bfffde3ee6738cc132d727ee01a110580c
      https://github.com/Perl/perl5/commit/34d6f3bfffde3ee6738cc132d727ee01a110580c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use Strerror(), not strerror()


  Commit: 89f73bb5297e7ff5b42db153a518ab1f83ef7025
      https://github.com/Perl/perl5/commit/89f73bb5297e7ff5b42db153a518ab1f83ef7025
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Refactor #ifdef's for clarity

The my_strerror() function has effectively 5 different implementations
depending on the capabilities of the platform.  Only a few lines are
common to all, the set-up and the return.  The #ifdefs obscure the
underlying logic.  So this commit separates them out into 5 different
functions, with the result that it's clear what is going on in each.


  Commit: bf55c09329dad756895ee09f63ab5cf8ac72fb94
      https://github.com/Perl/perl5/commit/bf55c09329dad756895ee09f63ab5cf8ac72fb94
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Avoid mojibake in "$!"

In stress testing, I discovered that the LC_CTYPE and LC_MESSAGES
locales need to be the same locale, or strerror() can return
question marks or mojibake instead of the proper message.

This commit refactors the handling of stringifying "$!" to make the
locales of both categories the same during the stringification.

Actually, I suspect it isn't the locale, but the codeset of the locale
that needs to be the same.  I suspect that if the categories were both
in different UTF-8 locales, or both in single-byte locales, that things
would work fine.  But it's cheaper to find the locale rather than the
locale's codeset, so that is what is done.


  Commit: b757054fcdb7f4d9c9f5e2f98cc4087665b497ac
      https://github.com/Perl/perl5/commit/b757054fcdb7f4d9c9f5e2f98cc4087665b497ac
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M makedef.pl
    M mg.c
    M proto.h

  Log Message:
  -----------
  Move utf8ness calc for $! into locale.c from mg.c

locale.c has the infrastructure to handle this, so remove repeated
logic.

The removed code tried to discern better based on using script runs, but
this actually doesn't help, so is removed.


  Commit: b76ea5b12b127be03f9398ec3c24d4abb8455caf
      https://github.com/Perl/perl5/commit/b76ea5b12b127be03f9398ec3c24d4abb8455caf
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M mg.c

  Log Message:
  -----------
  mg.c: White-space only

Indent newly formed block from the previous commit.


  Commit: 555ddca977beeae46ddbf205f03b1f55a8bba2e2
      https://github.com/Perl/perl5/commit/555ddca977beeae46ddbf205f03b1f55a8bba2e2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M embedvar.h
    M intrpvar.h
    M locale.c
    M proto.h
    M sv.c

  Log Message:
  -----------
  locale.c: Rmv no longer used code; UTF8ness cache

What these functions do has been subsumed by code introduced in previous
commits, and in a more straight forward manner.

Also removed in this commit is the cache of the knowing what locales are
UTF-8 or not.  This data is now cheaper to calculate when needed, and
there is now a single entry cache, so I don't think the complexity
warrants keeping it.

It could be added back if necessary, split off from the remainder of
this commit.


  Commit: 872653efd45cd7ef773bf3cb67759c834636c72f
      https://github.com/Perl/perl5/commit/872653efd45cd7ef773bf3cb67759c834636c72f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Don't discard locale info in starting P2008

The program is started in the global locale, and then is converted to
the POSIX 2008 per-thread locale API.  Prior to this commit the startup
locale was discarded.  It really should be the foundation for the 2008
locales.  I don't know of any current paths through the code that this
makes a difference for, but it is a potential hole that is easy to plug.


  Commit: e0d8a18cf5fcf435a39ef0b309b7b645d4bd44af
      https://github.com/Perl/perl5/commit/e0d8a18cf5fcf435a39ef0b309b7b645d4bd44af
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M perl.h
    M proto.h

  Log Message:
  -----------
  Add a common locale panic macro and functions

This will make sure that all the necessary clean up gets done.


  Commit: 6351cf4f0ad7194c5fdb6fd7bf32fc25830f1498
      https://github.com/Perl/perl5/commit/6351cf4f0ad7194c5fdb6fd7bf32fc25830f1498
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Clean up thread_locale_init()

We can use internal functions to this file instead of the API ones here.
This commit also calls  sync_locale() to avoid repeated logic.


  Commit: 279dbce0a7a1c420b00414b6ddd2a942a5e63572
      https://github.com/Perl/perl5/commit/279dbce0a7a1c420b00414b6ddd2a942a5e63572
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Omit an extra copy

In this case in Perl_setlocale(), we can just return the plain result
from setlocale(), as, if something further needs to be done that would
destroy it, that is taken care of already at the time.

On per-thread locale platforms, the result already is in a per-category
buffer.


  Commit: f0b32e138e1c953167c6f609c8811e26e4ff7bf9
      https://github.com/Perl/perl5/commit/f0b32e138e1c953167c6f609c8811e26e4ff7bf9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embedvar.h
    M intrpvar.h
    M locale.c
    M makedef.pl
    M perl.c
    M sv.c

  Log Message:
  -----------
  locale.c: Cache the current LC_CTYPE locale name

This is now used as a cache of length 1 to avoid having to lookup up the
UTF-8ness as often.

There was a complicated cache previously, but changes to the logic
caused that to be much less necessary, and it is no longer actually
used, and will be removed in a later commit.

But it's pretty easy to keep this single value around to cut further
down the new scheme's need to look it up

This commit also skips doing S_newctype() if the new boss is the same as
the old


  Commit: 83dd4e2ba0fc54bef17a01a1281cc3a30e3793d1
      https://github.com/Perl/perl5/commit/83dd4e2ba0fc54bef17a01a1281cc3a30e3793d1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M intrpvar.h

  Log Message:
  -----------
  intrpvar.h: Initialize a variable

I don't believe there is a bug with this PL_numeric_name being
uninitialized, but this is an easy precaution.


  Commit: 36a4af39bf4234236913875990da14d8d89ae118
      https://github.com/Perl/perl5/commit/36a4af39bf4234236913875990da14d8d89ae118
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  Swap the ordering of two locale category indices

Perl internally uses a mapping of locale category values into a
consecutive sequence of indices starting at 0.  These are used as
indexes into arrays.  The reason is that the category numbers are
opaque, vary by platform, aren't necessarily sequential, and hence are
hard to make table driven code for.

This commit makes the LC_CTYPE index 0, and LC_NUMERIC equal to 1;
swapping them.  The reason is to cause LC_CTYPE to get done first in the
many loops through the categories.  The UTF8ness of categories is an
often needed value, and most of the time the categories will have the
same locale.  LC_CTYPE is needed to calculate the UTF8ness, and by doing
it first and caching the result, the other categories likely
automatically will use the same value, without having to recalculate.


  Commit: bf31e1cf3eafaafb147f6e6f8ce207f4e090c4b5
      https://github.com/Perl/perl5/commit/bf31e1cf3eafaafb147f6e6f8ce207f4e090c4b5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use new mechanism to save/restore errno

Instead of explicitly saving the errno around debugging statements, the
new more general mechanism is used.


  Commit: 105ca118510e03eba4cf6af26d8d76ad0ddc9ddd
      https://github.com/Perl/perl5/commit/105ca118510e03eba4cf6af26d8d76ad0ddc9ddd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move DEBUG location info

This commit takes advantage of the new mechanism to add common DEBUGGING
code to print the __FILE__ and __LINE__ of every debugging statement.
This allows those to be removed from each statement, and have them
implicitly added.

This make things consistent, and easier to read and add new statements.


  Commit: 8b75ddb45ddf26b7de74d86423067c6da63ab0c2
      https://github.com/Perl/perl5/commit/8b75ddb45ddf26b7de74d86423067c6da63ab0c2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add some asserts


  Commit: 9c227700c27fd22a566b92286a732f46bf53d48c
      https://github.com/Perl/perl5/commit/9c227700c27fd22a566b92286a732f46bf53d48c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Reorder code, rmv unneeded conditional

Previous commits have made the conditional about being able to find the
radix character unnecessary.  The called function my_langinfo_c()
handles the case properly.

This commit also makes the trivial case first in a conditional, as that
is easier to comprehend.


  Commit: f1d88f37bca45e2641d8913ba7b8e74286e94b2c
      https://github.com/Perl/perl5/commit/f1d88f37bca45e2641d8913ba7b8e74286e94b2c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Reorder 'if' branches

It's better for understandability to have positive tests than negative
ones


  Commit: e9d73a1e53fe420e1d92c794529a85b69ea29fb5
      https://github.com/Perl/perl5/commit/e9d73a1e53fe420e1d92c794529a85b69ea29fb5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Refactor a static function

S_new_numeric() is called after the LC_NUMERIC category is changed, to
update various ancillary information Perl keeps.

This reorders the function so that on POSIX 2008 platforms, the numeric
object is created earlier.  This allows for fewer operations on those
platforms, as we already have the correct value in place for querying
what the radix and thousands separator characters are.

Explanatory comments are also added.


  Commit: 03b7c3f875f2ecc7c2288a197720273cd3e5280a
      https://github.com/Perl/perl5/commit/03b7c3f875f2ecc7c2288a197720273cd3e5280a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Rmv unused code

The code to handle changing LC_NUMERIC and LC_COLLATION handled the
possibility of being passed a NULL locale name.  But we're not changing
things unless we have a new locale, and know its name, so a name is
always passed


  Commit: 2ff94348e1160c6fd6daea56301401318026d764
      https://github.com/Perl/perl5/commit/2ff94348e1160c6fd6daea56301401318026d764
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Rmv unnecessary savepv()

This moves the savepv() down in the function, after we know we need it.


  Commit: 12ff11af13721776d90a11cc8704a0f54800a9a9
      https://github.com/Perl/perl5/commit/12ff11af13721776d90a11cc8704a0f54800a9a9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Mv line of code later in fcn

This avoids setting this until needed.


  Commit: 952753e833a6cfe4d0f1681a3ef201f247938819
      https://github.com/Perl/perl5/commit/952753e833a6cfe4d0f1681a3ef201f247938819
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Skip code if will be a no-op

The previous commits have fixed things up so that at this point in the
code nothing has changed, and if nothing will change, we can just return


  Commit: 191d68894d058299b2aa0212e4f40ddfdb24a974
      https://github.com/Perl/perl5/commit/191d68894d058299b2aa0212e4f40ddfdb24a974
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Specially handle the trivial case

When setting the numeric radix character, and the locale is C or POSIX,
we know it's going to be a dot without having to look further.  All the
ancillary info is also known.  So save time and just set these all and
return.


  Commit: 1193618168e41e00eb1c72cfe82116cf72ada9af
      https://github.com/Perl/perl5/commit/1193618168e41e00eb1c72cfe82116cf72ada9af
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M intrpvar.h
    M numeric.c

  Log Message:
  -----------
  numeric.c, intrpvar.h: Rmv outdated condition, comment

It hasn't been true for some releases that the SV was removed when the
radix was a dot.  Instead the SV contains the correct decimal point
character at all times.


  Commit: 629933b5a8a14f04e2e6159b271d3efc7cb3562d
      https://github.com/Perl/perl5/commit/629933b5a8a14f04e2e6159b271d3efc7cb3562d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Swap setting related variables

It is clearer to use the variable more directly related to what is being
set; then set the more distantly related onve, than vice versa


  Commit: 74de9522551c4784b2af46de3c5115a9fffd05e4
      https://github.com/Perl/perl5/commit/74de9522551c4784b2af46de3c5115a9fffd05e4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Rmv special case

At this point in the code, we know we are already switched into the
underlying numeric locale; there's no need to further check to see if
switching is necessary.


  Commit: 86558fe2ade34e9a6675317323361d891b295d76
      https://github.com/Perl/perl5/commit/86558fe2ade34e9a6675317323361d891b295d76
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embedvar.h
    M intrpvar.h
    M locale.c
    M perl.c
    M sv.c

  Log Message:
  -----------
  locale.c: Save underlying radix character

When changing locales the new decimal point needs to be calculated.
This commit creates a new per-interpreter variable to save that
calculation, so it only has to be done when a new locale is set; prior
to this commit it was recalculated each time it was needed.

The calculation is still performed twice when the new locale is switched
into.  But the redundant calculation will be removed in a couple of
commits hence.


  Commit: 7241104067994a9f3b81c496536418f8ae062cec
      https://github.com/Perl/perl5/commit/7241104067994a9f3b81c496536418f8ae062cec
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move debug stmt to earlier in fcn


  Commit: 3642d598e7da657c8e683d04879d8e9b7251e146
      https://github.com/Perl/perl5/commit/3642d598e7da657c8e683d04879d8e9b7251e146
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c

  Log Message:
  -----------
  locale.c: Rmv S_set_numeric_radix()

Previous commits have made this function much smaller, and its branches
can be easily absorbed into the callers, with clearer code, and in fact
removal of a redundant calculation of the locale's radix character,
promised in a previous commit's message


  Commit: 44c86f62658517c768d9d13789342d425f987fd7
      https://github.com/Perl/perl5/commit/44c86f62658517c768d9d13789342d425f987fd7
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXXfinish commit msg locale.c: Rmv some special cases

The previous commits have allowed the removal of special casing of
making sure the


  Commit: 90ecb9e8d473299b9713e6530ec4c069b6b953ef
      https://github.com/Perl/perl5/commit/90ecb9e8d473299b9713e6530ec4c069b6b953ef
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Change assert() into STATIC_ASSERT()


  Commit: 7597682ddca972d54f60da0b9342e3895716bb87
      https://github.com/Perl/perl5/commit/7597682ddca972d54f60da0b9342e3895716bb87
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use standard fold table for C locale

Copy the standard compiled-in ASCII fold table when the locale is C or
POSIX, instead of looping through all 256 characters and computing them.
This saves some time as well as ensures that any platform bugs become
irrelevant.


  Commit: 3feebfb0b9064f30081181d58f67ac3df18100a3
      https://github.com/Perl/perl5/commit/3feebfb0b9064f30081181d58f67ac3df18100a3
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add check that strxfrm didn't fail

The code failed to take into account that strxfrm() can fail for reasons
besides buffer length.  It does not return errors, and the only way to
check is to set errno to 0 beforehand, and check that it is still 0
afterwards.


  Commit: 1289fc22b6d321be649e1aafe94eaa73f841c89d
      https://github.com/Perl/perl5/commit/1289fc22b6d321be649e1aafe94eaa73f841c89d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Don't assume LC_CTYPE, LC_COLLATE are same

This code is using isCNTRL_LC which depends on LC_CTYPE to verify that
something in the LC_COLLATE locale is a control.  That only works
properly if the two locales are the same.  This commit adds code to
ensure they are.


  Commit: fcdb3b4b6272c3eaba49f2da0066de92b868659c
      https://github.com/Perl/perl5/commit/fcdb3b4b6272c3eaba49f2da0066de92b868659c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: strxfrm() requires LC_CTYPE eq LC_COLLATE

The libc functions strxfrm() on some platforms requires the LC_CTYPE
locale to be the same as the LC_COLLATE locale (or rather, probably that
they have the same code set, but checking for locale is cheaper).
Otherwise mojibake would result, or more likely the function will fail,
setting errno.

This commit brings the locales into alignment if necessary


  Commit: 57f7c95b4612e644b93ae7ec37f4b8b9442187c5
      https://github.com/Perl/perl5/commit/57f7c95b4612e644b93ae7ec37f4b8b9442187c5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M Configure
    M Cross/config.sh-arm-linux
    M Cross/config.sh-arm-linux-n770
    M NetWare/config.wc
    M Porting/config.sh
    M config_h.SH
    M configure.com
    M metaconfig.h
    M plan9/config_sh.sample
    M uconfig.h
    M uconfig.sh
    M uconfig64.sh
    M win32/config.gc
    M win32/config.vc

  Log Message:
  -----------
  Configure: strxfrm_l


  Commit: b71fd43cdb6749c16a2610a17aeb95446f643df1
      https://github.com/Perl/perl5/commit/b71fd43cdb6749c16a2610a17aeb95446f643df1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M lib/locale.t

  Log Message:
  -----------
  XXX temp: lib/locale.t: debug


  Commit: d67c5fd72f6ee8c2dcbabde17ab2d77cf1c2844f
      https://github.com/Perl/perl5/commit/d67c5fd72f6ee8c2dcbabde17ab2d77cf1c2844f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use strxfrm_l() if available

This more modern version of the function doesn't require us to change
locales.


  Commit: bd15796fec98f2641aa57b696350c613ec13f0eb
      https://github.com/Perl/perl5/commit/bd15796fec98f2641aa57b696350c613ec13f0eb
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M mathoms.c
    M proto.h
    M sv.c

  Log Message:
  -----------
  Change name of internal function

This is in preparation for working on it; the new name, mem_collxfrm_ is
in compliance with the C Standard; the old was not.


  Commit: e9e651c5d039095962a52af9e7906c444a6d3553
      https://github.com/Perl/perl5/commit/e9e651c5d039095962a52af9e7906c444a6d3553
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M ext/POSIX/POSIX.xs
    M ext/POSIX/lib/POSIX.pod
    M locale.c
    M proto.h

  Log Message:
  -----------
  XXXdelta Fix POSIX::strxfrm()

This function takes an SV containing a PV.  The encoding of that PV is
based on the locale of the LC_CTYPE locale.  It really doesn't make
sense to collate based off of the sequencing of a different locale, which
prior to this commit it would do if the LC_COLLATION locale were
different.


  Commit: 2477c9152c98446f7600ab670ed5a3eda8cf1d8a
      https://github.com/Perl/perl5/commit/2477c9152c98446f7600ab670ed5a3eda8cf1d8a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Improve debugging for mem_collxfrm()

This prints out more information, better organized.

It also moves up the info from -DLv to plain -DL


  Commit: 194d837e0bb523bb2beb1efab9b4dda8862ea106
      https://github.com/Perl/perl5/commit/194d837e0bb523bb2beb1efab9b4dda8862ea106
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add debug statement for collation failure

Perhaps this should be a warning to the user that we couldn't calculate
collation info for the locale, but at least there should be a way to
get that info from a DEBUG statement


  Commit: a5d59321cdc885c198ca49909bfa5179684b7214
      https://github.com/Perl/perl5/commit/a5d59321cdc885c198ca49909bfa5179684b7214
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Print code point in hex, not decimal

Hex is the more familiar form


  Commit: 362ebbdb56f3a92fff4448d319bc3aad445a6321
      https://github.com/Perl/perl5/commit/362ebbdb56f3a92fff4448d319bc3aad445a6321
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs
    M locale.c
    M perl.h

  Log Message:
  -----------
  Mark certain mutex lock macros as private

mbtowc() mblen(), and wctomb() should not be directly used by XS
writers; instead use the POSIX versions.  Don't encourage the direct use
by having public macros to aid in their use.


  Commit: ee615bd543d749fdbc432e8617bb5dfb87c8e694
      https://github.com/Perl/perl5/commit/ee615bd543d749fdbc432e8617bb5dfb87c8e694
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Move some code around

This is purely to make future commits have smaller real difference
listings, and involves a temporary (complemented) copy of a preprocessor
conditional.


  Commit: 9e448c7c1d7c3e4cda3b93c66593aca8096cfdef
      https://github.com/Perl/perl5/commit/9e448c7c1d7c3e4cda3b93c66593aca8096cfdef
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Reorder cpp branches

Disposing of the trivial case first makes things easier to read.


  Commit: 147c3f9bc742ca672963517a8a4f8d41e74632b6
      https://github.com/Perl/perl5/commit/147c3f9bc742ca672963517a8a4f8d41e74632b6
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embedvar.h
    M intrpvar.h
    M locale.c
    M makedef.pl
    M perl.h
    M sv.c

  Log Message:
  -----------
  Make the locale mutex a general semaphore

Future commits will use this new capability, and in Configurations where
no locale locking is currently necessary.


  Commit: 18e2f45d332c58706eb422086cbbabd0de814176
      https://github.com/Perl/perl5/commit/18e2f45d332c58706eb422086cbbabd0de814176
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embedvar.h
    M intrpvar.h
    M makedef.pl
    M perl.h
    M perlvars.h
    M sv.c

  Log Message:
  -----------
  Use general locale mutex for numeric operations

This commit removes the separate mutex for locking locale-related
numeric operations on threaded perls; instead using the general locale
one.  The previous commit made that a general semaphore, so now suitable
for use for this purpose as well.

This means that the locale can be locked for the duration of some
sprintf operations, longer than before this commit.  But on most modern
platforms, thread-safe locales cause this lock to expand just to a
no-op; so there is no effect on these.  And on the impacted platforms,
one is not supposed to be using locales and threads in combination, as
races can occur.  This lock is used on those perls to keep Perl's
manipulation of LC_NUMERIC thread-safe.  And for those there is also no
effect, as they already lock around those sprintf's.


  Commit: 07f7ece025e0b0c51ecbcca9b568e4c815a25279
      https://github.com/Perl/perl5/commit/07f7ece025e0b0c51ecbcca9b568e4c815a25279
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  Add locale macro to wrap static-space-using fncs

Some functions return a result in a global-to-the-program buffer, or
they have an internal global buffer.  Other threads must be kept from
simultaneously using that function.  This macro is to be used for all
such ones dealing with locales.  Ideally, there would be a separate mutex
for each such buffer space.  But these functions also have to lock the
locale from changing during their execution, and there aren't that many
such functions, and they actually are rarely executed.  So a single lock
will do.

This will allow future commits to have more targeted locking for
functions that don't affect the global locale.


  Commit: c2a8802a4c965a79b49efbd377983050ef811335
      https://github.com/Perl/perl5/commit/c2a8802a4c965a79b49efbd377983050ef811335
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  Redefine the POSIX.xs locale macros using prev commit

This commit uses the new macro introduced in the previous commit to
define the internal locale mutex macros in POSIX.xs


  Commit: b3ff864812a38783b4cab750b3c6acc611c2bcdf
      https://github.com/Perl/perl5/commit/b3ff864812a38783b4cab750b3c6acc611c2bcdf
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  perl.h: Remove NL_LANGINFO_LOCK

This is needed in precisely one place in the code, so move it to there.


  Commit: d403880e577e166ab54379f5d8806f1c8c9d4484
      https://github.com/Perl/perl5/commit/d403880e577e166ab54379f5d8806f1c8c9d4484
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  perl.h: Remove LOCALECONV_LOCK

This is needed in just one function, in locale.c, so more it there.


  Commit: ed2fd9d8f53b5b55df850caa78f9b1034dcbc5e0
      https://github.com/Perl/perl5/commit/ed2fd9d8f53b5b55df850caa78f9b1034dcbc5e0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  XXX perlembed Add PORCELAIN_SETLOCALE_LOCK/UNLOCK

This macro is used to surround raw setlocale() calls so that the return
value in a global static buffer can be saved without interference with
other threads.

There are a few very rarely occurring instances in locale.c that are
converted to use this.  These previously could have been races.

The raw setlocales in the initialization function are not guarded, as
these happen early in the Perl process initialization, before threading
is enabled.

This is buggy if there are multiple embedded perls.  It can't be helped.
perlembed is being updated to indicate this.


  Commit: b4586a5d7138b71acd75f1481110f142e3f5c340
      https://github.com/Perl/perl5/commit/b4586a5d7138b71acd75f1481110f142e3f5c340
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Move #defining SETLOCALE_LOCK

This simplifies slightly, and will allow further simplification


  Commit: bd13c81e7b1f9af46b6ec8c83b1ad1fbb5f495a4
      https://github.com/Perl/perl5/commit/bd13c81e7b1f9af46b6ec8c83b1ad1fbb5f495a4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Move LOCALE_READ_LOCK #definition

To enable future simplifications


  Commit: aca134961b4b1c09edaaf3d1121d69b665c9974e
      https://github.com/Perl/perl5/commit/aca134961b4b1c09edaaf3d1121d69b665c9974e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M intrpvar.h
    M locale.c
    M makedef.pl
    M perl.c
    M perl.h
    M sv.c

  Log Message:
  -----------
  locale.c: Move #define to perl.h; use it elsewhere

 Rather than recalculate this combined conditional, do it once in
 perl.h.


  Commit: ee71e99261a3decdbf6d11cc3bc66f704160a352
      https://github.com/Perl/perl5/commit/ee71e99261a3decdbf6d11cc3bc66f704160a352
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Mitigate unsafe threaded locales

This a new set of macros and functions to do locale changing and
querying for platforms where perl is compiled with threads, but the
platform doesn't have thread-safe locale handling.

All it does is:

1) The return of setlocale() is always safely saved in a per-thread
buffer, and
2) setlocale() is protected by a mutex from other threads which are
using perl's locale functions.

This isn't much, but it might be enough to get some programs to work on
such platforms which rarely change or query the locale.


  Commit: 3fea5ad528fe19c6268a6927e464c56bc3a42dd2
      https://github.com/Perl/perl5/commit/3fea5ad528fe19c6268a6927e464c56bc3a42dd2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  XXX make sure comments get moved appropriately perl.h: Remove now empty block

Previous commits have left this empty except for comments.


  Commit: 5bcab4002af66db7914e75f713c9434c99fc53af
      https://github.com/Perl/perl5/commit/5bcab4002af66db7914e75f713c9434c99fc53af
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  XXX pp.c: do %g print under mutex,


  Commit: ce4213be2d5cadc7d99acb01edf13ba532412d86
      https://github.com/Perl/perl5/commit/ce4213be2d5cadc7d99acb01edf13ba532412d86
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M ebcdic_tables.h
    M embedvar.h
    M globvar.sym
    M inline.h
    M intrpvar.h
    M perl.h
    M regen/ebcdic.pl
    M sv.c

  Log Message:
  -----------
  Make fc(), /i thread-safe on participating platforms

A long standing bug in Perl that has gone undetected is that the array
is global that is created when changing locales and tells fc() and qr//i
matching what the folds are in the new locale.

What this means is that any program only has one set of fold definitions
that apply to all threads within it, even if we claim that the locales
are thread-safe on the given platform.  One possibility for this going
undetected so long is that no one is using locales on multi-threaded
systems much.  Another possibility is that modern UTF-8 locales have the
same set of folds as any other one.

It is a simple matter to make the fold array per-thread instead of
per-process, and that solves the problem transparently to other code.

I discovered this stress-testing locale handling under threads.  That
test will be added in a future commit.


  Commit: e4faa4ba4acdd0f04d496b4a6ce5c3260b419f6f
      https://github.com/Perl/perl5/commit/e4faa4ba4acdd0f04d496b4a6ce5c3260b419f6f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M inline.h
    M locale.c

  Log Message:
  -----------
  locale.c/inline.h: Add fold calc debug statements

Under verbose debugging, this shows non-standard folds


  Commit: 88da426834f4d7824d86069d544c6f9082d9c011
      https://github.com/Perl/perl5/commit/88da426834f4d7824d86069d544c6f9082d9c011
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c comments


  Commit: d8a739d76e1cb3bc62364de5989e74a091da9d38
      https://github.com/Perl/perl5/commit/d8a739d76e1cb3bc62364de5989e74a091da9d38
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX prob drop; done before anything so no races


  Commit: b6d9dd2e379488cfe801ed084551a0aa53ab8c8b
      https://github.com/Perl/perl5/commit/b6d9dd2e379488cfe801ed084551a0aa53ab8c8b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Add #define for gwENVr_LOCALEr_UNLOCK

This is for functions that read the locale and environment and write to
some global space.


  Commit: 98a2b0c5eaf0eb5267fb256596b7aba8647229d4
      https://github.com/Perl/perl5/commit/98a2b0c5eaf0eb5267fb256596b7aba8647229d4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h
    M time64.c

  Log Message:
  -----------
  Remove ENV_LOCALE_LOCK/UNLOCK macros

These are subsumed by gwENVr_LOCALEr_LOCK created in the previous
commit.


  Commit: 35e4c6ef2fe66bdfe5d30972d80e04d9d3a06602
      https://github.com/Perl/perl5/commit/35e4c6ef2fe66bdfe5d30972d80e04d9d3a06602
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h
    M time64.c
    M util.c

  Log Message:
  -----------
  Change ENV/LOCALE locking read macro names

The old name was confusing.


  Commit: f2cefdc6abd93d0db0612b9616e6b22336a6f65d
      https://github.com/Perl/perl5/commit/f2cefdc6abd93d0db0612b9616e6b22336a6f65d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Move some statements

So they are closer to related statements


  Commit: a75e7c556d96cc615e0164ed674063a8b26b6da4
      https://github.com/Perl/perl5/commit/a75e7c556d96cc615e0164ed674063a8b26b6da4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h
    M util.c

  Log Message:
  -----------
  perl.h: Finish implementing combo ENV/LOCALE mutexes

There are cases where an executing function is vulnerable to either the
locale or environment being changed by another thread.  This commit
implements macros that use mutexes to protect these critical sections.
There are two cases that exist:  one where the functions only read; and
one where they can also need exclusive control so that a competing
thread can't overwrite the returned static buffer before it is safely
copied.

5.32 had a placeholder for these, but didn't actually implement it.
Instead it locked just the ENV portion.  On modern platforms with
thread-safe locales, the locale portion is a no-op anyway, so things
worked on them.

This new commit extends that safety to other platforms.  This has long
been a vulnerability in Perl.


  Commit: 36ccf58bcacfc283fbe95963926bed46d4ae5226
      https://github.com/Perl/perl5/commit/36ccf58bcacfc283fbe95963926bed46d4ae5226
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M time64.c

  Log Message:
  -----------
  time64.c: Remove no longer needed code

This code defined some macros; those are now defined by perl.h


  Commit: 8a7edf5605d0e8130a2857de7e519aff605e0044
      https://github.com/Perl/perl5/commit/8a7edf5605d0e8130a2857de7e519aff605e0044
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M pp_sys.c

  Log Message:
  -----------
  XXX need to StructCopy pp_sys mutexes


  Commit: d917cbaaed159c5875c8a9dcdc4e7c7923a7fa52
      https://github.com/Perl/perl5/commit/d917cbaaed159c5875c8a9dcdc4e7c7923a7fa52
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M win32/win32.c

  Log Message:
  -----------
  win32.c: Add mutexes around some calls

These could have races.


  Commit: ef7a3696a64df1669c1c80772b894e3d4a2563d2
      https://github.com/Perl/perl5/commit/ef7a3696a64df1669c1c80772b894e3d4a2563d2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs

  Log Message:
  -----------
  POSIX.xs env locks, check file for more


  Commit: 225751222e0610b1ce735ea68e876e72b3a7e6fd
      https://github.com/Perl/perl5/commit/225751222e0610b1ce735ea68e876e72b3a7e6fd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M util.c

  Log Message:
  -----------
  util.c: mktime needs to run under a mutex

per the Posix standard


  Commit: b5bfc1b46e6f5777541283423395df83887a7714
      https://github.com/Perl/perl5/commit/b5bfc1b46e6f5777541283423395df83887a7714
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M util.c

  Log Message:
  -----------
  util.c: Add locks around strftime() calls


  Commit: 1de7396041bb2b96d6d4033250d50f461a4e4e77
      https://github.com/Perl/perl5/commit/1de7396041bb2b96d6d4033250d50f461a4e4e77
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M os2/os2.c

  Log Message:
  -----------
  os2: Use many reader lock instead of exclusive

This is just reading the environment, not changing it, so a many readers
can be accessing it at the same time.


  Commit: 1618268b67429db311992e38121c222aa459cd80
      https://github.com/Perl/perl5/commit/1618268b67429db311992e38121c222aa459cd80
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M cpan/Time-Piece/Piece.pm
    M cpan/Time-Piece/Piece.xs

  Log Message:
  -----------
  XXX cpan PR Time-Piece: Add locks

This add mutex locking around some unsafe thread operations to make this
module thread-safe.


  Commit: 464a202c5cd9462b79ae0a973604d8b8b2266521
      https://github.com/Perl/perl5/commit/464a202c5cd9462b79ae0a973604d8b8b2266521
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M cpan/Time-Piece/Piece.xs

  Log Message:
  -----------
  Time-Piece: Use foldEQ_locale() if available

This supported core function is thread-safe and knows about Perl
internals, so is preferable to the similar libc function, which is now
used only as a fallback.  This commit also bomb proofs the code by
adding an additional fallback, specified in C89, which isn't a great
substituted, but far better than nothing.


  Commit: 4d87cfc2f5853a0e398efc475b35018b89c537a4
      https://github.com/Perl/perl5/commit/4d87cfc2f5853a0e398efc475b35018b89c537a4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M cpan/Time-Piece/Piece.xs

  Log Message:
  -----------
  Time-Piece: Use isSPACE, not isspace

The latter gives results that are dependent on the program's underlying
locale, and so may be inconsistent.

If locale dependence is actually desired, isSPACE_LC should be used, as
it knows about various things the module writer shouldn't have to
concern themselves with.  It is supported since 5.004


  Commit: 4712f71624b06a5a764588bbb4f2c7273602d59a
      https://github.com/Perl/perl5/commit/4712f71624b06a5a764588bbb4f2c7273602d59a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M cpan/Time-Piece/Piece.xs

  Log Message:
  -----------
  Time-Piece: Use isDIGIT, not isdigit

The latter gives results that are dependent on the program's underlying
locale, and so may be inconsistent.

If locale dependence is actually desired, isDIGIT_LC should be used, as
it knows about various things the module writer shouldn't have to
concern themselves with.  It is supported since 5.004


  Commit: 05c116f94e2f0af932edff789795a446191b5230
      https://github.com/Perl/perl5/commit/05c116f94e2f0af932edff789795a446191b5230
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M cpan/Time-Piece/Piece.xs

  Log Message:
  -----------
  Time-Piece: Use isUPPER, not isupper

The latter gives results that are dependent on the program's underlying
locale, and so may be inconsistent.

If locale dependence is actually desired, isUPPER_LC should be used, as
it knows about various things the module writer shouldn't have to
concern themselves with.  It is supported since 5.004


  Commit: bfccda8c419e298654426e7b8c12b506d2631771
      https://github.com/Perl/perl5/commit/bfccda8c419e298654426e7b8c12b506d2631771
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M pod/perlhacktips.pod

  Log Message:
  -----------
  XXX incomplete perlhacktips:


  Commit: fe66a909a41a69a089eaebcdf972b1e7e1118ee7
      https://github.com/Perl/perl5/commit/fe66a909a41a69a089eaebcdf972b1e7e1118ee7
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M dist/IO/IO.pm
    M dist/IO/IO.xs

  Log Message:
  -----------
  XXX check if using ppport IO.xs: Remove fallback code furnished by ppport


  Commit: ced917040a4458113752fadc2adfc8ae5105a76b
      https://github.com/Perl/perl5/commit/ced917040a4458113752fadc2adfc8ae5105a76b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M hints/freebsd.sh

  Log Message:
  -----------
  XXX check with freebsd: hints/freebsd.sh


  Commit: 54592ecba8a814a97366cfd0e3546db50eb1dc6d
      https://github.com/Perl/perl5/commit/54592ecba8a814a97366cfd0e3546db50eb1dc6d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M thread.h

  Log Message:
  -----------
  thread.h: White-space, braces only


  Commit: 38a1c32175626de9b4db485c4c8d27e7abe57123
      https://github.com/Perl/perl5/commit/38a1c32175626de9b4db485c4c8d27e7abe57123
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M thread.h

  Log Message:
  -----------
  XXX thread.h Save errno around lock/unlock


  Commit: ec082f18ed019b94a503a699b4de513d4bcf26a2
      https://github.com/Perl/perl5/commit/ec082f18ed019b94a503a699b4de513d4bcf26a2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  XXX perl.h: Debugging mutex lock'


  Commit: 99a9bc27d97b61deb237e97a5e0ca8841f4fc137
      https://github.com/Perl/perl5/commit/99a9bc27d97b61deb237e97a5e0ca8841f4fc137
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs
    M locale.c
    M perl.h

  Log Message:
  -----------
  locks


  Commit: 97499b8de6901ea75dd8e4bdb5132e8c2e3a73cd
      https://github.com/Perl/perl5/commit/97499b8de6901ea75dd8e4bdb5132e8c2e3a73cd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX locale.c: Kludge because C obj getting destroyed


  Commit: 1419443ff3df8ffdb800912fea1c8754f7d3be3f
      https://github.com/Perl/perl5/commit/1419443ff3df8ffdb800912fea1c8754f7d3be3f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M .github/workflows/testsuite.yml

  Log Message:
  -----------
  Make DEBUGGING the default on CI


  Commit: 83cb17c9329e8bc231ff2b5ed54afefe974367fb
      https://github.com/Perl/perl5/commit/83cb17c9329e8bc231ff2b5ed54afefe974367fb
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/run/locale.t

  Log Message:
  -----------
  t/run/locale.t: Move init stmt

This makes it easier to add a line to turn on debugging temporarily


  Commit: f62d243ca200071020a59195c3de033aba045f63
      https://github.com/Perl/perl5/commit/f62d243ca200071020a59195c3de033aba045f63
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/run/locale.t

  Log Message:
  -----------
  XXX run/locale.t temp debug


  Commit: 55b87ff732389b5c618433e4e6979f66ad9a3322
      https://github.com/Perl/perl5/commit/55b87ff732389b5c618433e4e6979f66ad9a3322
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/porting/customized.dat
    M vutil.c

  Log Message:
  -----------
  vutil.c: Clean up white space

Change tabs to blanks; Fix indentation; chomp trailing white space

Remove some blank lines that don't contribute to readability


  Commit: ae03410dfaf1983ba61611ed7fb54ee50bbf8d5b
      https://github.com/Perl/perl5/commit/ae03410dfaf1983ba61611ed7fb54ee50bbf8d5b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/porting/customized.dat
    M vutil.c

  Log Message:
  -----------
  vutil.c: Simplify locale handling

I read the code over and realized that there was a much simpler way to
do things.


  Commit: ee07f288fb90ac05492d093b7093b25ca4d97c40
      https://github.com/Perl/perl5/commit/ee07f288fb90ac05492d093b7093b25ca4d97c40
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Change a branch into an assert

This code should no longer be necessary; but verify


  Commit: ac759905b599e2c712185733137e6da1cac23d2d
      https://github.com/Perl/perl5/commit/ac759905b599e2c712185733137e6da1cac23d2d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  Add pTHX to locale_thread_init()


  Commit: cfcee3cc2ec399768ba8db28b97efd28bc9db394
      https://github.com/Perl/perl5/commit/cfcee3cc2ec399768ba8db28b97efd28bc9db394
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  l


  Commit: 8b16769d88cc7f4b33c6af447df6c36380f8a8f0
      https://github.com/Perl/perl5/commit/8b16769d88cc7f4b33c6af447df6c36380f8a8f0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embedvar.h
    M intrpvar.h
    M locale.c
    M sv.c

  Log Message:
  -----------
  PLcurlocales


  Commit: 23edda4e9a0d75c6e19ae9ecc539379d6a377df5
      https://github.com/Perl/perl5/commit/23edda4e9a0d75c6e19ae9ecc539379d6a377df5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embedvar.h
    M intrpvar.h
    M locale.c
    M sv.c

  Log Message:
  -----------
  Revert "PLcurlocales"

This reverts commit cd1fd76eac05b9ca866bb6f1dae6151767aa3d76.


  Commit: f6d7b430022f994cd645e39d1d85b45323296fd6
      https://github.com/Perl/perl5/commit/f6d7b430022f994cd645e39d1d85b45323296fd6
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M lib/locale.t

  Log Message:
  -----------
  lib/locale.t FILE debug


  Commit: 5059e5c0931bb698f339e221c22eb7f1bb1dbd6b
      https://github.com/Perl/perl5/commit/5059e5c0931bb698f339e221c22eb7f1bb1dbd6b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: windows DEBUG stmts


  Commit: 38947938d9eade0b3428dda09963d5a87cc183b3
      https://github.com/Perl/perl5/commit/38947938d9eade0b3428dda09963d5a87cc183b3
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M proto.h

  Log Message:
  -----------
  f save_to_buffer ignore return


  Commit: 6c7cae88c1d4bbf028e906f22ddb1de7d69c360c
      https://github.com/Perl/perl5/commit/6c7cae88c1d4bbf028e906f22ddb1de7d69c360c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Add layer for char classification/case change

This layer currently expands to just the layer below it, but that will
be changed in a future commit.


  Commit: 5aedc0a252f60492b421ceaa36eb41ec414087fb
      https://github.com/Perl/perl5/commit/5aedc0a252f60492b421ceaa36eb41ec414087fb
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod
    M t/porting/known_pod_issues.dat

  Log Message:
  -----------
  perlxs


  Commit: 07a66ef5c3c7e0773bbf5f13b49630dcdf6ad985
      https://github.com/Perl/perl5/commit/07a66ef5c3c7e0773bbf5f13b49630dcdf6ad985
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  XXX Temp dont use querylocale()


  Commit: 2473a82e7ab85538cfb3eda5442251910d946028
      https://github.com/Perl/perl5/commit/2473a82e7ab85538cfb3eda5442251910d946028
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  l


  Commit: 7e948814c6d8c505925ebcd55b6edde9583c1e69
      https://github.com/Perl/perl5/commit/7e948814c6d8c505925ebcd55b6edde9583c1e69
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M intrpvar.h

  Log Message:
  -----------
  intrpvar.h: Swap position of two defns; add comment


  Commit: fc7d20cdf6bde12df9d71342ed7a9d555edb7ad9
      https://github.com/Perl/perl5/commit/fc7d20cdf6bde12df9d71342ed7a9d555edb7ad9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M intrpvar.h
    M locale.c

  Log Message:
  -----------
  locale.c: Add 'Lazy' location changing

When comparing two strings for order under 'use locale', one can call
strcoll() which creates hidden modified versions of the strings based on
the locale's collation ordering, does the comparison, and then throws
away the modified versions.

Or one can call strxfrm() to create a non-hidden modified version of
each string, and then do a straight comparison.  The advantage here is
that you are in control of when to discard the modified version, and the
(expensive) transformation is done just once, no matter how many times a
comparison is done.

Perl assumes that a string will be compared multiple times, so the first
time it happens under 'use locale', strxfrm() is called, and the
modified string is attached via magic to the SV.  The modified string is
discarded if the string changes, or is recomputed if the locale has
changed since the computation was done.

The transformation generally occupies some multiple of size of the
original string.  Memory must be allocated to hold it.  For any given
locale, the amount is predictable for all strings, roughly via a linear
equation "mx+b", where x is the size of the original string.  By
computing 'm' and 'b' once, Perl can allocate enough memory to hold the
transformation, but not too much.  (m and b are adjusted up as necessary
as more strings get transformed.)  This minimizes mallocs.

But the calculation of m and b is somewhat expensive, and only necessary
if the program actually does a string compare under 'use locale'.

This commit defers the calculation until needed.  It does the bare
minimum of changes accomplish this.  The next commit will rearrange
things.


  Commit: d3da70524cba5eceb2b9cfe9a19baf5862ba5f6c
      https://github.com/Perl/perl5/commit/d3da70524cba5eceb2b9cfe9a19baf5862ba5f6c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move code, white-space, comment only

This moves the function created in the previous commit to a more logical
place in the file; just before its only call.  It also removes nested
blocks that are no longer necessary.


  Commit: 2efa889c448e2c186aa9a72e3b65c7ce1d0550f8
      https://github.com/Perl/perl5/commit/2efa889c448e2c186aa9a72e3b65c7ce1d0550f8
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M util.c

  Log Message:
  -----------
  XXX Configure strftime() is C89

We can assume it exists


  Commit: 6c50e95caa1c852bad331b7d62af7885cc0be20a
      https://github.com/Perl/perl5/commit/6c50e95caa1c852bad331b7d62af7885cc0be20a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h
    M sv.c

  Log Message:
  -----------
  perl.h: Change macro name to be C conformant

Leading underscores in names are undefined


  Commit: ce719c423e1b4b8c66d99b9595c9a4889d621cb5
      https://github.com/Perl/perl5/commit/ce719c423e1b4b8c66d99b9595c9a4889d621cb5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M patchlevel.h

  Log Message:
  -----------
  patchlevel.h: White-space only: properly indent


  Commit: 775a9d20250f5e9d4cbf54dfe92ee5db7db44cbc
      https://github.com/Perl/perl5/commit/775a9d20250f5e9d4cbf54dfe92ee5db7db44cbc
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M sv.c

  Log Message:
  -----------
  sv.c: Comments white-space only


  Commit: 997775f86c6d4c7755508d2cf1e8fb43d7fab87b
      https://github.com/Perl/perl5/commit/997775f86c6d4c7755508d2cf1e8fb43d7fab87b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M makedef.pl

  Log Message:
  -----------
  makedef.pl: Rmv obsolete symbol

This routine is now a static function, so needn't be in makedef.pl


  Commit: 9c6e8165168eb857096cb4e09dd14c98d68c4c0c
      https://github.com/Perl/perl5/commit/9c6e8165168eb857096cb4e09dd14c98d68c4c0c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Refactor internal debugging function

setlocale_debug_string() variants  now use Perl_form, a function I
didn't know existed when I originally wrote this code.


  Commit: 2c4e8c96fd85712567cc8f6340cb33b220965a66
      https://github.com/Perl/perl5/commit/2c4e8c96fd85712567cc8f6340cb33b220965a66
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M locale.c
    M proto.h

  Log Message:
  -----------
  locale.c: Add a fcn to display LC_ALL

This is trivial on a platform that has LC_ALL, but requires extra work
on platforms that don't.


  Commit: 3f40ad1abb050c06ebcc269567980aeb4d26cacb
      https://github.com/Perl/perl5/commit/3f40ad1abb050c06ebcc269567980aeb4d26cacb
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add debugging check

If we run across the REPLACEMENT CHARACTER, its likely a mismatch
between LC_CTYPE and another category.  This panics on debugging builds.


  Commit: d58e4c2cbe7118357c567b1848c4a096c032e5c4
      https://github.com/Perl/perl5/commit/d58e4c2cbe7118357c567b1848c4a096c032e5c4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Initialize variables to avoid runtime check

Initializing them means we no longer have to tess that they are non-NULL
each time they are accessed.


  Commit: 3bdcf835988ffcc9e647c2e3499488ea07c2d50b
      https://github.com/Perl/perl5/commit/3bdcf835988ffcc9e647c2e3499488ea07c2d50b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Initialize PL_underlying_numeric_obj

This probably doesn't matter, but it's better form to initialize it to a
sane value.


  Commit: bce5cbad8a3c896530816c74417c142004e09f94
      https://github.com/Perl/perl5/commit/bce5cbad8a3c896530816c74417c142004e09f94
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  t/loc_tools.pl: Print better failing test numbers

This test module is 'required' from other perl test files.  If it
encounters an error, it doesn't know how to report it.  What it does is
call fail() if available, and a home-grown one otherwise.  Prior to this
commit the home-grown version just made all tests number 0.  This commit
changes that to make them sequentially numbered from a very high
starting one, so as not to interfere with the outer calls.


  Commit: cfc56cac930f2f36993419ecb2922b90bf8146f0
      https://github.com/Perl/perl5/commit/cfc56cac930f2f36993419ecb2922b90bf8146f0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M cygwin/cygwin.c

  Log Message:
  -----------
  cygwin


  Commit: 7e26e39304757126d77fefa376582e7fcf4641e5
      https://github.com/Perl/perl5/commit/7e26e39304757126d77fefa376582e7fcf4641e5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M patchlevel.h

  Log Message:
  -----------
  Kludge to get cygwin to compile


  Commit: 81c702e9a2deb270a36ed00143ee54ec1a4e872a
      https://github.com/Perl/perl5/commit/81c702e9a2deb270a36ed00143ee54ec1a4e872a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M cygwin/cygwin.c

  Log Message:
  -----------
  cygwin use fcns


  Commit: 633a59f191a089ac683a8d50defd60267d7ccebd
      https://github.com/Perl/perl5/commit/633a59f191a089ac683a8d50defd60267d7ccebd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M cygwin/cygwin.c

  Log Message:
  -----------
  Revert "cygwin use fcns"

This reverts commit 24fbf2ccd8777c4af31eb9f8038d4cff7073b0c4.


  Commit: eb1a64f580565b372ef587688113b78673531959
      https://github.com/Perl/perl5/commit/eb1a64f580565b372ef587688113b78673531959
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  t/loc_tools.pl: Refactor _trylocale()

This function is used to see if a locale actually works on the current
platform.  I was not fully aware of the glitches if a category is in one
locale, and LC_CTYPE is in another.  This makes sure they are both the
same; and this results in some simplification.


  Commit: 21d9f443b0a9412d083eeaa775cd66bba3c974d3
      https://github.com/Perl/perl5/commit/21d9f443b0a9412d083eeaa775cd66bba3c974d3
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  t/loc_tools.pl: Fail earlier

Move the code that returns failure into the loop, so won't keep
iterating if failure is going to happen anyway.


  Commit: 142830e1860d8820ab614099a8394d88b50e51bd
      https://github.com/Perl/perl5/commit/142830e1860d8820ab614099a8394d88b50e51bd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  t/loc_tools.pl: Add checks

This verifies that we can restore a locale that we were previously in,
and makes sure that we don't stay in a locale that doesn't work well.
Doing so has led to crashes.


  Commit: ed50d12feb45ddac9c0c5c48eb98e8ce8e331244
      https://github.com/Perl/perl5/commit/ed50d12feb45ddac9c0c5c48eb98e8ce8e331244
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  t/loc_tools.pl: Don't allow commas in locale names

This was a problem in some buggy Windows versions.  This addition keeps
locales with this bug from being tested.


  Commit: 88bac914f1107b2836e327ecd84b24d82ab096ab
      https://github.com/Perl/perl5/commit/88bac914f1107b2836e327ecd84b24d82ab096ab
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  t/loc_tools.pl: Check for unsupported locales

This commit causes us not to view unsupported locales as legitimate for
testing.  Core dumps occurred on some platforms without this.

It looks for a diagnostic that the next commit in this series will
generate.


  Commit: e58f3c85f0c47ff2bb567c1c8e81e6200f15188c
      https://github.com/Perl/perl5/commit/e58f3c85f0c47ff2bb567c1c8e81e6200f15188c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M locale.c
    M pod/perldiag.pod

  Log Message:
  -----------
  XXXdelta Add locale unsupported test

Perl only suppots multi-byte locales that are UTF-8.  It turns out that
the others are worse than I thought, and if someone switches to one, the
program can crash.

This commit generates a default-on diagnostic when switching into such a
locale, and doesn't take the steps to add its data to the LC_CTYPE
database.

The check has been done in various releases for some time, but this
elevates its severity and tries to avoid actually using its data.

The previous commit caused the test suite to view such a locale as
unacceptable.


  Commit: a77c6090b733c9679a2486c18a06e4a17c668992
      https://github.com/Perl/perl5/commit/a77c6090b733c9679a2486c18a06e4a17c668992
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  t/loc_tools.pl: White-space only


  Commit: 457003266414dbede9c35486fa7daa0299d1efd2
      https://github.com/Perl/perl5/commit/457003266414dbede9c35486fa7daa0299d1efd2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  XXX t/loc_tools.pl: Temp debug


  Commit: eb43f9ebd23c1270185d2146ffb507eeb594c146
      https://github.com/Perl/perl5/commit/eb43f9ebd23c1270185d2146ffb507eeb594c146
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  t/loc_tools.pl: Swap lines

It doesn't matter much, but some warnings might be output by doing the
'use locale' before turning off warnings.


  Commit: f9224e8d8639cadfa11eb72cf4daad25305d3f88
      https://github.com/Perl/perl5/commit/f9224e8d8639cadfa11eb72cf4daad25305d3f88
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  XXX locale_threads


  Commit: c20ab0ead818ad6f16604bddde47b384e14858aa
      https://github.com/Perl/perl5/commit/c20ab0ead818ad6f16604bddde47b384e14858aa
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  XXX locale_threads debugging


  Commit: 83b1a309d0c5d9e21e6e9f89404f26073fe7394b
      https://github.com/Perl/perl5/commit/83b1a309d0c5d9e21e6e9f89404f26073fe7394b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M intrpvar.h

  Log Message:
  -----------
  intrpvar.h: White space only


  Commit: e06dc025200412cd2e658214736ef685c4671773
      https://github.com/Perl/perl5/commit/e06dc025200412cd2e658214736ef685c4671773
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M intrpvar.h

  Log Message:
  -----------
  intrpvar.h: Move some defns into appropriate #ifdefs


  Commit: 4c2ce94a737f698c5823730e2616469d0839e97f
      https://github.com/Perl/perl5/commit/4c2ce94a737f698c5823730e2616469d0839e97f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M embedvar.h
    M intrpvar.h
    M locale.c
    M proto.h
    M sv.c

  Log Message:
  -----------
  XXX finish msg,thread_init Revamp sync_locale, switch_to_global_locale

f


  Commit: dcfadc32ecd34d3952623726de146c04c3b3b535
      https://github.com/Perl/perl5/commit/dcfadc32ecd34d3952623726de146c04c3b3b535
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M sv.c

  Log Message:
  -----------
  sv.c: Rmv duplicate clones

These variables are already cloned when creating a thread


  Commit: cd6c6a54b6ef796a87037861287c81251dc9ed72
      https://github.com/Perl/perl5/commit/cd6c6a54b6ef796a87037861287c81251dc9ed72
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M sv.c

  Log Message:
  -----------
  sv.c: Rmv redundant clause

If threaded locales are being used, basic locales are too.  No need to
check both


  Commit: 6eff2f1c0f9831f719b99a92346062ada21759d0
      https://github.com/Perl/perl5/commit/6eff2f1c0f9831f719b99a92346062ada21759d0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h
    M lib/locale.t

  Log Message:
  -----------
  Fix isspace() handling on AIX

This box incorrectly thinks the NBSP is a graphic on many locales.
Overriding that makes these locales behave like proper POSIX ones.


  Commit: fd11ea68500be2cc797a36ce227d5eb81c92b49b
      https://github.com/Perl/perl5/commit/fd11ea68500be2cc797a36ce227d5eb81c92b49b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M sv.c

  Log Message:
  -----------
  sv.c: White-space only

Replace leading tabs with spaces


  Commit: 0f7fa2254013ca1517a8e1ec4371aa22f645314c
      https://github.com/Perl/perl5/commit/0f7fa2254013ca1517a8e1ec4371aa22f645314c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M hints/cygwin.sh

  Log Message:
  -----------
  XXX check if really necessary after everything: Don't use POSIX 2008 locale

This has been found to be buggy leading to dying inside the newlocale()
in S_emulate_setlocale_i()


  Commit: 9770d8e9eebf92b16586bdbb67972b5c7f25b6ab
      https://github.com/Perl/perl5/commit/9770d8e9eebf92b16586bdbb67972b5c7f25b6ab
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M lib/locale.t

  Log Message:
  -----------
  lib/locale.t: Use I18N::Langinfo, not POSIX::localeconv()

Now that Langinfo is ported to every box, it requires less work than
localeconv(), and offers more choices.  This commit changes to use it,
and for more info when debugging, gets some additional info from it.


  Commit: f30479c5bc3090f16e5aff59a50c90ad3be007e8
      https://github.com/Perl/perl5/commit/f30479c5bc3090f16e5aff59a50c90ad3be007e8
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  XXX cygwin debugging small macro buf


  Commit: afcfdedb867970d4c19a19e1598aad11274b35b8
      https://github.com/Perl/perl5/commit/afcfdedb867970d4c19a19e1598aad11274b35b8
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Avoid unnecessary calls to set_numeric_standard()

Prior to this commit, set_numeric_standard() was called unconditionally,
and it could decide if it should do anything or not.  But the variable
that indicates this is available to the caller, so by testing it, it can
avoid the call, which is most likely the case.


  Commit: 5b386cb7a9d30bed6368dc81c7e8c9685d6e4d15
      https://github.com/Perl/perl5/commit/5b386cb7a9d30bed6368dc81c7e8c9685d6e4d15
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  XXX perl.h: Debugging trace across all files


  Commit: d1e012965709a65c4d88496522ddb0d89165e1fb
      https://github.com/Perl/perl5/commit/d1e012965709a65c4d88496522ddb0d89165e1fb
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  XXX Use internal querylocale on Linux

XXX Need to bisect to see where this goes bad
XXX Is effectively a no-op due to other debugging code


  Commit: 6470eb14b0605eaa3f63554afb8b80d03c7d5b73
      https://github.com/Perl/perl5/commit/6470eb14b0605eaa3f63554afb8b80d03c7d5b73
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-04-28 (Wed, 28 Apr 2021)

  Changed paths:
    M cpan/Time-Piece/Piece.xs
    M dist/ExtUtils-ParseXS/lib/perlxs.pod
    M handy.h
    M iperlsys.h
    M locale.c
    M perl.h
    M pod/perllocale.pod
    M regen/reentr.pl
    M regexec.c
    M util.c

  Log Message:
  -----------
  Notes


  Commit: d2016003a30e82b7141d899fe3a6a263d090471d
      https://github.com/Perl/perl5/commit/d2016003a30e82b7141d899fe3a6a263d090471d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-02 (Sun, 02 May 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M ext/I18N-Langinfo/t/Langinfo.t
    M ext/POSIX/POSIX.xs
    M intrpvar.h
    M lib/locale.t
    M lib/locale_threads.t
    M locale.c
    M mg.c
    M perl.h
    M proto.h
    M regexec.c
    M t/loc_tools.pl
    M t/run/locale.t

  Log Message:
  -----------
  52


Compare: https://github.com/Perl/perl5/compare/0ced87c5b411%5E...d2016003a30e



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About