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

[Perl/perl5] e45f17: perlapi: Rmv repeated word

From:
Karl Williamson via perl5-changes
Date:
May 3, 2021 20:43
Subject:
[Perl/perl5] e45f17: perlapi: Rmv repeated word
Message ID:
Perl/perl5/push/refs/heads/smoke-me/khw-locale/694198-ec4465@github.com
  Branch: refs/heads/smoke-me/khw-locale
  Home:   https://github.com/Perl/perl5
  Commit: e45f17a6821691c69c27cc30353e379774f5fe56
      https://github.com/Perl/perl5/commit/e45f17a6821691c69c27cc30353e379774f5fe56
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M sv.c

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


  Commit: f38e3784c179e5644635394251248750c77c2ffd
      https://github.com/Perl/perl5/commit/f38e3784c179e5644635394251248750c77c2ffd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 5f13bd3205eb90de5dbe783cb0d06ecc69f81a66
      https://github.com/Perl/perl5/commit/5f13bd3205eb90de5dbe783cb0d06ecc69f81a66
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: b62ea0b875fcb1d3357381303890fde0598f372f
      https://github.com/Perl/perl5/commit/b62ea0b875fcb1d3357381303890fde0598f372f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: d8a3904d240ccace7b7628c23f2f879f51d06dd7
      https://github.com/Perl/perl5/commit/d8a3904d240ccace7b7628c23f2f879f51d06dd7
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: debd5aeb058ba194a3207266304915d4e4ab00cf
      https://github.com/Perl/perl5/commit/debd5aeb058ba194a3207266304915d4e4ab00cf
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 2bd038089917ce39b48a5319a32d5ac0062afcc0
      https://github.com/Perl/perl5/commit/2bd038089917ce39b48a5319a32d5ac0062afcc0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 502b0375e8501c2aad617702607aebbb60b431af
      https://github.com/Perl/perl5/commit/502b0375e8501c2aad617702607aebbb60b431af
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: fb27d4e552132dd001f3712d47954d785edddab1
      https://github.com/Perl/perl5/commit/fb27d4e552132dd001f3712d47954d785edddab1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M handy.h

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


  Commit: 800f5a36e8d552b34d51a0fa8cae71cf6e033d4c
      https://github.com/Perl/perl5/commit/800f5a36e8d552b34d51a0fa8cae71cf6e033d4c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M handy.h

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


  Commit: ab1c33d73fb62538a41c25c67fc063f724fb6e2a
      https://github.com/Perl/perl5/commit/ab1c33d73fb62538a41c25c67fc063f724fb6e2a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ffacceb4d62ba306e3ac643fb50895ca81c74303
      https://github.com/Perl/perl5/commit/ffacceb4d62ba306e3ac643fb50895ca81c74303
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: c3411dc7775db7ba8e3fb368ad4ce3241f74b1de
      https://github.com/Perl/perl5/commit/c3411dc7775db7ba8e3fb368ad4ce3241f74b1de
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: fa86ea757e41d83883e1b0da7e97150964a6f0ab
      https://github.com/Perl/perl5/commit/fa86ea757e41d83883e1b0da7e97150964a6f0ab
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 775a7e34a6dab617b6c740229faa835f42758e50
      https://github.com/Perl/perl5/commit/775a7e34a6dab617b6c740229faa835f42758e50
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 0f22e81e86aa4ddef47a817ab475f695eb541359
      https://github.com/Perl/perl5/commit/0f22e81e86aa4ddef47a817ab475f695eb541359
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: fec832b1b4e12ac104010e0c15ec90f053f0e37c
      https://github.com/Perl/perl5/commit/fec832b1b4e12ac104010e0c15ec90f053f0e37c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 871143863b49f02246f941e3356b3635a7b72615
      https://github.com/Perl/perl5/commit/871143863b49f02246f941e3356b3635a7b72615
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 3aa078ad9e6125bdaf7a2688a8735b06f141a491
      https://github.com/Perl/perl5/commit/3aa078ad9e6125bdaf7a2688a8735b06f141a491
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 39fc869333e193d8a3b7c55acb10e44c278bb5b8
      https://github.com/Perl/perl5/commit/39fc869333e193d8a3b7c55acb10e44c278bb5b8
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 5734a595bf9a97255877d7d9a42687d926813893
      https://github.com/Perl/perl5/commit/5734a595bf9a97255877d7d9a42687d926813893
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 995db790dea5aad16bd5f7b70bc9a3e95c0f6ee8
      https://github.com/Perl/perl5/commit/995db790dea5aad16bd5f7b70bc9a3e95c0f6ee8
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 24b845190a155917de170b915bf569bce7d9305d
      https://github.com/Perl/perl5/commit/24b845190a155917de170b915bf569bce7d9305d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M handy.h

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


  Commit: bab1b8a90924d18b8582eecee691cbf6813f388d
      https://github.com/Perl/perl5/commit/bab1b8a90924d18b8582eecee691cbf6813f388d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M handy.h

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

