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

[Perl/perl5] 03f004: XXX craig Unixish.h, doshish.h: Reorderterminatio...

From:
Karl Williamson via perl5-changes
Date:
March 24, 2021 14:04
Subject:
[Perl/perl5] 03f004: XXX craig Unixish.h, doshish.h: Reorderterminatio...
Message ID:
Perl/perl5/push/refs/heads/smoke-me/khw-locale/4c1368-8a3ec8@github.com
  Branch: refs/heads/smoke-me/khw-locale
  Home:   https://github.com/Perl/perl5
  Commit: 03f0047be576427f65b4bce48380a6a08abf3880
      https://github.com/Perl/perl5/commit/03f0047be576427f65b4bce48380a6a08abf3880
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: fb2e25e4ba60aa00ec35ecce5562578b15efeae1
      https://github.com/Perl/perl5/commit/fb2e25e4ba60aa00ec35ecce5562578b15efeae1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 9607ad5d3eab2fb0341d9063d0c0819a1826beb2
      https://github.com/Perl/perl5/commit/9607ad5d3eab2fb0341d9063d0c0819a1826beb2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M lib/locale_threads.t

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


  Commit: d89371623cc6f60427be1a4eae67f3881fce9ff3
      https://github.com/Perl/perl5/commit/d89371623cc6f60427be1a4eae67f3881fce9ff3
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: c2fa30ec25b9150feec090c23afc730237fc084d
      https://github.com/Perl/perl5/commit/c2fa30ec25b9150feec090c23afc730237fc084d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 0f20913eaf5aa2ccc18fae42fbabd101793efd2e
      https://github.com/Perl/perl5/commit/0f20913eaf5aa2ccc18fae42fbabd101793efd2e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 700dfebacd2b4cea3451b2ac0e50d227c34a5b66
      https://github.com/Perl/perl5/commit/700dfebacd2b4cea3451b2ac0e50d227c34a5b66
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 85e7da2f28d1bee02d6d5ff4648d2f73498c5f2d
      https://github.com/Perl/perl5/commit/85e7da2f28d1bee02d6d5ff4648d2f73498c5f2d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 8e89b193c149647fc0915fb5c65fffb2dca1f460
      https://github.com/Perl/perl5/commit/8e89b193c149647fc0915fb5c65fffb2dca1f460
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M handy.h

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


  Commit: 3c45ddd0502d12ed064239b21e49af5785b1dc1c
      https://github.com/Perl/perl5/commit/3c45ddd0502d12ed064239b21e49af5785b1dc1c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M handy.h

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


  Commit: 5ea7405b9eea07574a85480cc97ccea0269dc2e3
      https://github.com/Perl/perl5/commit/5ea7405b9eea07574a85480cc97ccea0269dc2e3
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 072f6e21a6260c5817e5958ed813b7508f4c1017
      https://github.com/Perl/perl5/commit/072f6e21a6260c5817e5958ed813b7508f4c1017
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: eb62a058e04192cb2f0f188b90409291dc35dcec
      https://github.com/Perl/perl5/commit/eb62a058e04192cb2f0f188b90409291dc35dcec
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 14649aaacba67efcab91a232ba42754ed7b9bc05
      https://github.com/Perl/perl5/commit/14649aaacba67efcab91a232ba42754ed7b9bc05
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: ce250fcd1a54bb0fc1c635726e5c68e00f204a29
      https://github.com/Perl/perl5/commit/ce250fcd1a54bb0fc1c635726e5c68e00f204a29
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 3a174db4ef83669c00d16b91e04026bf811acc21
      https://github.com/Perl/perl5/commit/3a174db4ef83669c00d16b91e04026bf811acc21
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: f3cbcc451cc4abf777234111a580e51abe206cbd
      https://github.com/Perl/perl5/commit/f3cbcc451cc4abf777234111a580e51abe206cbd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: db8a88d24b5b00149b78536124fd450da4a36fce
      https://github.com/Perl/perl5/commit/db8a88d24b5b00149b78536124fd450da4a36fce
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M handy.h

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


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

  Changed paths:
    M handy.h

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

As a convenience to other code.


  Commit: 009b2347fcd1fa77761f14bc8f85eeacbb7bcee0
      https://github.com/Perl/perl5/commit/009b2347fcd1fa77761f14bc8f85eeacbb7bcee0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 86706d75e6b36a5b114596a277cf35ba64c53824
      https://github.com/Perl/perl5/commit/86706d75e6b36a5b114596a277cf35ba64c53824
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 4f8ddcf7e93c478d08f1af838d79244b19814b7e
      https://github.com/Perl/perl5/commit/4f8ddcf7e93c478d08f1af838d79244b19814b7e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

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


  Commit: a9521d5664f57f22de6763fcae07b8a2ff3d495a
      https://github.com/Perl/perl5/commit/a9521d5664f57f22de6763fcae07b8a2ff3d495a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 59dfaba8dd93596848e3952a290718782eee9208
      https://github.com/Perl/perl5/commit/59dfaba8dd93596848e3952a290718782eee9208
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 8d41781f569be05ad4498ed3dbab18be91a490d4
      https://github.com/Perl/perl5/commit/8d41781f569be05ad4498ed3dbab18be91a490d4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: c62493b2e81ec14fbf181e676d07acb9fac554df
      https://github.com/Perl/perl5/commit/c62493b2e81ec14fbf181e676d07acb9fac554df
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 775dac17fcdb045733f414e409c3420e450d7e1a
      https://github.com/Perl/perl5/commit/775dac17fcdb045733f414e409c3420e450d7e1a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 7d61fb97005d7972484a827f7d1e2d58608fe068
      https://github.com/Perl/perl5/commit/7d61fb97005d7972484a827f7d1e2d58608fe068
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 874877e08b140b0611f759ad7de4a1bda88e7fc2
      https://github.com/Perl/perl5/commit/874877e08b140b0611f759ad7de4a1bda88e7fc2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: c70d7a60d558e3f6255fcee19d5d287b8b17a41d
      https://github.com/Perl/perl5/commit/c70d7a60d558e3f6255fcee19d5d287b8b17a41d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 09b898a59550a0810eb6bab5caf937a695c8e58d
      https://github.com/Perl/perl5/commit/09b898a59550a0810eb6bab5caf937a695c8e58d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 9f1bde5b9f8f610cf7e0e4916fe70153a2a1b3ac
      https://github.com/Perl/perl5/commit/9f1bde5b9f8f610cf7e0e4916fe70153a2a1b3ac
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 01346b509199898e7d508dcb47e25c507af748dc
      https://github.com/Perl/perl5/commit/01346b509199898e7d508dcb47e25c507af748dc
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 5e788ceea6411a4f5d70db8382eacb284dceb921
      https://github.com/Perl/perl5/commit/5e788ceea6411a4f5d70db8382eacb284dceb921
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 491302eb3ae61b66fb20d5b53cc1681e18245740
      https://github.com/Perl/perl5/commit/491302eb3ae61b66fb20d5b53cc1681e18245740
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 169f0b270b77c528af237d923a68e3b5e29fe0f5
      https://github.com/Perl/perl5/commit/169f0b270b77c528af237d923a68e3b5e29fe0f5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: d4065d8d683e8e98b11d40234caecbab6cd1c491
      https://github.com/Perl/perl5/commit/d4065d8d683e8e98b11d40234caecbab6cd1c491
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: fb461dbc5214e0a2e703d729515721c7aa5a607f
      https://github.com/Perl/perl5/commit/fb461dbc5214e0a2e703d729515721c7aa5a607f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: e14df5261b97163f13344e6c148b88f8e1e95f12
      https://github.com/Perl/perl5/commit/e14df5261b97163f13344e6c148b88f8e1e95f12
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 6601ba60cee372d732d8c99699dfaf0a976964bd
      https://github.com/Perl/perl5/commit/6601ba60cee372d732d8c99699dfaf0a976964bd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: a993ba96b350fcd29d6b610a72633b4efdbe2ff1
      https://github.com/Perl/perl5/commit/a993ba96b350fcd29d6b610a72633b4efdbe2ff1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 53c4a8df417c256b293220b6a846c052ef8015c5
      https://github.com/Perl/perl5/commit/53c4a8df417c256b293220b6a846c052ef8015c5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: e8ef2bfc4980d2ebf2290759e1dc4742a069377b
      https://github.com/Perl/perl5/commit/e8ef2bfc4980d2ebf2290759e1dc4742a069377b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: e9732a94421173a26bc52d52e9ee455c90c51a5d
      https://github.com/Perl/perl5/commit/e9732a94421173a26bc52d52e9ee455c90c51a5d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 648faee2a1096f4103ff13b7f6dcf1f5feb20a78
      https://github.com/Perl/perl5/commit/648faee2a1096f4103ff13b7f6dcf1f5feb20a78
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: d1e4c4cd6156f5f20d3b7328550184b32ecc1529
      https://github.com/Perl/perl5/commit/d1e4c4cd6156f5f20d3b7328550184b32ecc1529
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 6f695bc449128d3b6d39bbd175272eed802db139
      https://github.com/Perl/perl5/commit/6f695bc449128d3b6d39bbd175272eed802db139
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 4e732f5e4cb6d436091e424b8550be012f2bb43b
      https://github.com/Perl/perl5/commit/4e732f5e4cb6d436091e424b8550be012f2bb43b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 486ab31633d2aa375227b1857bd7bacd0a137178
      https://github.com/Perl/perl5/commit/486ab31633d2aa375227b1857bd7bacd0a137178
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 82e0804ba1ea2113885defc8b1e1d5748f7dc385
      https://github.com/Perl/perl5/commit/82e0804ba1ea2113885defc8b1e1d5748f7dc385
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 59efb14255ccf3f0c70d8333bd349fd5a527c39f
      https://github.com/Perl/perl5/commit/59efb14255ccf3f0c70d8333bd349fd5a527c39f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: d0a1cff1f9fddd7e162dc5877d0965f4e04ea738
      https://github.com/Perl/perl5/commit/d0a1cff1f9fddd7e162dc5877d0965f4e04ea738
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: b1f7a19d50232414757eb20b12d298eb156cc934
      https://github.com/Perl/perl5/commit/b1f7a19d50232414757eb20b12d298eb156cc934
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: d2c661777bbd7f763b770e5245ded3a39589105a
      https://github.com/Perl/perl5/commit/d2c661777bbd7f763b770e5245ded3a39589105a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 38f5d87b4d30ec07b246f2a9637196630f4fa6fc
      https://github.com/Perl/perl5/commit/38f5d87b4d30ec07b246f2a9637196630f4fa6fc
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 8ec4e240ed6475bc967a3e8daf4f10bd1cc94799
      https://github.com/Perl/perl5/commit/8ec4e240ed6475bc967a3e8daf4f10bd1cc94799
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 5d7ff9b1a635e935fb1bf5eb923fa5426c39074b
      https://github.com/Perl/perl5/commit/5d7ff9b1a635e935fb1bf5eb923fa5426c39074b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 2b811d39c5dae7cc9ecf2fe071406d3d3c9557ac
      https://github.com/Perl/perl5/commit/2b811d39c5dae7cc9ecf2fe071406d3d3c9557ac
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 034542683284ab6603903d8181e7f294a89ab44c
      https://github.com/Perl/perl5/commit/034542683284ab6603903d8181e7f294a89ab44c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 723722e66a4f138a2858c292d33dd52b8c629cfd
      https://github.com/Perl/perl5/commit/723722e66a4f138a2858c292d33dd52b8c629cfd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 425c5ee843cb06db4cc72eb246a7d58b8e1bebe0
      https://github.com/Perl/perl5/commit/425c5ee843cb06db4cc72eb246a7d58b8e1bebe0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 0a130564bc46f6ad403db3a903de803a8b7f98c0
      https://github.com/Perl/perl5/commit/0a130564bc46f6ad403db3a903de803a8b7f98c0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 448eceb0ab9903895762a5f61e4c236bd10b1f85
      https://github.com/Perl/perl5/commit/448eceb0ab9903895762a5f61e4c236bd10b1f85
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs

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