As a convenience to other code.


  Commit: fff71cab72708309fa46f923423415195b678ff8
      https://github.com/Perl/perl5/commit/fff71cab72708309fa46f923423415195b678ff8
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 55898ed95d3e7de524328a09010440f3188942d7
      https://github.com/Perl/perl5/commit/55898ed95d3e7de524328a09010440f3188942d7
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: b49539507205e9581539016b2534edee358f1855
      https://github.com/Perl/perl5/commit/b49539507205e9581539016b2534edee358f1855
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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


  Commit: f905310a4cd65165006b77438ea2618a9ec75017
      https://github.com/Perl/perl5/commit/f905310a4cd65165006b77438ea2618a9ec75017
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 8cab5e1607a7a4bea4e602349950b8018a855628
      https://github.com/Perl/perl5/commit/8cab5e1607a7a4bea4e602349950b8018a855628
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 53812dd81be7c9fe32493dfbee7ad4f19d563338
      https://github.com/Perl/perl5/commit/53812dd81be7c9fe32493dfbee7ad4f19d563338
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: d610344a36f4620414807aa18d2b96f57b449f5f
      https://github.com/Perl/perl5/commit/d610344a36f4620414807aa18d2b96f57b449f5f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 0daf3b5fa81b38992e4d351cdeb4cb0a4d50dc44
      https://github.com/Perl/perl5/commit/0daf3b5fa81b38992e4d351cdeb4cb0a4d50dc44
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: c7f9b024d250138cb623e44e7d5a4e2a5471bf28
      https://github.com/Perl/perl5/commit/c7f9b024d250138cb623e44e7d5a4e2a5471bf28
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 694873dcf2a4c1730aafb824f48ab1d78c7a873a
      https://github.com/Perl/perl5/commit/694873dcf2a4c1730aafb824f48ab1d78c7a873a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: def6cf0b9d7dfd37da4b80672c917a4b70f7816e
      https://github.com/Perl/perl5/commit/def6cf0b9d7dfd37da4b80672c917a4b70f7816e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 7e8a45cd6d060c0fbe596992217c2ef4ac25bfa5
      https://github.com/Perl/perl5/commit/7e8a45cd6d060c0fbe596992217c2ef4ac25bfa5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 8a9f6eb9219f8ec31c9d092e69ab8376b165ef74
      https://github.com/Perl/perl5/commit/8a9f6eb9219f8ec31c9d092e69ab8376b165ef74
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: b2e8494e3879242615c66582ac0b348cfdd08546
      https://github.com/Perl/perl5/commit/b2e8494e3879242615c66582ac0b348cfdd08546
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 078bbb640093f308c2cd9d0aa69119c5362d7500
      https://github.com/Perl/perl5/commit/078bbb640093f308c2cd9d0aa69119c5362d7500
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 45429a942e3325370eca4434780568fc8f5add82
      https://github.com/Perl/perl5/commit/45429a942e3325370eca4434780568fc8f5add82
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: c7fd2fb054d07a72489f700b14e6f6524b5bf80f
      https://github.com/Perl/perl5/commit/c7fd2fb054d07a72489f700b14e6f6524b5bf80f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 5005e3238e4261748e2c2b88c199e738c3aec476
      https://github.com/Perl/perl5/commit/5005e3238e4261748e2c2b88c199e738c3aec476
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 0f0fbfa207d599af0f7d92187534922152866fb1
      https://github.com/Perl/perl5/commit/0f0fbfa207d599af0f7d92187534922152866fb1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ad22e411491f2b1e666236219c38af186f1879fd
      https://github.com/Perl/perl5/commit/ad22e411491f2b1e666236219c38af186f1879fd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 1c05b8463c9babffb8b722c3c6e6bf68d9cc1e55
      https://github.com/Perl/perl5/commit/1c05b8463c9babffb8b722c3c6e6bf68d9cc1e55
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 89648788267a37dba63c14e6ec8f017f6f8a2006
      https://github.com/Perl/perl5/commit/89648788267a37dba63c14e6ec8f017f6f8a2006
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 392b130543f990c46ab732fec28bcbd67b81c7b0
      https://github.com/Perl/perl5/commit/392b130543f990c46ab732fec28bcbd67b81c7b0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: af41b6f6686983148eae0318d49644da95314f0e
      https://github.com/Perl/perl5/commit/af41b6f6686983148eae0318d49644da95314f0e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 23f7be031a6a94a73095e58bb69644a275f1fbad
      https://github.com/Perl/perl5/commit/23f7be031a6a94a73095e58bb69644a275f1fbad
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: a7cd1463d45403b251111bdc2bc99dbbfb546722
      https://github.com/Perl/perl5/commit/a7cd1463d45403b251111bdc2bc99dbbfb546722
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ada56cca2dd8291eafaa5a6b2f715b8dcaa9fc30
      https://github.com/Perl/perl5/commit/ada56cca2dd8291eafaa5a6b2f715b8dcaa9fc30
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 84679c2931953a8a38d46e35f99ca1477502caa6
      https://github.com/Perl/perl5/commit/84679c2931953a8a38d46e35f99ca1477502caa6
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: b55594423749d2c4d7347c34681e9065d6d55b2c
      https://github.com/Perl/perl5/commit/b55594423749d2c4d7347c34681e9065d6d55b2c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 5dad73979b6a2a26178c9560f60fcae48608d801
      https://github.com/Perl/perl5/commit/5dad73979b6a2a26178c9560f60fcae48608d801
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: d4d533a39a6443579c6bf9409033c90390471483
      https://github.com/Perl/perl5/commit/d4d533a39a6443579c6bf9409033c90390471483
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 144c3f1d67e630067dbaa0eb92305cc96d786eb2
      https://github.com/Perl/perl5/commit/144c3f1d67e630067dbaa0eb92305cc96d786eb2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 5e82dce6bf2ba8f754f29cf6ce79d94096db2156
      https://github.com/Perl/perl5/commit/5e82dce6bf2ba8f754f29cf6ce79d94096db2156
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 5807dff8c55b23635a9318fbd7138de5367f44a5
      https://github.com/Perl/perl5/commit/5807dff8c55b23635a9318fbd7138de5367f44a5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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

A future commit will want this


  Commit: c9eb14c0618cc844d7ccf356aafb965c7c07383d
      https://github.com/Perl/perl5/commit/c9eb14c0618cc844d7ccf356aafb965c7c07383d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 6aee7ef00ea693a879fcfd1eb98577de66f84853
      https://github.com/Perl/perl5/commit/6aee7ef00ea693a879fcfd1eb98577de66f84853
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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


  Commit: ed7dbe1d1c8c3c93978c84e6c85d614c0ca42677
      https://github.com/Perl/perl5/commit/ed7dbe1d1c8c3c93978c84e6c85d614c0ca42677
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 90bcf6177b39faa8c542e28ece811fe3502edbbe
      https://github.com/Perl/perl5/commit/90bcf6177b39faa8c542e28ece811fe3502edbbe
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 36c0b3e242a4169baee1c0788bea8b8466dbf071
      https://github.com/Perl/perl5/commit/36c0b3e242a4169baee1c0788bea8b8466dbf071
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 4810a4f0e256d68eff6c14ad9d1137b806d305aa
      https://github.com/Perl/perl5/commit/4810a4f0e256d68eff6c14ad9d1137b806d305aa
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: a58c22c38b14bf4b8fb24fb09fa0d3a3ff360c7e
      https://github.com/Perl/perl5/commit/a58c22c38b14bf4b8fb24fb09fa0d3a3ff360c7e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 0470c6aa1b08aef9c2d741d6d9f5fdc170223bee
      https://github.com/Perl/perl5/commit/0470c6aa1b08aef9c2d741d6d9f5fdc170223bee
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 5cd26fd3230fc0266e3f1e48682d61624d6dd8ea
      https://github.com/Perl/perl5/commit/5cd26fd3230fc0266e3f1e48682d61624d6dd8ea
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 5fe22bfe35200f9085d9f3a26a75b877bad267d2
      https://github.com/Perl/perl5/commit/5fe22bfe35200f9085d9f3a26a75b877bad267d2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: bcd4acb7b3dbb188886038b9af36a9ee1e2f4231
      https://github.com/Perl/perl5/commit/bcd4acb7b3dbb188886038b9af36a9ee1e2f4231
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ff904350ec835295d50a8deff3703b03c70f93df
      https://github.com/Perl/perl5/commit/ff904350ec835295d50a8deff3703b03c70f93df
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 06deb18b8dfa253787b56036949949b23ed4b2ec
      https://github.com/Perl/perl5/commit/06deb18b8dfa253787b56036949949b23ed4b2ec
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: eaa6ea1aead51e9f252514555b25dc914694b1af
      https://github.com/Perl/perl5/commit/eaa6ea1aead51e9f252514555b25dc914694b1af
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 643fc97e4ecacebb657ce3708e77ad7e5da275ee
      https://github.com/Perl/perl5/commit/643fc97e4ecacebb657ce3708e77ad7e5da275ee
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: faac2ba0011d9be2942917c86df2056eea15b2ed
      https://github.com/Perl/perl5/commit/faac2ba0011d9be2942917c86df2056eea15b2ed
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ba6e0e3eb5c6e6805a8fc81cc8b2991021983fcc
      https://github.com/Perl/perl5/commit/ba6e0e3eb5c6e6805a8fc81cc8b2991021983fcc
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs

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