Properly indent some nested preprocessor directives


  Commit: db2693a360af1865faaa95dc64a5d0ee2627ba9e
      https://github.com/Perl/perl5/commit/db2693a360af1865faaa95dc64a5d0ee2627ba9e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 0d5e6e5069a0f2581ed0060f04e0acb6ffa881ee
      https://github.com/Perl/perl5/commit/0d5e6e5069a0f2581ed0060f04e0acb6ffa881ee
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 3d31b0001852e8cc66f2f7948a4180bb7c0e2634
      https://github.com/Perl/perl5/commit/3d31b0001852e8cc66f2f7948a4180bb7c0e2634
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 2225e3ff6fdc96bd849f4a796b00099e3ad59f86
      https://github.com/Perl/perl5/commit/2225e3ff6fdc96bd849f4a796b00099e3ad59f86
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: b24c3dc4e673551f4acb73eae26f2e46c33c9930
      https://github.com/Perl/perl5/commit/b24c3dc4e673551f4acb73eae26f2e46c33c9930
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 35d3a17c7b13841a839d0241c666b13b32d05a77
      https://github.com/Perl/perl5/commit/35d3a17c7b13841a839d0241c666b13b32d05a77
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: c31449ed2f7d276eac73e70418c05fcbb1d6b817
      https://github.com/Perl/perl5/commit/c31449ed2f7d276eac73e70418c05fcbb1d6b817
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 45b3f2a878ac2efa6c346957d0aa383913715246
      https://github.com/Perl/perl5/commit/45b3f2a878ac2efa6c346957d0aa383913715246
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: f6f0fff8a0b1acb1d8177d621d32cbe05094143e
      https://github.com/Perl/perl5/commit/f6f0fff8a0b1acb1d8177d621d32cbe05094143e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

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

This allows some preprocessor conditionals to be removed


  Commit: 5c1f1aaaf2f4240de3c02d95c826630635966556
      https://github.com/Perl/perl5/commit/5c1f1aaaf2f4240de3c02d95c826630635966556
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

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

strEQ and && already return booleans


  Commit: bf69766e2f172bb64778f100f57d8b0fabe89051
      https://github.com/Perl/perl5/commit/bf69766e2f172bb64778f100f57d8b0fabe89051
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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 now have seen evidence this guess was wrong, so give up
on it.

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


  Commit: b6f0349c971746a7d56818b13e32841497080018
      https://github.com/Perl/perl5/commit/b6f0349c971746a7d56818b13e32841497080018
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: ee1839dd38d929a277166499eea3a7d6daf49a42
      https://github.com/Perl/perl5/commit/ee1839dd38d929a277166499eea3a7d6daf49a42
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 288e9e339269b5a5be6fe5ae3ddfcbafac7a1906
      https://github.com/Perl/perl5/commit/288e9e339269b5a5be6fe5ae3ddfcbafac7a1906
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 81e1104e913ad9ce47b5f78d7710204f2c71905e
      https://github.com/Perl/perl5/commit/81e1104e913ad9ce47b5f78d7710204f2c71905e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: ae465cf373cd7142d67c79b2452fd9250abe48c3
      https://github.com/Perl/perl5/commit/ae465cf373cd7142d67c79b2452fd9250abe48c3
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: dad71cb492f46d4fe79047ff5be58a853f680f49
      https://github.com/Perl/perl5/commit/dad71cb492f46d4fe79047ff5be58a853f680f49
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

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

This is in preparation for the next commit


  Commit: 95bda1b1b25cf802ed9a907398361dfa90135751
      https://github.com/Perl/perl5/commit/95bda1b1b25cf802ed9a907398361dfa90135751
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 1e0b808a19d0e2b9f4fbe78924b7e28dede75e9d
      https://github.com/Perl/perl5/commit/1e0b808a19d0e2b9f4fbe78924b7e28dede75e9d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: feee19c3293a713a54983bcbdb4650ed10bb3f3b
      https://github.com/Perl/perl5/commit/feee19c3293a713a54983bcbdb4650ed10bb3f3b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: f697128ebe04db3e72b5f64cf38b9b120020aa36
      https://github.com/Perl/perl5/commit/f697128ebe04db3e72b5f64cf38b9b120020aa36
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 5fa142b7cf9496a14dce61881b0e2603e859dea2
      https://github.com/Perl/perl5/commit/5fa142b7cf9496a14dce61881b0e2603e859dea2
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 1da393a93653924bdb850528d6d3e2996413e9d9
      https://github.com/Perl/perl5/commit/1da393a93653924bdb850528d6d3e2996413e9d9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: fff5d9e43d3de8817f0ef2c5033626e0d0c43a12
      https://github.com/Perl/perl5/commit/fff5d9e43d3de8817f0ef2c5033626e0d0c43a12
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: ef6bebe48c1ddc8edaf7a2c4682540580c66acef
      https://github.com/Perl/perl5/commit/ef6bebe48c1ddc8edaf7a2c4682540580c66acef
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 87bf6b687bd1037949ee5267976e126445f7896a
      https://github.com/Perl/perl5/commit/87bf6b687bd1037949ee5267976e126445f7896a
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 7d1c13e6296ad0b054f6c43e9c39569d73a6eb36
      https://github.com/Perl/perl5/commit/7d1c13e6296ad0b054f6c43e9c39569d73a6eb36
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 072d9b9fbfc658e014bbbd75d44812f11e96f6ad
      https://github.com/Perl/perl5/commit/072d9b9fbfc658e014bbbd75d44812f11e96f6ad
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: dd7d33ba6d5ede02b9e9bd659fcbdaa70eca2907
      https://github.com/Perl/perl5/commit/dd7d33ba6d5ede02b9e9bd659fcbdaa70eca2907
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 4e1909c94af14985fa27deb0d6925af1d2b0442b
      https://github.com/Perl/perl5/commit/4e1909c94af14985fa27deb0d6925af1d2b0442b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: a97da30cce1e26245b099b7565c8a0ad954076a8
      https://github.com/Perl/perl5/commit/a97da30cce1e26245b099b7565c8a0ad954076a8
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: e21276f25c4c614f8cb0f68cc61acfa8f46d9e7e
      https://github.com/Perl/perl5/commit/e21276f25c4c614f8cb0f68cc61acfa8f46d9e7e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

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


  Commit: a7f7045940e0edcde34a6931c7c65d31bc8b6cc5
      https://github.com/Perl/perl5/commit/a7f7045940e0edcde34a6931c7c65d31bc8b6cc5
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 488b0a98f807ec1b9e5fbcd52c4e8edb97fd2d22
      https://github.com/Perl/perl5/commit/488b0a98f807ec1b9e5fbcd52c4e8edb97fd2d22
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 2fff02cb9dda8d9f1b861a3d32e77e8cf15e9d94
      https://github.com/Perl/perl5/commit/2fff02cb9dda8d9f1b861a3d32e77e8cf15e9d94
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: da84ad09fba156c03ca8d0b449b2dd1dccea782f
      https://github.com/Perl/perl5/commit/da84ad09fba156c03ca8d0b449b2dd1dccea782f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M mg.c

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