Properly indent some nested preprocessor directives


  Commit: a2e1eaa56b0bab1d8f0b131a7177bbf0a504f56c
      https://github.com/Perl/perl5/commit/a2e1eaa56b0bab1d8f0b131a7177bbf0a504f56c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: eed7bd07f4856245b71f76e13f25b0751e3a466d
      https://github.com/Perl/perl5/commit/eed7bd07f4856245b71f76e13f25b0751e3a466d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: d4a301fe0318d923c73e124d3585fdf6596fbbf1
      https://github.com/Perl/perl5/commit/d4a301fe0318d923c73e124d3585fdf6596fbbf1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: c35e13a0a5cdcc79deed9f25da69e84fc75da830
      https://github.com/Perl/perl5/commit/c35e13a0a5cdcc79deed9f25da69e84fc75da830
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 088b587481034ca1c928139c2f7d3a4896f86fcc
      https://github.com/Perl/perl5/commit/088b587481034ca1c928139c2f7d3a4896f86fcc
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: da43bd1077fb2cf20bac94e0fa7e5613fd2406df
      https://github.com/Perl/perl5/commit/da43bd1077fb2cf20bac94e0fa7e5613fd2406df
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 478756be1442b0da3daeebecc7571257fffc63db
      https://github.com/Perl/perl5/commit/478756be1442b0da3daeebecc7571257fffc63db
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 853365f49d62d6cbe80b5f36ee996858eafd9a98
      https://github.com/Perl/perl5/commit/853365f49d62d6cbe80b5f36ee996858eafd9a98
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 13dd87e140856a089010cfd331532f3f83a1ca62
      https://github.com/Perl/perl5/commit/13dd87e140856a089010cfd331532f3f83a1ca62
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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

This allows some preprocessor conditionals to be removed


  Commit: f6e1bfa8afb8479d9914bab539c74f0715ea39d2
      https://github.com/Perl/perl5/commit/f6e1bfa8afb8479d9914bab539c74f0715ea39d2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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

strEQ and && already return booleans


  Commit: a86f0f6727c88af3d6588d8447d787b0d4d7ab26
      https://github.com/Perl/perl5/commit/a86f0f6727c88af3d6588d8447d787b0d4d7ab26
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: bb03b9f7d1f8db64c70778758280473f2ab4762a
      https://github.com/Perl/perl5/commit/bb03b9f7d1f8db64c70778758280473f2ab4762a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: d0164862679d8fbbd0a86bba5d12d9f44b78c9f5
      https://github.com/Perl/perl5/commit/d0164862679d8fbbd0a86bba5d12d9f44b78c9f5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 8d59706adff4ebeb011fcbb92f18667d1f2ddc06
      https://github.com/Perl/perl5/commit/8d59706adff4ebeb011fcbb92f18667d1f2ddc06
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 17e5879adc648518ccfa89425eaa7fdf5f8966ab
      https://github.com/Perl/perl5/commit/17e5879adc648518ccfa89425eaa7fdf5f8966ab
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: a99d0cc7b11296ce66db33a7d59eb15929aa338c
      https://github.com/Perl/perl5/commit/a99d0cc7b11296ce66db33a7d59eb15929aa338c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: adc55047acfa0f9cecff9e91bc1906e190a76776
      https://github.com/Perl/perl5/commit/adc55047acfa0f9cecff9e91bc1906e190a76776
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 99842467b2c45310a3a4f5d2c1dcdaf7fc06ef67
      https://github.com/Perl/perl5/commit/99842467b2c45310a3a4f5d2c1dcdaf7fc06ef67
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 86af52c5a147f3eb683a50c364578c823973f6c4
      https://github.com/Perl/perl5/commit/86af52c5a147f3eb683a50c364578c823973f6c4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: d9d5ea6ec6bb979fe738d7d01896142b38ab9cdd
      https://github.com/Perl/perl5/commit/d9d5ea6ec6bb979fe738d7d01896142b38ab9cdd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 24d690dd876e74ea9bd17c6a02fb59c010531680
      https://github.com/Perl/perl5/commit/24d690dd876e74ea9bd17c6a02fb59c010531680
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 18024e7c550e1db01a71db245139eba0004ce707
      https://github.com/Perl/perl5/commit/18024e7c550e1db01a71db245139eba0004ce707
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 0045b4c0f0f8b1e8df51b1d7056b96c16603726f
      https://github.com/Perl/perl5/commit/0045b4c0f0f8b1e8df51b1d7056b96c16603726f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: f011be08dd15da0d8fadaaf83cb0d19c5fd67165
      https://github.com/Perl/perl5/commit/f011be08dd15da0d8fadaaf83cb0d19c5fd67165
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 1e56d24f0bec873678d63a4d41cbb21c2e9a269a
      https://github.com/Perl/perl5/commit/1e56d24f0bec873678d63a4d41cbb21c2e9a269a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 7e36d96c51fceafc8e49681b7baccf3b6cd77328
      https://github.com/Perl/perl5/commit/7e36d96c51fceafc8e49681b7baccf3b6cd77328
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ab7378efb1bde6a19aaa77cd04c456db728da2de
      https://github.com/Perl/perl5/commit/ab7378efb1bde6a19aaa77cd04c456db728da2de
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 02990eb2f37881107d00ce54f45aad1fb0624f68
      https://github.com/Perl/perl5/commit/02990eb2f37881107d00ce54f45aad1fb0624f68
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: b35077edc207ae11b283d16e3ed93653cda02950
      https://github.com/Perl/perl5/commit/b35077edc207ae11b283d16e3ed93653cda02950
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: b770847c67a821971e1f3786d7db58f099fcffd1
      https://github.com/Perl/perl5/commit/b770847c67a821971e1f3786d7db58f099fcffd1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: e13edc6bf2078d1c27c3ad445ab0b700f7b38ba2
      https://github.com/Perl/perl5/commit/e13edc6bf2078d1c27c3ad445ab0b700f7b38ba2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 51d0098d8f7727ee25020b4a67562b369b9fe00f
      https://github.com/Perl/perl5/commit/51d0098d8f7727ee25020b4a67562b369b9fe00f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: dd115d1cd495a1edc2063e6f8a5e552417940baa
      https://github.com/Perl/perl5/commit/dd115d1cd495a1edc2063e6f8a5e552417940baa
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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


  Commit: 64696a978f3c36789ac27fcd45d03e971e7c83a4
      https://github.com/Perl/perl5/commit/64696a978f3c36789ac27fcd45d03e971e7c83a4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 2335180c8442f7be02926c365ceb47e1a1b2f791
      https://github.com/Perl/perl5/commit/2335180c8442f7be02926c365ceb47e1a1b2f791
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 5db2e67ea1c3c458c28e65ab7b43ebfe01110c44
      https://github.com/Perl/perl5/commit/5db2e67ea1c3c458c28e65ab7b43ebfe01110c44
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: f131bcb2024e25bf4880d120c09ba98ee8907197
      https://github.com/Perl/perl5/commit/f131bcb2024e25bf4880d120c09ba98ee8907197
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M mg.c

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