Indent newly formed block from the previous commit.


  Commit: 91c6947c12c3eaea1aa5b78e0a3279d20a2c7203
      https://github.com/Perl/perl5/commit/91c6947c12c3eaea1aa5b78e0a3279d20a2c7203
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 06a720afbae7063875934ccd16df05f96e08e688
      https://github.com/Perl/perl5/commit/06a720afbae7063875934ccd16df05f96e08e688
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 016992f5b44bcba87b3aa1c5477715cc080f7dc9
      https://github.com/Perl/perl5/commit/016992f5b44bcba87b3aa1c5477715cc080f7dc9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 086eb4de0d8574325ae993d5e227d3e6cd02a21e
      https://github.com/Perl/perl5/commit/086eb4de0d8574325ae993d5e227d3e6cd02a21e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Revamp sync_locale()

This rarely used function was actually failing to do what it purported
in some Configurations.


  Commit: f20b3f94eb0147077b9eecb32bce7301658afbfb
      https://github.com/Perl/perl5/commit/f20b3f94eb0147077b9eecb32bce7301658afbfb
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: c64db6871de799117397849392785d9eabf45599
      https://github.com/Perl/perl5/commit/c64db6871de799117397849392785d9eabf45599
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Revamp switch_to_global_locale()

Prior to this commit, the global locale was not always getting populated
with the values from the thread being switched.


  Commit: 5c24da691f71af13d5c4bbbf2e0101c6ee2bfa0c
      https://github.com/Perl/perl5/commit/5c24da691f71af13d5c4bbbf2e0101c6ee2bfa0c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 620d91d0b4c5372d64b447fc7a2b22466cec7498
      https://github.com/Perl/perl5/commit/620d91d0b4c5372d64b447fc7a2b22466cec7498
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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


  Commit: 156c158d9f62a02c32a14b024dfa556ce2688af7
      https://github.com/Perl/perl5/commit/156c158d9f62a02c32a14b024dfa556ce2688af7
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 03bfe673fc7f74dbe8d868137151890bc51f4382
      https://github.com/Perl/perl5/commit/03bfe673fc7f74dbe8d868137151890bc51f4382
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: f7104b7ade7cde72d6de4a45c487acc5515bf35c
      https://github.com/Perl/perl5/commit/f7104b7ade7cde72d6de4a45c487acc5515bf35c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: c83d553b3367e34c7e3ffb19f20a4c2c0eb9f654
      https://github.com/Perl/perl5/commit/c83d553b3367e34c7e3ffb19f20a4c2c0eb9f654
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 33ee2a8575c7958eb595552bacbc07ed48363742
      https://github.com/Perl/perl5/commit/33ee2a8575c7958eb595552bacbc07ed48363742
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

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


  Commit: d71de5ee8e70510f4850571f2701d400c7a76479
      https://github.com/Perl/perl5/commit/d71de5ee8e70510f4850571f2701d400c7a76479
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 555d3a2bf91c0c800b2c9f93b5748b340fb54f7d
      https://github.com/Perl/perl5/commit/555d3a2bf91c0c800b2c9f93b5748b340fb54f7d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 8981ccba4cf981daf2318030a3e1c3718bade071
      https://github.com/Perl/perl5/commit/8981ccba4cf981daf2318030a3e1c3718bade071
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 590e1c6176e8a763751fbb2810704fee97f7240b
      https://github.com/Perl/perl5/commit/590e1c6176e8a763751fbb2810704fee97f7240b
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

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


  Commit: d96265bd6d6a705c94c8dbbab97be604e7bb1156
      https://github.com/Perl/perl5/commit/d96265bd6d6a705c94c8dbbab97be604e7bb1156
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: fc57f2a1c95287ebb17010bc1780d443f48bd0a7
      https://github.com/Perl/perl5/commit/fc57f2a1c95287ebb17010bc1780d443f48bd0a7
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: a35831e89960c7717fc21e12e66653ee4a38425e
      https://github.com/Perl/perl5/commit/a35831e89960c7717fc21e12e66653ee4a38425e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 8cc6f3d423808430bdf91843f28ecf5e54aeab95
      https://github.com/Perl/perl5/commit/8cc6f3d423808430bdf91843f28ecf5e54aeab95
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 03d3fdf13e0ed89cd7de20246e2f7ac728c996af
      https://github.com/Perl/perl5/commit/03d3fdf13e0ed89cd7de20246e2f7ac728c996af
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 2b30b1063a34851d157ddc1533d65f0884dc2981
      https://github.com/Perl/perl5/commit/2b30b1063a34851d157ddc1533d65f0884dc2981
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M lib/locale.t

  Log Message:
  -----------
  XXX temp: Windows debug


  Commit: 71c7d0dd22bd6d036723dc25107e1fd3d6a2fee3
      https://github.com/Perl/perl5/commit/71c7d0dd22bd6d036723dc25107e1fd3d6a2fee3
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 6bc4b6462c3ef7edf0e84c000cd21e7a1e67a453
      https://github.com/Perl/perl5/commit/6bc4b6462c3ef7edf0e84c000cd21e7a1e67a453
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 2b7e479de4175dd688671e47a21dcda02481094c
      https://github.com/Perl/perl5/commit/2b7e479de4175dd688671e47a21dcda02481094c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: b33d636ac00a89e97b4bb67b09506ce53e0ff604
      https://github.com/Perl/perl5/commit/b33d636ac00a89e97b4bb67b09506ce53e0ff604
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: d1a95b2e60d1b093275f2b0ae4b4c8402da10453
      https://github.com/Perl/perl5/commit/d1a95b2e60d1b093275f2b0ae4b4c8402da10453
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 9f39ab884e60601942e71ac327a77ef8a7fa154f
      https://github.com/Perl/perl5/commit/9f39ab884e60601942e71ac327a77ef8a7fa154f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

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