Indent newly formed block from the previous commit.


  Commit: 38c88acbbb6166f5ed2bc5d9a536f9ee1d344856
      https://github.com/Perl/perl5/commit/38c88acbbb6166f5ed2bc5d9a536f9ee1d344856
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 3e8be300f31d2da11f7a3d7cd810beea3f62c1da
      https://github.com/Perl/perl5/commit/3e8be300f31d2da11f7a3d7cd810beea3f62c1da
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ea36ce0dbee0996dfc2eab68c9b5ea9c1734a276
      https://github.com/Perl/perl5/commit/ea36ce0dbee0996dfc2eab68c9b5ea9c1734a276
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 3321ca6e21318be956d44f9955df8c5a287573fa
      https://github.com/Perl/perl5/commit/3321ca6e21318be956d44f9955df8c5a287573fa
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: da30bad0f39113d57bc099741e4078626b7a5613
      https://github.com/Perl/perl5/commit/da30bad0f39113d57bc099741e4078626b7a5613
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ce9b0ce0b63a8a1b0d049b1b0176f2942a7ea85f
      https://github.com/Perl/perl5/commit/ce9b0ce0b63a8a1b0d049b1b0176f2942a7ea85f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ecc241a453f4bc533f2cf178be6a867baa34e53d
      https://github.com/Perl/perl5/commit/ecc241a453f4bc533f2cf178be6a867baa34e53d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: f60e1715bad9e6558e940a2296b890c280f3073c
      https://github.com/Perl/perl5/commit/f60e1715bad9e6558e940a2296b890c280f3073c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 2ed43a04a6134f77aca6d31f4cd45eefa2c5212f
      https://github.com/Perl/perl5/commit/2ed43a04a6134f77aca6d31f4cd45eefa2c5212f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 582126e96e6ee4ccc46a046e7f00a9f96dc085de
      https://github.com/Perl/perl5/commit/582126e96e6ee4ccc46a046e7f00a9f96dc085de
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ae9147edbc3f62d4f1c21e4edf772c2ea4c5ad58
      https://github.com/Perl/perl5/commit/ae9147edbc3f62d4f1c21e4edf772c2ea4c5ad58
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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


  Commit: d54417ac140b458c232fbd48e3bd98d6cc3f6254
      https://github.com/Perl/perl5/commit/d54417ac140b458c232fbd48e3bd98d6cc3f6254
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 40ca0273b27439e6e422431a12036233b38862ab
      https://github.com/Perl/perl5/commit/40ca0273b27439e6e422431a12036233b38862ab
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 9f91d4354ea0adc11eb5fd3246e362ad9f654c07
      https://github.com/Perl/perl5/commit/9f91d4354ea0adc11eb5fd3246e362ad9f654c07
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 94edf6cf634c14cb261283ddb4d7f55d92c29c28
      https://github.com/Perl/perl5/commit/94edf6cf634c14cb261283ddb4d7f55d92c29c28
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 2a2a04092599ef83b5a48888d448ee40e1a11b2c
      https://github.com/Perl/perl5/commit/2a2a04092599ef83b5a48888d448ee40e1a11b2c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 4883d148cbc4c07ddc6ae5a6569e6b3ec09690bc
      https://github.com/Perl/perl5/commit/4883d148cbc4c07ddc6ae5a6569e6b3ec09690bc
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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