Hex is the more familiar form


  Commit: bd995fa46768be4eaa4aac26f76e5c8883a2cb66
      https://github.com/Perl/perl5/commit/bd995fa46768be4eaa4aac26f76e5c8883a2cb66
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 9217a71d5b9eb3f7ada339d158ca115d5f85e9de
      https://github.com/Perl/perl5/commit/9217a71d5b9eb3f7ada339d158ca115d5f85e9de
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: dcedaea64ebfb513b1a040c0e3e6ec70db7d1292
      https://github.com/Perl/perl5/commit/dcedaea64ebfb513b1a040c0e3e6ec70db7d1292
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 7ccfbc6eb502b7c5eea8534d532e647938446da8
      https://github.com/Perl/perl5/commit/7ccfbc6eb502b7c5eea8534d532e647938446da8
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: eceba29110b2ace3483890c9a9c14c4bbb2d90d9
      https://github.com/Perl/perl5/commit/eceba29110b2ace3483890c9a9c14c4bbb2d90d9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 68aa83e447588ffe5f7cd92abdb000fafda4591f
      https://github.com/Perl/perl5/commit/68aa83e447588ffe5f7cd92abdb000fafda4591f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: b0c097af60a5bd03fa4f1ec06437facf07828be0
      https://github.com/Perl/perl5/commit/b0c097af60a5bd03fa4f1ec06437facf07828be0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 30999a12f134e111d5395690742a6b5a5016dd7d
      https://github.com/Perl/perl5/commit/30999a12f134e111d5395690742a6b5a5016dd7d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: eba8dced4ae86dac5a76c18aa83ef0c5ce8e1b47
      https://github.com/Perl/perl5/commit/eba8dced4ae86dac5a76c18aa83ef0c5ce8e1b47
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 127191b4668e58ef99cc6bb36b81e3838fd1e0d4
      https://github.com/Perl/perl5/commit/127191b4668e58ef99cc6bb36b81e3838fd1e0d4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 51d13be41480dba3fd9a79b64304044168805f1c
      https://github.com/Perl/perl5/commit/51d13be41480dba3fd9a79b64304044168805f1c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M perl.h

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

This simplifies slightly, and will allow further simplification


  Commit: 0de9a91765db8e3fb6173d4ca0c823ac257be614
      https://github.com/Perl/perl5/commit/0de9a91765db8e3fb6173d4ca0c823ac257be614
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M perl.h

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