This avoids setting this until needed.


  Commit: 80c06af32bfd9651c1371ab450064db14f1f8e24
      https://github.com/Perl/perl5/commit/80c06af32bfd9651c1371ab450064db14f1f8e24
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 978a9e7b2f0610a908dcf161541533cd9e889638
      https://github.com/Perl/perl5/commit/978a9e7b2f0610a908dcf161541533cd9e889638
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: e5737260b75b039fde3718a9d0db20bbddbf5bb2
      https://github.com/Perl/perl5/commit/e5737260b75b039fde3718a9d0db20bbddbf5bb2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: c40b4128497c7f2c94cf419222a12aabd63d79ec
      https://github.com/Perl/perl5/commit/c40b4128497c7f2c94cf419222a12aabd63d79ec
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: f186f9f6b8ea5bc54bb9c9ed81ffff61e2e2f9f3
      https://github.com/Perl/perl5/commit/f186f9f6b8ea5bc54bb9c9ed81ffff61e2e2f9f3
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 2c9f08bfb4dc07a65e3653a2abc2f92aaf64343a
      https://github.com/Perl/perl5/commit/2c9f08bfb4dc07a65e3653a2abc2f92aaf64343a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 2ff2a9a46f6b87069a80c618742cbe36174b2a3a
      https://github.com/Perl/perl5/commit/2ff2a9a46f6b87069a80c618742cbe36174b2a3a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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


  Commit: 98ec4935a68df7dd880195f6047e6bbb04a22abd
      https://github.com/Perl/perl5/commit/98ec4935a68df7dd880195f6047e6bbb04a22abd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: a9e9f3542895ca0357461552d07254141d77bb27
      https://github.com/Perl/perl5/commit/a9e9f3542895ca0357461552d07254141d77bb27
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 033d9b7232e4f4640edb8181fd5c71c226a64c07
      https://github.com/Perl/perl5/commit/033d9b7232e4f4640edb8181fd5c71c226a64c07
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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


  Commit: 16ec7b1024ddc08edd819efc7c32ecd2c76b2736
      https://github.com/Perl/perl5/commit/16ec7b1024ddc08edd819efc7c32ecd2c76b2736
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 07412406f0c1a5a2b0b630b00a5fff49d5e4ec8e
      https://github.com/Perl/perl5/commit/07412406f0c1a5a2b0b630b00a5fff49d5e4ec8e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 21912df866206958f5cb2a35f9dd2c7ccc26e659
      https://github.com/Perl/perl5/commit/21912df866206958f5cb2a35f9dd2c7ccc26e659
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ff6d95ac6a943f55d8652573330026a446047b7e
      https://github.com/Perl/perl5/commit/ff6d95ac6a943f55d8652573330026a446047b7e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 843d63c7ce5769dbf3f901ee07d427c4514cd6c9
      https://github.com/Perl/perl5/commit/843d63c7ce5769dbf3f901ee07d427c4514cd6c9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 1429c7ffea780555f5bf9aae9ddbaec36dee47d9
      https://github.com/Perl/perl5/commit/1429c7ffea780555f5bf9aae9ddbaec36dee47d9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M lib/locale.t

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


  Commit: 545afd5c6fac263f8e7983364ba671692c65ec9c
      https://github.com/Perl/perl5/commit/545afd5c6fac263f8e7983364ba671692c65ec9c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 95aacb4f6a06e4c124251c155165ad47c7549357
      https://github.com/Perl/perl5/commit/95aacb4f6a06e4c124251c155165ad47c7549357
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 458fe3e81abd39f460dad2318aa5e5859a204bb2
      https://github.com/Perl/perl5/commit/458fe3e81abd39f460dad2318aa5e5859a204bb2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: d63097d669ea31db0292ff5dab9cc01a4ea03f07
      https://github.com/Perl/perl5/commit/d63097d669ea31db0292ff5dab9cc01a4ea03f07
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 56d5a2925ebbb01ef5f6504b003dc888b8dc7c38
      https://github.com/Perl/perl5/commit/56d5a2925ebbb01ef5f6504b003dc888b8dc7c38
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 5dc16ee4a36c632b4a7dc8ea94d27a9533211576
      https://github.com/Perl/perl5/commit/5dc16ee4a36c632b4a7dc8ea94d27a9533211576
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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

Hex is the more familiar form


  Commit: 58360fab0d416457d23cbfb4435157fb4594d552
      https://github.com/Perl/perl5/commit/58360fab0d416457d23cbfb4435157fb4594d552
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: d1060390ff7233b3d416feb3054a3fb5fff27318
      https://github.com/Perl/perl5/commit/d1060390ff7233b3d416feb3054a3fb5fff27318
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: bf5b01a718c22b7fcf8ba1056cebab234bc16409
      https://github.com/Perl/perl5/commit/bf5b01a718c22b7fcf8ba1056cebab234bc16409
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: d2da9ed543d7abec71897c15d6d3945bdc01898f
      https://github.com/Perl/perl5/commit/d2da9ed543d7abec71897c15d6d3945bdc01898f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 0e043490bb3b670877e89d9ee40c66245d0df2ad
      https://github.com/Perl/perl5/commit/0e043490bb3b670877e89d9ee40c66245d0df2ad
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 20a2a3f66eb51825719cdc82623c76eb6d6fbe1f
      https://github.com/Perl/perl5/commit/20a2a3f66eb51825719cdc82623c76eb6d6fbe1f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 41921c9c1a01efefceab5c926193b70bd95c930c
      https://github.com/Perl/perl5/commit/41921c9c1a01efefceab5c926193b70bd95c930c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 534642e216f1c3f63f4724eff9042c7bfc45c189
      https://github.com/Perl/perl5/commit/534642e216f1c3f63f4724eff9042c7bfc45c189
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 20e6fa20b0669ec6f38550c5c80321a25e6600d0
      https://github.com/Perl/perl5/commit/20e6fa20b0669ec6f38550c5c80321a25e6600d0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 08945b480c72f96e4ee0dcea1d40a060b1c7f345
      https://github.com/Perl/perl5/commit/08945b480c72f96e4ee0dcea1d40a060b1c7f345
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 18352139ffaedca779e78ecbe79ad389cc30b044
      https://github.com/Perl/perl5/commit/18352139ffaedca779e78ecbe79ad389cc30b044
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M perl.h

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

This simplifies slightly, and will allow further simplification


  Commit: ef957ed135b90e39d58ca38f6aa27346529bf1a6
      https://github.com/Perl/perl5/commit/ef957ed135b90e39d58ca38f6aa27346529bf1a6
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M perl.h

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

To enable future simplifications


  Commit: 5b116693bc350e4acf54c32dd50c62db552e2036
      https://github.com/Perl/perl5/commit/5b116693bc350e4acf54c32dd50c62db552e2036
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 4d507dd5e2b9e57fc1236a603a7bab519a0706b1
      https://github.com/Perl/perl5/commit/4d507dd5e2b9e57fc1236a603a7bab519a0706b1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: e7246ebb9c24a7ab84531805fa176ccded330bdb
      https://github.com/Perl/perl5/commit/e7246ebb9c24a7ab84531805fa176ccded330bdb
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: a2feb58232a4e822390ce0e0dbd33fcc56d8ac0c
      https://github.com/Perl/perl5/commit/a2feb58232a4e822390ce0e0dbd33fcc56d8ac0c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M pp.c

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


  Commit: 80ee20b666140a07b871bf094b7454d72ceae256
      https://github.com/Perl/perl5/commit/80ee20b666140a07b871bf094b7454d72ceae256
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: a0f2ded21b41b05c9e7823796a08ba87ec190398
      https://github.com/Perl/perl5/commit/a0f2ded21b41b05c9e7823796a08ba87ec190398
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 09a8b647edb0e38fce5a0812439d4a5c5862e015
      https://github.com/Perl/perl5/commit/09a8b647edb0e38fce5a0812439d4a5c5862e015
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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


  Commit: 874c306e32f8b67737877550f2a870da089c21ad
      https://github.com/Perl/perl5/commit/874c306e32f8b67737877550f2a870da089c21ad
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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


  Commit: 814c80463b40864fc9c460e136c3c33e47c0e0be
      https://github.com/Perl/perl5/commit/814c80463b40864fc9c460e136c3c33e47c0e0be
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ac5481f95132ff8b32054eff5012caaa01c07a2b
      https://github.com/Perl/perl5/commit/ac5481f95132ff8b32054eff5012caaa01c07a2b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 67c1895486ca0fd0b22589068207d0859ca3e968
      https://github.com/Perl/perl5/commit/67c1895486ca0fd0b22589068207d0859ca3e968
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 3214f6e4ed560c18ecb55fdd55b8c7f0b6b97d28
      https://github.com/Perl/perl5/commit/3214f6e4ed560c18ecb55fdd55b8c7f0b6b97d28
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M perl.h

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

So they are closer to related statements


  Commit: ad3a11abd1479bb52304771e34e06d8de6604067
      https://github.com/Perl/perl5/commit/ad3a11abd1479bb52304771e34e06d8de6604067
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: c473e11e943cf9aa080a97d7d90c3f6abdc713a9
      https://github.com/Perl/perl5/commit/c473e11e943cf9aa080a97d7d90c3f6abdc713a9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 309548e4c7f1ab67748bccb4a772e7974e2b6973
      https://github.com/Perl/perl5/commit/309548e4c7f1ab67748bccb4a772e7974e2b6973
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M pp_sys.c

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


  Commit: 3e1f49fd07f8bf081f0cae5267c4d384cbb81009
      https://github.com/Perl/perl5/commit/3e1f49fd07f8bf081f0cae5267c4d384cbb81009
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M win32/win32.c

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

These could have races.


  Commit: d9aefa31ecf0df8d0391a6d72c4d4d8644cfb9fc
      https://github.com/Perl/perl5/commit/d9aefa31ecf0df8d0391a6d72c4d4d8644cfb9fc
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs

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


  Commit: 52bfaf6200686eb33dbb07f9ce5756eae823a3a4
      https://github.com/Perl/perl5/commit/52bfaf6200686eb33dbb07f9ce5756eae823a3a4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M util.c

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

per the Posix standard


  Commit: c9e8b2654288f0704ad3ead3496e087ae27492c5
      https://github.com/Perl/perl5/commit/c9e8b2654288f0704ad3ead3496e087ae27492c5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M util.c

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


  Commit: 80cfd159cc0432f1adae865130f64f149ade6317
      https://github.com/Perl/perl5/commit/80cfd159cc0432f1adae865130f64f149ade6317
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 19d9e2620c8814ccf84ffc083f42aded0dc0a8b4
      https://github.com/Perl/perl5/commit/19d9e2620c8814ccf84ffc083f42aded0dc0a8b4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 2665145cada68e11c56e4a43a178a63aa8b84573
      https://github.com/Perl/perl5/commit/2665145cada68e11c56e4a43a178a63aa8b84573
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: c1a7050a7a37f02d89d25be8672793bdbbb175a1
      https://github.com/Perl/perl5/commit/c1a7050a7a37f02d89d25be8672793bdbbb175a1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: f3aa68e44e3caefd5d2defc8ef740de6bc601ee9
      https://github.com/Perl/perl5/commit/f3aa68e44e3caefd5d2defc8ef740de6bc601ee9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 3d58ea4308ca17a36588324709488470e336308b
      https://github.com/Perl/perl5/commit/3d58ea4308ca17a36588324709488470e336308b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 3b64f32188093b49159ae2c28a203679cf42b638
      https://github.com/Perl/perl5/commit/3b64f32188093b49159ae2c28a203679cf42b638
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M pod/perlhacktips.pod

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


  Commit: 6e108ef2f18816d071248c99b5ecfddbede99ec1
      https://github.com/Perl/perl5/commit/6e108ef2f18816d071248c99b5ecfddbede99ec1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 4d0279c1a1a2d4d0fa50dd2995547a9b43729585
      https://github.com/Perl/perl5/commit/4d0279c1a1a2d4d0fa50dd2995547a9b43729585
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M hints/freebsd.sh

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


  Commit: 547f5e919fe6634e3e429bca34c3cb91dbdd1bb6
      https://github.com/Perl/perl5/commit/547f5e919fe6634e3e429bca34c3cb91dbdd1bb6
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M thread.h

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


  Commit: 460f3f34b06bb9472b61bfcb0d3e59fe164b73eb
      https://github.com/Perl/perl5/commit/460f3f34b06bb9472b61bfcb0d3e59fe164b73eb
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M thread.h

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


  Commit: a5d6cbf2fa820a1ab08649c11c7b257507176db8
      https://github.com/Perl/perl5/commit/a5d6cbf2fa820a1ab08649c11c7b257507176db8
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M perl.h

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


  Commit: 8a9665cd5c4811078d072e05a702c96c038a3452
      https://github.com/Perl/perl5/commit/8a9665cd5c4811078d072e05a702c96c038a3452
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

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

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


  Commit: 109927c0b267ae7c5fc30fce2cde983c543d513a
      https://github.com/Perl/perl5/commit/109927c0b267ae7c5fc30fce2cde983c543d513a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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


  Commit: c2bca1390f554d598d74ffd997905d5729b1f95f
      https://github.com/Perl/perl5/commit/c2bca1390f554d598d74ffd997905d5729b1f95f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

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

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


  Commit: 2b5f5b888126e1938a936eb9234b0a480b294676
      https://github.com/Perl/perl5/commit/2b5f5b888126e1938a936eb9234b0a480b294676
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: fd1f01a764128f72537695946c377378f93ff9d3
      https://github.com/Perl/perl5/commit/fd1f01a764128f72537695946c377378f93ff9d3
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M t/run/locale.t

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


  Commit: 20862b4c719800b920661e78315be0aead3f3c05
      https://github.com/Perl/perl5/commit/20862b4c719800b920661e78315be0aead3f3c05
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: c1212e9b628b38afc3d0ab0494edfd51d4a258c8
      https://github.com/Perl/perl5/commit/c1212e9b628b38afc3d0ab0494edfd51d4a258c8
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 720f29825df21f2224707094970c1d18f196fabb
      https://github.com/Perl/perl5/commit/720f29825df21f2224707094970c1d18f196fabb
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: af0c74b3d753b4ae9065046d6f4df8a322dbef8b
      https://github.com/Perl/perl5/commit/af0c74b3d753b4ae9065046d6f4df8a322dbef8b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

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

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


  Commit: 657732bf5fa4b675fe99ac02fed9f3b19bdc2855
      https://github.com/Perl/perl5/commit/657732bf5fa4b675fe99ac02fed9f3b19bdc2855
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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


  Commit: 300211c92728de7ae33aed6e6c9cbaff2fd23c71
      https://github.com/Perl/perl5/commit/300211c92728de7ae33aed6e6c9cbaff2fd23c71
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

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

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


  Commit: a47c2fa386c3b72651d6ddf1416d7b7c96f260a2
      https://github.com/Perl/perl5/commit/a47c2fa386c3b72651d6ddf1416d7b7c96f260a2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

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

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