To enable future simplifications


  Commit: 63bc6840bf0978d2b2c874e3aa24adf8ad9d87c9
      https://github.com/Perl/perl5/commit/63bc6840bf0978d2b2c874e3aa24adf8ad9d87c9
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 35bb2ef798fa284978d4882fa4fb7ebd4f64fdf3
      https://github.com/Perl/perl5/commit/35bb2ef798fa284978d4882fa4fb7ebd4f64fdf3
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: afb90c836a2874d861b6a76d95df93bca272d93f
      https://github.com/Perl/perl5/commit/afb90c836a2874d861b6a76d95df93bca272d93f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 5a690e1e9967667ac21691c103866170856526fd
      https://github.com/Perl/perl5/commit/5a690e1e9967667ac21691c103866170856526fd
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M pp.c

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


  Commit: dceaf83733d5c5ff586216942592b3929eede999
      https://github.com/Perl/perl5/commit/dceaf83733d5c5ff586216942592b3929eede999
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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

  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: 0469ab4d428eccc58381b3a231c9c0aa1ef89b06
      https://github.com/Perl/perl5/commit/0469ab4d428eccc58381b3a231c9c0aa1ef89b06
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M inline.h
    M locale.c

  Log Message:
  -----------
  XXX temp debug? locale.c, inline.h:foldEQ_locale


  Commit: b851351b4379e62620718b2fc32ab0c675159638
      https://github.com/Perl/perl5/commit/b851351b4379e62620718b2fc32ab0c675159638
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

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


  Commit: fa05593173850336ed31aeb4e9f4181bc471fb67
      https://github.com/Perl/perl5/commit/fa05593173850336ed31aeb4e9f4181bc471fb67
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

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


  Commit: b0c6af59ded52c100e8c705ac474c40c68807ab1
      https://github.com/Perl/perl5/commit/b0c6af59ded52c100e8c705ac474c40c68807ab1
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 22ae23fcfd356a847f399961dddaafc7b6aa5b9e
      https://github.com/Perl/perl5/commit/22ae23fcfd356a847f399961dddaafc7b6aa5b9e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 92b0ff07531633f093ef677ea1780d3a54b0915c
      https://github.com/Perl/perl5/commit/92b0ff07531633f093ef677ea1780d3a54b0915c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 9742a22ac2bed5b2c645e496ab4cd63b4e638173
      https://github.com/Perl/perl5/commit/9742a22ac2bed5b2c645e496ab4cd63b4e638173
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M perl.h

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

So they are closer to related statements


  Commit: 2b80ed2be5c1a9b71fbbcb46b6b8cf4344ff87db
      https://github.com/Perl/perl5/commit/2b80ed2be5c1a9b71fbbcb46b6b8cf4344ff87db
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 21e161c1d79c0b7e1d6020e0a2c16fc7307f1a72
      https://github.com/Perl/perl5/commit/21e161c1d79c0b7e1d6020e0a2c16fc7307f1a72
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: b4c49bc1b3152ff2a9fd66120fac913333e79fd0
      https://github.com/Perl/perl5/commit/b4c49bc1b3152ff2a9fd66120fac913333e79fd0
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M pp_sys.c

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


  Commit: 86f715a4935f02e44b2b120feddeba1b510efe84
      https://github.com/Perl/perl5/commit/86f715a4935f02e44b2b120feddeba1b510efe84
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M win32/win32.c

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

These could have races.


  Commit: d7c3d960545ad27be0dc8fa8e3ee356b5287185c
      https://github.com/Perl/perl5/commit/d7c3d960545ad27be0dc8fa8e3ee356b5287185c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M util.c

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