This reverts commit cd1fd76eac05b9ca866bb6f1dae6151767aa3d76.


  Commit: 11420b1d7c7a0303c0a4f57ecdc24cb3a72b537d
      https://github.com/Perl/perl5/commit/11420b1d7c7a0303c0a4f57ecdc24cb3a72b537d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M lib/locale.t

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


  Commit: e7e73b93ce4312395594eefe462d64b53277de5f
      https://github.com/Perl/perl5/commit/e7e73b93ce4312395594eefe462d64b53277de5f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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


  Commit: d03f2fb419f4f6ee0ce714a3d55fc83ffdf8cf54
      https://github.com/Perl/perl5/commit/d03f2fb419f4f6ee0ce714a3d55fc83ffdf8cf54
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M embed.fnc
    M proto.h

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


  Commit: d935cc034076e2f7cf8448648b525e98ab42bc66
      https://github.com/Perl/perl5/commit/d935cc034076e2f7cf8448648b525e98ab42bc66
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 85f9dfe49974bf8f6d7e3879f8db1ae8cb878c82
      https://github.com/Perl/perl5/commit/85f9dfe49974bf8f6d7e3879f8db1ae8cb878c82
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

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

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


  Commit: 161b6c5e241beab16c01ece4fabd8a56b10a6b80
      https://github.com/Perl/perl5/commit/161b6c5e241beab16c01ece4fabd8a56b10a6b80
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M perl.h

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


  Commit: 25964c1514c076651acdf5ce6625493ac72a2081
      https://github.com/Perl/perl5/commit/25964c1514c076651acdf5ce6625493ac72a2081
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c

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


  Commit: 9982ba59da30cc74fd2fce65d418689f97dda7b9
      https://github.com/Perl/perl5/commit/9982ba59da30cc74fd2fce65d418689f97dda7b9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M intrpvar.h

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


  Commit: c683474c550ef5c8907cd710e9588a7bd9950642
      https://github.com/Perl/perl5/commit/c683474c550ef5c8907cd710e9588a7bd9950642
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: cf8ed69008399aaff8afe2e1ff58cc93b976d080
      https://github.com/Perl/perl5/commit/cf8ed69008399aaff8afe2e1ff58cc93b976d080
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: e158371d11fcf4bda0fe2c8dd98a4400a56c807f
      https://github.com/Perl/perl5/commit/e158371d11fcf4bda0fe2c8dd98a4400a56c807f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M locale.c
    M util.c

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

We can assume it exists


  Commit: 234e57ff081c1f0c99163f286b981b6c768eb5d6
      https://github.com/Perl/perl5/commit/234e57ff081c1f0c99163f286b981b6c768eb5d6
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 7ef569c582368409a703eaec35d3ae979f45e4ae
      https://github.com/Perl/perl5/commit/7ef569c582368409a703eaec35d3ae979f45e4ae
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M patchlevel.h

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


  Commit: 01087006c4affcce28c7f94fdaadd1d740125665
      https://github.com/Perl/perl5/commit/01087006c4affcce28c7f94fdaadd1d740125665
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M sv.c

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


  Commit: cbb4a7c462b10bf45770eea75a092b0aa623cc90
      https://github.com/Perl/perl5/commit/cbb4a7c462b10bf45770eea75a092b0aa623cc90
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 03fd73ba01cf8c4feef4bd0347c021bc016ed5da
      https://github.com/Perl/perl5/commit/03fd73ba01cf8c4feef4bd0347c021bc016ed5da
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 2d90b9c067851b4cf705c4b1bc9fd921a56027e2
      https://github.com/Perl/perl5/commit/2d90b9c067851b4cf705c4b1bc9fd921a56027e2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 9c0a71ca3831fdf69462f2ece7b7d766e51e8b9c
      https://github.com/Perl/perl5/commit/9c0a71ca3831fdf69462f2ece7b7d766e51e8b9c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 09a335aae3f911668c63bad5387e579ed7847fe5
      https://github.com/Perl/perl5/commit/09a335aae3f911668c63bad5387e579ed7847fe5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 81f046cdc3bee240f3317579319d861a5b9dff18
      https://github.com/Perl/perl5/commit/81f046cdc3bee240f3317579319d861a5b9dff18
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 237a60f724f235d12279ae142840b36fead0b7bf
      https://github.com/Perl/perl5/commit/237a60f724f235d12279ae142840b36fead0b7bf
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: e8a8d882c262a2908078d3693d368d81263b1745
      https://github.com/Perl/perl5/commit/e8a8d882c262a2908078d3693d368d81263b1745
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M cygwin/cygwin.c

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


  Commit: 2b79f8441bf78b7e43170a16d3c43efbcbd5c939
      https://github.com/Perl/perl5/commit/2b79f8441bf78b7e43170a16d3c43efbcbd5c939
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M patchlevel.h

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


  Commit: 519c382e9c67bfef4e0b2e28070e1c31fd231853
      https://github.com/Perl/perl5/commit/519c382e9c67bfef4e0b2e28070e1c31fd231853
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M cygwin/cygwin.c

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


  Commit: 838f4abfaca1b1af03d4986b3b211ab5ae0bfe06
      https://github.com/Perl/perl5/commit/838f4abfaca1b1af03d4986b3b211ab5ae0bfe06
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M cygwin/cygwin.c

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

This reverts commit 24fbf2ccd8777c4af31eb9f8038d4cff7073b0c4.


  Commit: 3a9108929b4f81932c05fe91a6294c06c5a8fb65
      https://github.com/Perl/perl5/commit/3a9108929b4f81932c05fe91a6294c06c5a8fb65
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: d0bb3b658e9a8dafafc3755e7688847c8a8fc14f
      https://github.com/Perl/perl5/commit/d0bb3b658e9a8dafafc3755e7688847c8a8fc14f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: aa85764a191d508c08d79d490dca0f9cabcde410
      https://github.com/Perl/perl5/commit/aa85764a191d508c08d79d490dca0f9cabcde410
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ee8f52e67ca74b40cdd621f88c51eee55ffc3073
      https://github.com/Perl/perl5/commit/ee8f52e67ca74b40cdd621f88c51eee55ffc3073
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 42ef55415848f2a4fcfdf9408d89da1b7609df8c
      https://github.com/Perl/perl5/commit/42ef55415848f2a4fcfdf9408d89da1b7609df8c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 9dab116c62d75e81cb49a7d671920b91ddfcd8c1
      https://github.com/Perl/perl5/commit/9dab116c62d75e81cb49a7d671920b91ddfcd8c1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: f76bea4840aa6f5d8aa23d3f642a9ef14760274b
      https://github.com/Perl/perl5/commit/f76bea4840aa6f5d8aa23d3f642a9ef14760274b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  t/loc_tools.pl: White-space only


  Commit: b92447db976368da6a367b8537abe372a4851e49
      https://github.com/Perl/perl5/commit/b92447db976368da6a367b8537abe372a4851e49
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  XXX t/loc_tools.pl: Temp debug


  Commit: a3330181a2405bbbeb2aa806a24ee23b6b7d4820
      https://github.com/Perl/perl5/commit/a3330181a2405bbbeb2aa806a24ee23b6b7d4820
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 5ee746b452ad9c52e1fe726f57e0dbcb27c76d2e
      https://github.com/Perl/perl5/commit/5ee746b452ad9c52e1fe726f57e0dbcb27c76d2e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  XXX locale_threads


  Commit: 3057f6baa6993ac0fb6a132cb97285ebb0b043af
      https://github.com/Perl/perl5/commit/3057f6baa6993ac0fb6a132cb97285ebb0b043af
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  XXX locale_threads debugging


  Commit: 0a012ca2ed0aa89ca60619f45cb6dd4def6f7a02
      https://github.com/Perl/perl5/commit/0a012ca2ed0aa89ca60619f45cb6dd4def6f7a02
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M intrpvar.h

  Log Message:
  -----------
  intrpvar.h: White space only


  Commit: bfbe37ca78afafae367c480dc50accc2d0b919e4
      https://github.com/Perl/perl5/commit/bfbe37ca78afafae367c480dc50accc2d0b919e4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M intrpvar.h

  Log Message:
  -----------
  intrpvar.h: Move some defns into appropriate #ifdefs


  Commit: a5513d07e78b78d062a3b25b2894a0b0d5b6eb9d
      https://github.com/Perl/perl5/commit/a5513d07e78b78d062a3b25b2894a0b0d5b6eb9d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 3dfc4fec60a0d54de4c1b7f5cefc689331ce6143
      https://github.com/Perl/perl5/commit/3dfc4fec60a0d54de4c1b7f5cefc689331ce6143
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M sv.c

  Log Message:
  -----------
  sv.c: Rmv duplicate clones

These variables are already cloned when creating a thread


  Commit: 534437753d400d30ce6249343b7472d0556ff1dc
      https://github.com/Perl/perl5/commit/534437753d400d30ce6249343b7472d0556ff1dc
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: a1e4086461f70d1761c36a029f13a47038a79350
      https://github.com/Perl/perl5/commit/a1e4086461f70d1761c36a029f13a47038a79350
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: feec650e24764597ead38ee9f474f952fa8fe5be
      https://github.com/Perl/perl5/commit/feec650e24764597ead38ee9f474f952fa8fe5be
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M sv.c

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

Replace leading tabs with spaces


  Commit: 8d8ea402fc97b3cf3ba2306b074d13f7cf445914
      https://github.com/Perl/perl5/commit/8d8ea402fc97b3cf3ba2306b074d13f7cf445914
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: fb2bc137dc2c8bb767dcf7010359d56a202a9f16
      https://github.com/Perl/perl5/commit/fb2bc137dc2c8bb767dcf7010359d56a202a9f16
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 43e9a5b8d2c276e0b1cda582a6ca1bb8ab662906
      https://github.com/Perl/perl5/commit/43e9a5b8d2c276e0b1cda582a6ca1bb8ab662906
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  XXX cygwin debugging small macro buf


  Commit: 61311b7d231f9ef21c35cc532c067bdc308dbf9d
      https://github.com/Perl/perl5/commit/61311b7d231f9ef21c35cc532c067bdc308dbf9d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 3e8622c4c4086238f507b649bb90729445466566
      https://github.com/Perl/perl5/commit/3e8622c4c4086238f507b649bb90729445466566
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  XXX perl.h: Debugging trace across all files


  Commit: e0c50bca6966d81233d87b52a0107782a103d053
      https://github.com/Perl/perl5/commit/e0c50bca6966d81233d87b52a0107782a103d053
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: 4e7fabee24e5c29965023d2dfc4b8d4057829097
      https://github.com/Perl/perl5/commit/4e7fabee24e5c29965023d2dfc4b8d4057829097
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 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: ec44652b4a6eb49ec113800a64cc513844312afb
      https://github.com/Perl/perl5/commit/ec44652b4a6eb49ec113800a64cc513844312afb
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-05-03 (Mon, 03 May 2021)

  Changed paths:
    M embed.fnc
    M embed.h
    M embedvar.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 makedef.pl
    M mg.c
    M perl.c
    M perl.h
    M proto.h
    M regexec.c
    M sv.c
    M t/loc_tools.pl
    M t/run/locale.t

  Log Message:
  -----------
  57


Compare: https://github.com/Perl/perl5/compare/6941985d39da...ec44652b4a6e



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About