per the Posix standard


  Commit: d67ca956ec28a66d7fd44816ce21f2319cc335a4
      https://github.com/Perl/perl5/commit/d67ca956ec28a66d7fd44816ce21f2319cc335a4
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

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

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


  Commit: 45afee97b53d038aa8593bcb3dc3519d4fc0acec
      https://github.com/Perl/perl5/commit/45afee97b53d038aa8593bcb3dc3519d4fc0acec
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs

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


  Commit: 4c0598695f63137b621a74bde561829f325d2069
      https://github.com/Perl/perl5/commit/4c0598695f63137b621a74bde561829f325d2069
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M cygwin/cygwin.c

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


  Commit: fe02bf484568b1e30b937d98e3d41734be4f521f
      https://github.com/Perl/perl5/commit/fe02bf484568b1e30b937d98e3d41734be4f521f
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 9346366300abd3972266a0601af4abc800e0ad7d
      https://github.com/Perl/perl5/commit/9346366300abd3972266a0601af4abc800e0ad7d
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 730cfeab8481280561fb884bef77e184578fc47c
      https://github.com/Perl/perl5/commit/730cfeab8481280561fb884bef77e184578fc47c
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 3f024d1f941657ff9c67a70311a2b56c2b3a1a4e
      https://github.com/Perl/perl5/commit/3f024d1f941657ff9c67a70311a2b56c2b3a1a4e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 75716e5a392aec791f46ee3846a0e72d7a0509c8
      https://github.com/Perl/perl5/commit/75716e5a392aec791f46ee3846a0e72d7a0509c8
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: e8e21eb51257e0db2639856bdd2814e7db244280
      https://github.com/Perl/perl5/commit/e8e21eb51257e0db2639856bdd2814e7db244280
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: 562289d84a8b4b0f34b90106736d127e671e19d6
      https://github.com/Perl/perl5/commit/562289d84a8b4b0f34b90106736d127e671e19d6
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M pod/perlhacktips.pod

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


  Commit: 1a8231e3d3431369c9bcc2504d949ca24cde87df
      https://github.com/Perl/perl5/commit/1a8231e3d3431369c9bcc2504d949ca24cde87df
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 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: e42cbfae2c3937e4ff1323b2a07f050f2652a846
      https://github.com/Perl/perl5/commit/e42cbfae2c3937e4ff1323b2a07f050f2652a846
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M hints/freebsd.sh

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


  Commit: 453b504c03ad6274b47964f83911e3d279cc7512
      https://github.com/Perl/perl5/commit/453b504c03ad6274b47964f83911e3d279cc7512
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M thread.h

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


  Commit: 6eb04bcc30ec47d78b183f6908f2521eda4c6369
      https://github.com/Perl/perl5/commit/6eb04bcc30ec47d78b183f6908f2521eda4c6369
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M thread.h

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


  Commit: 3895dfeb68573368e70b7f03980ae9bc98460b91
      https://github.com/Perl/perl5/commit/3895dfeb68573368e70b7f03980ae9bc98460b91
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M perl.h

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


  Commit: 7ebb7d0121f8d6001bf0518bf51cda7e3d4e0a68
      https://github.com/Perl/perl5/commit/7ebb7d0121f8d6001bf0518bf51cda7e3d4e0a68
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M cpan/Time-Piece/Piece.xs
    M handy.h
    M iperlsys.h
    M locale.c
    M perl.h
    M regen/reentr.pl
    M regexec.c
    M util.c

  Log Message:
  -----------
  Notes


  Commit: 379d263e7b5c73cb28f6f89e8a51604fe8dcfd8e
      https://github.com/Perl/perl5/commit/379d263e7b5c73cb28f6f89e8a51604fe8dcfd8e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

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

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


  Commit: d2ba4cc7a0f2a03ee363effd446d8922682fa5af
      https://github.com/Perl/perl5/commit/d2ba4cc7a0f2a03ee363effd446d8922682fa5af
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M locale.c

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


  Commit: 487c9cb0b243b1261366ed90f796678ea799b216
      https://github.com/Perl/perl5/commit/487c9cb0b243b1261366ed90f796678ea799b216
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

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

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


  Commit: b9b5dfe3101603dd2d9cb9bf08adb71fc80a43d6
      https://github.com/Perl/perl5/commit/b9b5dfe3101603dd2d9cb9bf08adb71fc80a43d6
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M t/run/locale.t

  Log Message:
  -----------
  locale.t


  Commit: a6b40abf7607144da3ebdf65dac14e100856c98e
      https://github.com/Perl/perl5/commit/a6b40abf7607144da3ebdf65dac14e100856c98e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M t/run/locale.t

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

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


  Commit: afb6c803e5629dc9aff4bfda2b4998eb861ef586
      https://github.com/Perl/perl5/commit/afb6c803e5629dc9aff4bfda2b4998eb861ef586
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M t/run/locale.t

  Log Message:
  -----------
  run/locale.t temp win


  Commit: 1303e34e55229d3a7cb73e724c47b18d6f7c2917
      https://github.com/Perl/perl5/commit/1303e34e55229d3a7cb73e724c47b18d6f7c2917
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M perl.h

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


  Commit: 8ae5f49e03d8c8304827545c5552a68f1535ad5e
      https://github.com/Perl/perl5/commit/8ae5f49e03d8c8304827545c5552a68f1535ad5e
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M lib/locale_threads.t

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


  Commit: 8a3ec85aa9a062602d022a465a88da708d73f212
      https://github.com/Perl/perl5/commit/8a3ec85aa9a062602d022a465a88da708d73f212
  Author: Karl Williamson <khw@cpan.org>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm

  Log Message:
  -----------
  bump ParseXS version


Compare: https://github.com/Perl/perl5/compare/4c1368186ca6...8a3ec85aa9a0



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