Branch: refs/heads/smoke-me/khw-locale
  Home:   https://github.com/Perl/perl5
  Commit: 6d39c99d76a8ada465297880af15ab83e9edec8c
      
https://github.com/Perl/perl5/commit/6d39c99d76a8ada465297880af15ab83e9edec8c
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M dosish.h
    M unixish.h

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

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

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

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


  Commit: 347a63a5b0fa644df61293fab0f26cf241270d80
      
https://github.com/Perl/perl5/commit/347a63a5b0fa644df61293fab0f26cf241270d80
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: cb9afdf74c9e8052bf668263c35169c76b5b00f5
      
https://github.com/Perl/perl5/commit/cb9afdf74c9e8052bf668263c35169c76b5b00f5
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M lib/locale_threads.t

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


  Commit: f868633985d3c24e58b3eb1d49756c745ae5027e
      
https://github.com/Perl/perl5/commit/f868633985d3c24e58b3eb1d49756c745ae5027e
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

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

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


  Commit: e3bcce2e7a0838eb41b7a3cd5a7b9fa4895930c4
      
https://github.com/Perl/perl5/commit/e3bcce2e7a0838eb41b7a3cd5a7b9fa4895930c4
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 3156dc0c175a9a34856d339b6154873a50319092
      
https://github.com/Perl/perl5/commit/3156dc0c175a9a34856d339b6154873a50319092
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 51002121de9eae676c45720bac661723d03cc62b
      
https://github.com/Perl/perl5/commit/51002121de9eae676c45720bac661723d03cc62b
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

Replace isIDFIRST_LC and isWORD_CHAR_LC isIDFIRST_LC  with slightly
faster implementations.


  Commit: adc7fb6aed2d935740eb1f9a1e31f39b13fe437e
      
https://github.com/Perl/perl5/commit/adc7fb6aed2d935740eb1f9a1e31f39b13fe437e
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

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

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


  Commit: 069e3906d72ba6e29d97b0e59e06ad1604c7d7db
      
https://github.com/Perl/perl5/commit/069e3906d72ba6e29d97b0e59e06ad1604c7d7db
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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


  Commit: 6420122126e7979926384f1f0f871ba67c520ac4
      
https://github.com/Perl/perl5/commit/6420122126e7979926384f1f0f871ba67c520ac4
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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


  Commit: 519f68554d1a6af8d3c8187cd5d617428c984a1e
      
https://github.com/Perl/perl5/commit/519f68554d1a6af8d3c8187cd5d617428c984a1e
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

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


  Commit: 72edf913f2836ad3e0723a3e92e18b123a87138e
      
https://github.com/Perl/perl5/commit/72edf913f2836ad3e0723a3e92e18b123a87138e
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: ef5727f62d16b8dd21f717868475ef338678f504
      
https://github.com/Perl/perl5/commit/ef5727f62d16b8dd21f717868475ef338678f504
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

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


  Commit: 960c8684e6391fb26f79069c6e588f4516b8a60d
      
https://github.com/Perl/perl5/commit/960c8684e6391fb26f79069c6e588f4516b8a60d
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

This changes the parameters etc, in preparation for further changes


  Commit: 803856e4740d102a28dedfa27d00de4f1aade97e
      
https://github.com/Perl/perl5/commit/803856e4740d102a28dedfa27d00de4f1aade97e
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

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


  Commit: 587c2ca8fe5e4debc81ca0014b89a06fadce9731
      
https://github.com/Perl/perl5/commit/587c2ca8fe5e4debc81ca0014b89a06fadce9731
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

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


  Commit: 0c7fceed129d6b4a4b03071e180e9ab2f49cd496
      
https://github.com/Perl/perl5/commit/0c7fceed129d6b4a4b03071e180e9ab2f49cd496
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

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


  Commit: f6b5930b90f2c61239fab782dd61be51b6b10286
      
https://github.com/Perl/perl5/commit/f6b5930b90f2c61239fab782dd61be51b6b10286
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

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


  Commit: 15ebc81f9410fbe018ccc560e3dcddce770f6259
      
https://github.com/Perl/perl5/commit/15ebc81f9410fbe018ccc560e3dcddce770f6259
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

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

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


  Commit: a0937bde9ad4a405544d28d3dc4b60c9741b692a
      
https://github.com/Perl/perl5/commit/a0937bde9ad4a405544d28d3dc4b60c9741b692a
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

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


  Commit: 14e4abb6d50df98ef1bd77bed95d91a5c1c5cc8f
      
https://github.com/Perl/perl5/commit/14e4abb6d50df98ef1bd77bed95d91a5c1c5cc8f
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

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

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

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

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


  Commit: c6cb2abf3f2f071a09cfaab47a78dcc818eb2cfc
      
https://github.com/Perl/perl5/commit/c6cb2abf3f2f071a09cfaab47a78dcc818eb2cfc
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: aa35fe089b73368fca5e266933a61cc2fed4d0e5
      
https://github.com/Perl/perl5/commit/aa35fe089b73368fca5e266933a61cc2fed4d0e5
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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


  Commit: 46037254d5dd67b1324a3cd12eb8f10cdb92683d
      
https://github.com/Perl/perl5/commit/46037254d5dd67b1324a3cd12eb8f10cdb92683d
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

As a convenience to other code.


  Commit: 48f61715430b6acde0e2058477f139814e4a15f7
      
https://github.com/Perl/perl5/commit/48f61715430b6acde0e2058477f139814e4a15f7
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M regexec.c

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

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


  Commit: 89ad75bc9c6aa792a7bcfe056bf2ce4a35aa8d70
      
https://github.com/Perl/perl5/commit/89ad75bc9c6aa792a7bcfe056bf2ce4a35aa8d70
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M regexec.c

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

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


  Commit: 5e765b840c1d75aa97041599154a4b3eb2fb2785
      
https://github.com/Perl/perl5/commit/5e765b840c1d75aa97041599154a4b3eb2fb2785
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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


  Commit: a3c7ef1a3247fe34ab4d5e6573f92b8be7ab5a64
      
https://github.com/Perl/perl5/commit/a3c7ef1a3247fe34ab4d5e6573f92b8be7ab5a64
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

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

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


  Commit: f3269af939b04ca2ce157976f1c06c9389ca45a1
      
https://github.com/Perl/perl5/commit/f3269af939b04ca2ce157976f1c06c9389ca45a1
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

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

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


  Commit: 81e573674f0e247fc7738a0035917db772e2c12c
      
https://github.com/Perl/perl5/commit/81e573674f0e247fc7738a0035917db772e2c12c
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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


  Commit: b43afc3dd61d7e4fa07c33ec0cf99d2daa5eba61
      
https://github.com/Perl/perl5/commit/b43afc3dd61d7e4fa07c33ec0cf99d2daa5eba61
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 67ab63e5b4d0cf0e6e0480bd0e2421198ad81c6d
      
https://github.com/Perl/perl5/commit/67ab63e5b4d0cf0e6e0480bd0e2421198ad81c6d
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 245c2d933b511ab61145c55d3ef196903be628aa
      
https://github.com/Perl/perl5/commit/245c2d933b511ab61145c55d3ef196903be628aa
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: a39d50d83b508737133ee7ba41e1a8ece636e7b4
      
https://github.com/Perl/perl5/commit/a39d50d83b508737133ee7ba41e1a8ece636e7b4
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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

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


  Commit: deae57fdaa798b4330a80cab2439dd4f328b9526
      
https://github.com/Perl/perl5/commit/deae57fdaa798b4330a80cab2439dd4f328b9526
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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

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


  Commit: 930f8f955c611693d42559630cc1c393bc62a0f7
      
https://github.com/Perl/perl5/commit/930f8f955c611693d42559630cc1c393bc62a0f7
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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

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


  Commit: f27cb496e2de81bc8cbe2587da57159e9b6911db
      
https://github.com/Perl/perl5/commit/f27cb496e2de81bc8cbe2587da57159e9b6911db
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: a2f9e3febec00d17dcde2a43a81b680b2db82566
      
https://github.com/Perl/perl5/commit/a2f9e3febec00d17dcde2a43a81b680b2db82566
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 110697b22df8a0af3bd572905b83826492e9b2f3
      
https://github.com/Perl/perl5/commit/110697b22df8a0af3bd572905b83826492e9b2f3
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

Some of these are to make future difference listings shorter

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


  Commit: 1a179908bce34e6abbb7f60217f545566fac87d2
      
https://github.com/Perl/perl5/commit/1a179908bce34e6abbb7f60217f545566fac87d2
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 608db018c0a16a68cc25aa6ec24766aa09f0d982
      
https://github.com/Perl/perl5/commit/608db018c0a16a68cc25aa6ec24766aa09f0d982
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: cf10ad0b02c21bbf7953d9b4704f7bacb7f61a56
      
https://github.com/Perl/perl5/commit/cf10ad0b02c21bbf7953d9b4704f7bacb7f61a56
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 1e8e399a9e836a6d3ea08347f7a1b131713ee344
      
https://github.com/Perl/perl5/commit/1e8e399a9e836a6d3ea08347f7a1b131713ee344
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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

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

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


  Commit: ea26d047416fd22c660749a82102281bc0b65f05
      
https://github.com/Perl/perl5/commit/ea26d047416fd22c660749a82102281bc0b65f05
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 76c744cc04d15e758896f535f34cb1b75907692a
      
https://github.com/Perl/perl5/commit/76c744cc04d15e758896f535f34cb1b75907692a
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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

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

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


  Commit: d858ffdf10a28fe3441c306387e5d35f7030ee63
      
https://github.com/Perl/perl5/commit/d858ffdf10a28fe3441c306387e5d35f7030ee63
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: cff606cc12becac6cf8e9cae5f55b8e3060921c5
      
https://github.com/Perl/perl5/commit/cff606cc12becac6cf8e9cae5f55b8e3060921c5
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: d5e2d6d71ef344f27e03c9fa31093860abf03a67
      
https://github.com/Perl/perl5/commit/d5e2d6d71ef344f27e03c9fa31093860abf03a67
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 63d1ab3e2e8ce15f6370f175650b6062adc4102d
      
https://github.com/Perl/perl5/commit/63d1ab3e2e8ce15f6370f175650b6062adc4102d
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

This panic is done when a setlocale unexpectedly fails.


  Commit: 2c786d922ccc32638b5c4973c4f76d911179eaf6
      
https://github.com/Perl/perl5/commit/2c786d922ccc32638b5c4973c4f76d911179eaf6
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 3e4f1aec598193218cb0e72956f33b5d666cff52
      
https://github.com/Perl/perl5/commit/3e4f1aec598193218cb0e72956f33b5d666cff52
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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

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


  Commit: 5f5fa618f9818184e67812d194df05201ada5859
      
https://github.com/Perl/perl5/commit/5f5fa618f9818184e67812d194df05201ada5859
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: f40ceaf3824dc32d8ea474f612243af8558ba29c
      
https://github.com/Perl/perl5/commit/f40ceaf3824dc32d8ea474f612243af8558ba29c
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: dfd5dbc900c99c19d92cf0950ed407fe3829b0cb
      
https://github.com/Perl/perl5/commit/dfd5dbc900c99c19d92cf0950ed407fe3829b0cb
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h

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

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


  Commit: 3e7e84dc2102c57a16fcaa809de7489f2b73cbf3
      
https://github.com/Perl/perl5/commit/3e7e84dc2102c57a16fcaa809de7489f2b73cbf3
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

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

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

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

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

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


  Commit: abbd8ccfe365155100155cac4d819e737804b376
      
https://github.com/Perl/perl5/commit/abbd8ccfe365155100155cac4d819e737804b376
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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

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

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

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


  Commit: 09d0c67702dbae0dcd2cd899a039d03271e23775
      
https://github.com/Perl/perl5/commit/09d0c67702dbae0dcd2cd899a039d03271e23775
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

This adds some compile safety to these.


  Commit: 0e7ae6b973fc5bc2498ab98a07e5744454e81784
      
https://github.com/Perl/perl5/commit/0e7ae6b973fc5bc2498ab98a07e5744454e81784
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

This function is rewritten to handle LC_ALL, and to handle certain buggy
Win32 locale names.  This commit also calls it in appropriate places
where those buggy names could be returned.

setlocale() on Windows may return a locale that cannot be used as input
to a future setlocale().  This is contrary to the C89 standard, and
appears to have been an oversight corrected in the most recent Windows
version(s).

This commit solves the problem (as far as I know) by looking for the
problematic syntax and adjusting it.

I also rewrote the function to handle LC_ALL, which fixes that deficiency.

And, a change in that that I think is an improvement is that everything
starting with a \n is trimmed, instead of just a trailing \n being
chomped.


  Commit: 684e9b573c76a971a99563460ac3db952dcd3a65
      
https://github.com/Perl/perl5/commit/684e9b573c76a971a99563460ac3db952dcd3a65
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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


  Commit: 40e6e9034de8a6c96fd489a53dbc8dcee8be75b5
      
https://github.com/Perl/perl5/commit/40e6e9034de8a6c96fd489a53dbc8dcee8be75b5
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX debug stdized


  Commit: b10a08ca7430d68189b1f6bb42f73aef0b452609
      
https://github.com/Perl/perl5/commit/b10a08ca7430d68189b1f6bb42f73aef0b452609
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 693217354d58d75bd1365679d25ea4bac6afb4d3
      
https://github.com/Perl/perl5/commit/693217354d58d75bd1365679d25ea4bac6afb4d3
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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

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


  Commit: 183aad4e6cf1a77c7f4d2dffa44be2d82ccf942d
      
https://github.com/Perl/perl5/commit/183aad4e6cf1a77c7f4d2dffa44be2d82ccf942d
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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

A goto is hence replaced by a recursive call.


  Commit: 9938d0bbc9b9cecc6bee333937cbe63e70087159
      
https://github.com/Perl/perl5/commit/9938d0bbc9b9cecc6bee333937cbe63e70087159
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 81440a6a1c12357d4690000cc7865c51cc6c4e56
      
https://github.com/Perl/perl5/commit/81440a6a1c12357d4690000cc7865c51cc6c4e56
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 09533d77341a90e802ad91ffaf1e4d350096854a
      
https://github.com/Perl/perl5/commit/09533d77341a90e802ad91ffaf1e4d350096854a
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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


  Commit: d094c5b9d95829cfb3d5e180043667aa6faf4ef1
      
https://github.com/Perl/perl5/commit/d094c5b9d95829cfb3d5e180043667aa6faf4ef1
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 37ca2e183ce2ddda7a6cec45640775eaf79100fb
      
https://github.com/Perl/perl5/commit/37ca2e183ce2ddda7a6cec45640775eaf79100fb
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: c21861ba75f6b6bf0c516d8bd96d4cd0bc08ce85
      
https://github.com/Perl/perl5/commit/c21861ba75f6b6bf0c516d8bd96d4cd0bc08ce85
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M sv.c

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

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


  Commit: fc94ffc5d9e45d9dffe81385f5de12bedbbe3deb
      
https://github.com/Perl/perl5/commit/fc94ffc5d9e45d9dffe81385f5de12bedbbe3deb
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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

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


  Commit: b7bdf2484bed063c3f23e1eb0e40b8df22447c9b
      
https://github.com/Perl/perl5/commit/b7bdf2484bed063c3f23e1eb0e40b8df22447c9b
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: c2c251d2870ce77cf19b062ec8ebdc2b22fe56aa
      
https://github.com/Perl/perl5/commit/c2c251d2870ce77cf19b062ec8ebdc2b22fe56aa
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 025387c91c4b732feb096dea98ea576698891ccf
      
https://github.com/Perl/perl5/commit/025387c91c4b732feb096dea98ea576698891ccf
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs

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

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


  Commit: 6d820ef438582bc8bc935135186eae1a054a5364
      
https://github.com/Perl/perl5/commit/6d820ef438582bc8bc935135186eae1a054a5364
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs

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

Properly indent some nested preprocessor directives


  Commit: d7bcec98ec000fe337efad8a1fe0d013ff555d72
      
https://github.com/Perl/perl5/commit/d7bcec98ec000fe337efad8a1fe0d013ff555d72
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

This avoids duplicated logic.


  Commit: a541a40f8d55844901a79fa0125f337112003762
      
https://github.com/Perl/perl5/commit/a541a40f8d55844901a79fa0125f337112003762
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: e0271cec7d6fd9a93ba83e9165f6e9d6ef4a4101
      
https://github.com/Perl/perl5/commit/e0271cec7d6fd9a93ba83e9165f6e9d6ef4a4101
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 5bb8a5bd060f0f49960cf6031d151df1eedb9c98
      
https://github.com/Perl/perl5/commit/5bb8a5bd060f0f49960cf6031d151df1eedb9c98
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: b03a3f649fd004afb11c902169ee207001b3b65d
      
https://github.com/Perl/perl5/commit/b03a3f649fd004afb11c902169ee207001b3b65d
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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


  Commit: 05cee92a0f7a85ac932dd428cb763615e9567465
      
https://github.com/Perl/perl5/commit/05cee92a0f7a85ac932dd428cb763615e9567465
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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

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


  Commit: 99d2c97777f2c641b0236314847f2b4c082928dc
      
https://github.com/Perl/perl5/commit/99d2c97777f2c641b0236314847f2b4c082928dc
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

The extra syllable(s) are unnecessary noise


  Commit: 03281ba30e8dc753782772d33a5973bec7b84155
      
https://github.com/Perl/perl5/commit/03281ba30e8dc753782772d33a5973bec7b84155
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 0d3fddd778353269278d845e1544a991884fa498
      
https://github.com/Perl/perl5/commit/0d3fddd778353269278d845e1544a991884fa498
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

This allows some preprocessor conditionals to be removed


  Commit: eeb81f26d42445746a82bd14689f27d656b4afb7
      
https://github.com/Perl/perl5/commit/eeb81f26d42445746a82bd14689f27d656b4afb7
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

strEQ and && already return booleans


  Commit: 8c31067ca0904e0fa86e83006f6465306d066d6b
      
https://github.com/Perl/perl5/commit/8c31067ca0904e0fa86e83006f6465306d066d6b
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

On platforms without nl_langinfo(), we derive the currency symbol from
localeconv().  The symbol must be tweaked to conform to nl_langinfo()
standards.  Prior to this commit, it guessed at how to tweak a rare
circumstance.  I 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: eda76d2d8ef37c6de06c7f4a90906ff377bf011f
      
https://github.com/Perl/perl5/commit/eda76d2d8ef37c6de06c7f4a90906ff377bf011f
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 346b61ac1bc04d9535a097ac8174762b76993358
      
https://github.com/Perl/perl5/commit/346b61ac1bc04d9535a097ac8174762b76993358
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 08bb3bf687d4afdb4c6b6df1f46b189b6be13c75
      
https://github.com/Perl/perl5/commit/08bb3bf687d4afdb4c6b6df1f46b189b6be13c75
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

Previous commits have gotten rid of this parameter to S_save_to_buffer


  Commit: 41e04223481f9d5fb403e14d89f9d4eb31578a5d
      
https://github.com/Perl/perl5/commit/41e04223481f9d5fb403e14d89f9d4eb31578a5d
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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

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


  Commit: a7e1ebc5d411a1ba6ad8f5e40887afbeb419c9d0
      
https://github.com/Perl/perl5/commit/a7e1ebc5d411a1ba6ad8f5e40887afbeb419c9d0
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

This is in preparation for the next commit


  Commit: 667736249ce49dee06e5b361ec924c592758115d
      
https://github.com/Perl/perl5/commit/667736249ce49dee06e5b361ec924c592758115d
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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


  Commit: 6d52be65d74244037e70990e531c1b01793a9a96
      
https://github.com/Perl/perl5/commit/6d52be65d74244037e70990e531c1b01793a9a96
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: f698fc3e12e42c2b16b956674ac4c9e5f078fe28
      
https://github.com/Perl/perl5/commit/f698fc3e12e42c2b16b956674ac4c9e5f078fe28
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

It won't be actually used until the next commit


  Commit: 96daaf4a653bc607fb44063d327b7efa81f8906e
      
https://github.com/Perl/perl5/commit/96daaf4a653bc607fb44063d327b7efa81f8906e
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

This commit adds three checks:

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

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

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

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


  Commit: 772e4931cadfa0b6cc727e25a979b78be46930c2
      
https://github.com/Perl/perl5/commit/772e4931cadfa0b6cc727e25a979b78be46930c2
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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


  Commit: f2b59eec2339c4a6ad2378c985bbb54e8573b5a3
      
https://github.com/Perl/perl5/commit/f2b59eec2339c4a6ad2378c985bbb54e8573b5a3
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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


  Commit: 6b88ebef69852c915811c1038ac5e37b3ce20aaf
      
https://github.com/Perl/perl5/commit/6b88ebef69852c915811c1038ac5e37b3ce20aaf
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 74eb5617ca3132277095f1c323e0c36f00af400d
      
https://github.com/Perl/perl5/commit/74eb5617ca3132277095f1c323e0c36f00af400d
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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

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


  Commit: 5b29ae9c86f3307b7a36b0f93a178685b490e69a
      
https://github.com/Perl/perl5/commit/5b29ae9c86f3307b7a36b0f93a178685b490e69a
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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

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


  Commit: e2ea17b6330888df295ccbab3887a0fcf1d2955a
      
https://github.com/Perl/perl5/commit/e2ea17b6330888df295ccbab3887a0fcf1d2955a
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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

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

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


  Commit: 737f6ff9246c447f519c27874d9d796c413fb3c4
      
https://github.com/Perl/perl5/commit/737f6ff9246c447f519c27874d9d796c413fb3c4
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: b0d38553a8090a6a955d08e725f5485e10c62454
      
https://github.com/Perl/perl5/commit/b0d38553a8090a6a955d08e725f5485e10c62454
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 342fc5008c8063adb5d01b396e8c89eb9f17200f
      
https://github.com/Perl/perl5/commit/342fc5008c8063adb5d01b396e8c89eb9f17200f
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: c1fe4fa7c96825a85092b19c55ba50fdba956e9d
      
https://github.com/Perl/perl5/commit/c1fe4fa7c96825a85092b19c55ba50fdba956e9d
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: ba37bf90b08106d5d2bf89e119169c385c5c8c10
      
https://github.com/Perl/perl5/commit/ba37bf90b08106d5d2bf89e119169c385c5c8c10
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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


  Commit: eb5f2e1f5fbb41af44fa2b844dde163d197b2aff
      
https://github.com/Perl/perl5/commit/eb5f2e1f5fbb41af44fa2b844dde163d197b2aff
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 3e9bb073971dd480d38430d1c346f474f8fd29f4
      
https://github.com/Perl/perl5/commit/3e9bb073971dd480d38430d1c346f474f8fd29f4
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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

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

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


  Commit: 80f8add09540e68ea05455a0fc1b6b74082de989
      
https://github.com/Perl/perl5/commit/80f8add09540e68ea05455a0fc1b6b74082de989
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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


  Commit: 8ce392f435f4b9236161774a0138a0f845385ce2
      
https://github.com/Perl/perl5/commit/8ce392f435f4b9236161774a0138a0f845385ce2
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M mg.c

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

Indent newly formed block from the previous commit.


  Commit: ac4735a431425bd4724c8387fcb4e199de40a212
      
https://github.com/Perl/perl5/commit/ac4735a431425bd4724c8387fcb4e199de40a212
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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

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


  Commit: b93e3cc8a894ed8b454c1cd68a335653cb1f2331
      
https://github.com/Perl/perl5/commit/b93e3cc8a894ed8b454c1cd68a335653cb1f2331
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 8124e5311269d39358fe57d05fbf46b5ed576450
      
https://github.com/Perl/perl5/commit/8124e5311269d39358fe57d05fbf46b5ed576450
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 5173859d11f16a69bf75c1b3f5ff7f4b8c9b91e4
      
https://github.com/Perl/perl5/commit/5173859d11f16a69bf75c1b3f5ff7f4b8c9b91e4
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 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: 27a2e750b7f7fbc18d9a625877dde3882c78fff5
      
https://github.com/Perl/perl5/commit/27a2e750b7f7fbc18d9a625877dde3882c78fff5
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 9cd14c591415ff9f262ed650dac0b306ef091342
      
https://github.com/Perl/perl5/commit/9cd14c591415ff9f262ed650dac0b306ef091342
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 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: 31d9b57d38c90f40c90d2a588d42d224a7a84b08
      
https://github.com/Perl/perl5/commit/31d9b57d38c90f40c90d2a588d42d224a7a84b08
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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

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


  Commit: 1dfc82c52ac649dcafe7fe0513dae35f435eb88f
      
https://github.com/Perl/perl5/commit/1dfc82c52ac649dcafe7fe0513dae35f435eb88f
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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

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


  Commit: 6deeeea0dab4704e9d417174d63d67ff03f06988
      
https://github.com/Perl/perl5/commit/6deeeea0dab4704e9d417174d63d67ff03f06988
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M intrpvar.h

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

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


  Commit: e4b899bab917175f25b11797e184976b075e4d5b
      
https://github.com/Perl/perl5/commit/e4b899bab917175f25b11797e184976b075e4d5b
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

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

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

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


  Commit: cb49a802124e496e17ecae3abca11ad39b2a5b46
      
https://github.com/Perl/perl5/commit/cb49a802124e496e17ecae3abca11ad39b2a5b46
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 71b831da784729fee805a9cc1a9ee98ff92096ac
      
https://github.com/Perl/perl5/commit/71b831da784729fee805a9cc1a9ee98ff92096ac
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX PORCELAIN_SET not yet defined 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: 84f405da696ec422e6256831ffa1e9677987e826
      
https://github.com/Perl/perl5/commit/84f405da696ec422e6256831ffa1e9677987e826
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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


  Commit: 4a0c314fdfc5bed96bdfae78d47df4f15421e921
      
https://github.com/Perl/perl5/commit/4a0c314fdfc5bed96bdfae78d47df4f15421e921
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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

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


  Commit: 1b19a5e8ef4c9dc3b218211e64e3d4b4788d5f9f
      
https://github.com/Perl/perl5/commit/1b19a5e8ef4c9dc3b218211e64e3d4b4788d5f9f
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: db1f7038d634e6797c730b00887c3c391bb9c84c
      
https://github.com/Perl/perl5/commit/db1f7038d634e6797c730b00887c3c391bb9c84c
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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

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

Explanatory comments are also added.


  Commit: 4238cfe130c17110472c4889d6f9dc0ebce08ce7
      
https://github.com/Perl/perl5/commit/4238cfe130c17110472c4889d6f9dc0ebce08ce7
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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


  Commit: 50a1c3e87ff28f1c6353ee534f815b3827450901
      
https://github.com/Perl/perl5/commit/50a1c3e87ff28f1c6353ee534f815b3827450901
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 3b0ad7354881f7f1d5265f76de6112b26e81c9ef
      
https://github.com/Perl/perl5/commit/3b0ad7354881f7f1d5265f76de6112b26e81c9ef
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: b62e05aa67c8a5dfb1b2febd3278dd29f619d79b
      
https://github.com/Perl/perl5/commit/b62e05aa67c8a5dfb1b2febd3278dd29f619d79b
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 9195d9e941838b74e339fd1aeb553e2fb7500459
      
https://github.com/Perl/perl5/commit/9195d9e941838b74e339fd1aeb553e2fb7500459
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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

This commit brings the locales into alignment if necessary


  Commit: e56d1afd005e6b77a986b88ad0ed9186c58f5f0c
      
https://github.com/Perl/perl5/commit/e56d1afd005e6b77a986b88ad0ed9186c58f5f0c
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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


  Commit: 7a2a9d95e5bb6718c52fa0f856363d06641d212b
      
https://github.com/Perl/perl5/commit/7a2a9d95e5bb6718c52fa0f856363d06641d212b
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M lib/locale.t

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


  Commit: d12531f65820c3ce7f783960dbfa50ff686c452f
      
https://github.com/Perl/perl5/commit/d12531f65820c3ce7f783960dbfa50ff686c452f
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: d2f4f6892b726fb6d180bc6623e8c56a93be25e8
      
https://github.com/Perl/perl5/commit/d2f4f6892b726fb6d180bc6623e8c56a93be25e8
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 50f06af73ca8fbaf474741cdf4ae5fef83e658fc
      
https://github.com/Perl/perl5/commit/50f06af73ca8fbaf474741cdf4ae5fef83e658fc
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 438400918c41b5d4a37c7d0e7c4f8335f4f2af33
      
https://github.com/Perl/perl5/commit/438400918c41b5d4a37c7d0e7c4f8335f4f2af33
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

This prints out more information, better organized.

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


  Commit: ce17e8708d560267f8d252041ee5f280841c7ab5
      
https://github.com/Perl/perl5/commit/ce17e8708d560267f8d252041ee5f280841c7ab5
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 01f8cc9c5fafa13cd81209e4dd6f497f19ef793f
      
https://github.com/Perl/perl5/commit/01f8cc9c5fafa13cd81209e4dd6f497f19ef793f
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

Hex is the more familiar form


  Commit: f96da883b6e5ae2c4fa9df16459d9ad494cf1a33
      
https://github.com/Perl/perl5/commit/f96da883b6e5ae2c4fa9df16459d9ad494cf1a33
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 1dba9a112ccf1a73afebc4c22b415bdb705cf34b
      
https://github.com/Perl/perl5/commit/1dba9a112ccf1a73afebc4c22b415bdb705cf34b
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h

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

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


  Commit: e80508e56e0871cfd1fbef9dc0086be266e2721f
      
https://github.com/Perl/perl5/commit/e80508e56e0871cfd1fbef9dc0086be266e2721f
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h

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

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


  Commit: 010d5f9b03cfdcd557dcda7adf9eb126f4fa02dd
      
https://github.com/Perl/perl5/commit/010d5f9b03cfdcd557dcda7adf9eb126f4fa02dd
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 0855228dfd86de146ea479b771df7a937d595ee3
      
https://github.com/Perl/perl5/commit/0855228dfd86de146ea479b771df7a937d595ee3
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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


  Commit: d34dfdbb63e9efefec1b85a65f248c56c676f74c
      
https://github.com/Perl/perl5/commit/d34dfdbb63e9efefec1b85a65f248c56c676f74c
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h

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

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

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


  Commit: 618b069739a440bcc9755d5320b621f4dc5fd0c7
      
https://github.com/Perl/perl5/commit/618b069739a440bcc9755d5320b621f4dc5fd0c7
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h

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

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


  Commit: 8aefe54342d98c7604cb1521e40bdacd9dfaf88b
      
https://github.com/Perl/perl5/commit/8aefe54342d98c7604cb1521e40bdacd9dfaf88b
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

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

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


  Commit: 5f54a72addd9f54a6eb00f9b77e442b92763d89e
      
https://github.com/Perl/perl5/commit/5f54a72addd9f54a6eb00f9b77e442b92763d89e
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

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

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


  Commit: 5aae35df9fc60a49fa68bd373a35c678cb78bf08
      
https://github.com/Perl/perl5/commit/5aae35df9fc60a49fa68bd373a35c678cb78bf08
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c
    M perl.h

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

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

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

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

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


  Commit: 49e9c52a66437864c61a19c76dedd5a782cfd852
      
https://github.com/Perl/perl5/commit/49e9c52a66437864c61a19c76dedd5a782cfd852
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h

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

This simplifies slightly, and will allow further simplification


  Commit: b4827c5662f6ee211bcd22bed4929feaec3f8e3a
      
https://github.com/Perl/perl5/commit/b4827c5662f6ee211bcd22bed4929feaec3f8e3a
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h

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

To enable future simplifications


  Commit: 95ee0801d006197877e73f9a4d807a2a48297b01
      
https://github.com/Perl/perl5/commit/95ee0801d006197877e73f9a4d807a2a48297b01
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 3157c4450caba4b9ff861dd0f4dd330b8a740623
      
https://github.com/Perl/perl5/commit/3157c4450caba4b9ff861dd0f4dd330b8a740623
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

All it does is:

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

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


  Commit: 6fd2b4f269e4f50cf910ee13c39ab3895bf05742
      
https://github.com/Perl/perl5/commit/6fd2b4f269e4f50cf910ee13c39ab3895bf05742
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h

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

Previous commits have left this empty except for comments.


  Commit: 72caa84d67629a357ea31f25e1e35f29a8cf986d
      
https://github.com/Perl/perl5/commit/72caa84d67629a357ea31f25e1e35f29a8cf986d
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M pp.c

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


  Commit: 91c5b85c1534585c97a86841bd932e9a81be6329
      
https://github.com/Perl/perl5/commit/91c5b85c1534585c97a86841bd932e9a81be6329
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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

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

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


  Commit: a3ed0ac0212307e22e815edeb7cfc54ea82f050e
      
https://github.com/Perl/perl5/commit/a3ed0ac0212307e22e815edeb7cfc54ea82f050e
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M inline.h
    M locale.c

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


  Commit: 6f9a1870ad755d28d2665564827e48b6c6064dbb
      
https://github.com/Perl/perl5/commit/6f9a1870ad755d28d2665564827e48b6c6064dbb
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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


  Commit: 28838ab30880594abf101414ea44169c7c8781c8
      
https://github.com/Perl/perl5/commit/28838ab30880594abf101414ea44169c7c8781c8
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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


  Commit: f0a57817ac8fc2724250976ff6494001da8ccf30
      
https://github.com/Perl/perl5/commit/f0a57817ac8fc2724250976ff6494001da8ccf30
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h

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

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


  Commit: 0f71b5e2c67d0b4240463ef06389cd52a22aaf77
      
https://github.com/Perl/perl5/commit/0f71b5e2c67d0b4240463ef06389cd52a22aaf77
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h
    M time64.c

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

These are subsumed by gwENVr_LOCALEr_LOCK created in the previous
commit.


  Commit: fc40209da3ff478553651942d816e79c76cdf854
      
https://github.com/Perl/perl5/commit/fc40209da3ff478553651942d816e79c76cdf854
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

The old name was confusing.


  Commit: 4339df5c7aa60b6b7df923af8cd6ed5c4c0f191a
      
https://github.com/Perl/perl5/commit/4339df5c7aa60b6b7df923af8cd6ed5c4c0f191a
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h

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

So they are closer to related statements


  Commit: 6d7af45aa05ae04c62f8f7fc1766083ac3d8a354
      
https://github.com/Perl/perl5/commit/6d7af45aa05ae04c62f8f7fc1766083ac3d8a354
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h
    M util.c

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

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

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

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


  Commit: 0f87b71e9c1c2a8d0964a05195c6b36e0f4e7ac2
      
https://github.com/Perl/perl5/commit/0f87b71e9c1c2a8d0964a05195c6b36e0f4e7ac2
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M time64.c

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

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


  Commit: 86d690438c3a054a696d520cba7ef7ea9c3bed23
      
https://github.com/Perl/perl5/commit/86d690438c3a054a696d520cba7ef7ea9c3bed23
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M pp_sys.c

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


  Commit: 05c45d3dcc7951e2e2ea97122d20251b0b6156b1
      
https://github.com/Perl/perl5/commit/05c45d3dcc7951e2e2ea97122d20251b0b6156b1
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M win32/win32.c

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

These could have races.


  Commit: fabd0d54d6d53d20b1383e52f0bf723524eba327
      
https://github.com/Perl/perl5/commit/fabd0d54d6d53d20b1383e52f0bf723524eba327
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M ext/POSIX/POSIX.xs

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


  Commit: 694ff6368b0d820d239e2502b3f6ea0d8347031c
      
https://github.com/Perl/perl5/commit/694ff6368b0d820d239e2502b3f6ea0d8347031c
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M util.c

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

per the Posix standard


  Commit: 9f966b0c75fca565bc06fa8de4f6710a295c79d0
      
https://github.com/Perl/perl5/commit/9f966b0c75fca565bc06fa8de4f6710a295c79d0
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M util.c

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


  Commit: 445530411495fa6d1246341b52dacddf481f1694
      
https://github.com/Perl/perl5/commit/445530411495fa6d1246341b52dacddf481f1694
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M cygwin/cygwin.c

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


  Commit: ac76f54e5c470bbb5c95cbe752a2a9ae5b85e9a7
      
https://github.com/Perl/perl5/commit/ac76f54e5c470bbb5c95cbe752a2a9ae5b85e9a7
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M os2/os2.c

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

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


  Commit: d722f38cce85c6fbf05ae5f2ce59ae6377c1bece
      
https://github.com/Perl/perl5/commit/d722f38cce85c6fbf05ae5f2ce59ae6377c1bece
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: b52f437cba78deb0d449ccb8fe460731576788c2
      
https://github.com/Perl/perl5/commit/b52f437cba78deb0d449ccb8fe460731576788c2
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: 8610a10f531636f5e3e98546d04d903c78b8b680
      
https://github.com/Perl/perl5/commit/8610a10f531636f5e3e98546d04d903c78b8b680
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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


  Commit: 985d7456e2ad4130ae816ebf7c3ee28123afabf1
      
https://github.com/Perl/perl5/commit/985d7456e2ad4130ae816ebf7c3ee28123afabf1
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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


  Commit: 8de0055074e360557308df73dd0ea3599b5e1acb
      
https://github.com/Perl/perl5/commit/8de0055074e360557308df73dd0ea3599b5e1acb
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

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


  Commit: 110e3fd17fc8a71121a11c0ec480f9709168b981
      
https://github.com/Perl/perl5/commit/110e3fd17fc8a71121a11c0ec480f9709168b981
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M pod/perlhacktips.pod

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


  Commit: af209008a26d1489bcbe3676734dfff50b217d84
      
https://github.com/Perl/perl5/commit/af209008a26d1489bcbe3676734dfff50b217d84
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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


  Commit: 999e0c809ca98151cbef73e636534a478f6b2982
      
https://github.com/Perl/perl5/commit/999e0c809ca98151cbef73e636534a478f6b2982
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M hints/freebsd.sh

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


  Commit: 854b9df53d572fce0171c87a258b9bc38df23321
      
https://github.com/Perl/perl5/commit/854b9df53d572fce0171c87a258b9bc38df23321
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M thread.h

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


  Commit: ad424a38bd8a35bdf9cd1c19ae9891dcc8bcd0da
      
https://github.com/Perl/perl5/commit/ad424a38bd8a35bdf9cd1c19ae9891dcc8bcd0da
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M thread.h

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


  Commit: 3a2ee7fe1951c97caaa4d0dd01f72ab224180e43
      
https://github.com/Perl/perl5/commit/3a2ee7fe1951c97caaa4d0dd01f72ab224180e43
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h

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


  Commit: b03bf56f52dbca03fafaa7b70585cc269084debc
      
https://github.com/Perl/perl5/commit/b03bf56f52dbca03fafaa7b70585cc269084debc
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 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 sv.c
    M util.c

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


  Commit: f2d0a5e3e62237e986549a2d89fe64af540bb832
      
https://github.com/Perl/perl5/commit/f2d0a5e3e62237e986549a2d89fe64af540bb832
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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


  Commit: f505cb45947b4a40a7a9f21192c6d813b441b409
      
https://github.com/Perl/perl5/commit/f505cb45947b4a40a7a9f21192c6d813b441b409
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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


  Commit: 04521afead6ef50555eaea28d5e725f6d4c0a94f
      
https://github.com/Perl/perl5/commit/04521afead6ef50555eaea28d5e725f6d4c0a94f
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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


  Commit: 83e1e1e75b6c3b2ecaadc957f46f827629effb87
      
https://github.com/Perl/perl5/commit/83e1e1e75b6c3b2ecaadc957f46f827629effb87
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M t/run/locale.t

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


  Commit: 7ce74bb5e11a8c0948cce235ba6651f8e4595124
      
https://github.com/Perl/perl5/commit/7ce74bb5e11a8c0948cce235ba6651f8e4595124
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M t/run/locale.t

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

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


  Commit: 9e2c05ebafe78a947e9ec31efa3356f2df229ea0
      
https://github.com/Perl/perl5/commit/9e2c05ebafe78a947e9ec31efa3356f2df229ea0
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M t/run/locale.t

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


  Commit: 32c25a5d66101bcbd277d44bc558083fd8a7de7e
      
https://github.com/Perl/perl5/commit/32c25a5d66101bcbd277d44bc558083fd8a7de7e
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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

Remove some blank lines that don't contribute to readability


  Commit: b3d92c1cd4cd94fe8941518293de977af04c5bcc
      
https://github.com/Perl/perl5/commit/b3d92c1cd4cd94fe8941518293de977af04c5bcc
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: ee29d6f5592f470201781efe3b5f2dc8554a13fb
      
https://github.com/Perl/perl5/commit/ee29d6f5592f470201781efe3b5f2dc8554a13fb
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

This code should no longer be necessary; but verify


  Commit: acb0c2065dc391d42aef53d30699ecd8bd1f5ff1
      
https://github.com/Perl/perl5/commit/acb0c2065dc391d42aef53d30699ecd8bd1f5ff1
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  XXX loc_tools: debug, white space


  Commit: df852f66cb266d27846ae2ba9e7e3569658e3900
      
https://github.com/Perl/perl5/commit/df852f66cb266d27846ae2ba9e7e3569658e3900
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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


  Commit: 2ac3ce8e89863575691b31c81287486d4ad2fbeb
      
https://github.com/Perl/perl5/commit/2ac3ce8e89863575691b31c81287486d4ad2fbeb
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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


  Commit: 62b494b241152542277971d3e1a4076825130f12
      
https://github.com/Perl/perl5/commit/62b494b241152542277971d3e1a4076825130f12
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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


  Commit: 0f618b0d44b38b82a1bca5d11e0f60a3386cf63e
      
https://github.com/Perl/perl5/commit/0f618b0d44b38b82a1bca5d11e0f60a3386cf63e
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M lib/locale.t

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


  Commit: 71b0408d4cc6c90ed8c6afd2e79e713a20225115
      
https://github.com/Perl/perl5/commit/71b0408d4cc6c90ed8c6afd2e79e713a20225115
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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


  Commit: b29b1ab6c9c511e244c9cdec115ef1c7da440859
      
https://github.com/Perl/perl5/commit/b29b1ab6c9c511e244c9cdec115ef1c7da440859
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M embed.fnc
    M proto.h

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


  Commit: 4f94e2d0e450f3ad1fd229b1e030ef8909a1346b
      
https://github.com/Perl/perl5/commit/4f94e2d0e450f3ad1fd229b1e030ef8909a1346b
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M handy.h

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

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


  Commit: c6f860052f36d105ac6bf1c1d01e427516712bb5
      
https://github.com/Perl/perl5/commit/c6f860052f36d105ac6bf1c1d01e427516712bb5
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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


  Commit: 0e6c1ab8f9b54167aee318ff38ad73eb2c05a4fe
      
https://github.com/Perl/perl5/commit/0e6c1ab8f9b54167aee318ff38ad73eb2c05a4fe
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M perl.h

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


  Commit: bdc348073748b412517eea81dfe672439d2c70aa
      
https://github.com/Perl/perl5/commit/bdc348073748b412517eea81dfe672439d2c70aa
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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


  Commit: e1c940965155c54c78ecfb960b6b9951eb3236e2
      
https://github.com/Perl/perl5/commit/e1c940965155c54c78ecfb960b6b9951eb3236e2
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

This reverts commit cd1fd76eac05b9ca866bb6f1dae6151767aa3d76.


  Commit: d8e701fd11a42204fd6906fda5d3c534547806c7
      
https://github.com/Perl/perl5/commit/d8e701fd11a42204fd6906fda5d3c534547806c7
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

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

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

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


  Commit: b97c53a1f4dc5e65b2663c8515359b1a1985902b
      
https://github.com/Perl/perl5/commit/b97c53a1f4dc5e65b2663c8515359b1a1985902b
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M intrpvar.h

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


  Commit: 0b5acdb1da679b7c1cfd5335544442865fd778c1
      
https://github.com/Perl/perl5/commit/0b5acdb1da679b7c1cfd5335544442865fd778c1
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M intrpvar.h
    M locale.c

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

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

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

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

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

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

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


  Commit: d380921399bdfe3f3dc761434138f2f92cb0d3ef
      
https://github.com/Perl/perl5/commit/d380921399bdfe3f3dc761434138f2f92cb0d3ef
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M locale.c

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

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


  Commit: 5b669085374cc75e32844b3a0ae1c1b08e80a5af
      
https://github.com/Perl/perl5/commit/5b669085374cc75e32844b3a0ae1c1b08e80a5af
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M lib/locale_threads.t
    M locale.c

  Log Message:
  -----------
  f


  Commit: 8d2c820cfde3cd212c1f170005d65fb93616fa94
      
https://github.com/Perl/perl5/commit/8d2c820cfde3cd212c1f170005d65fb93616fa94
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M ext/XS-APItest/t/locale.t

  Log Message:
  -----------
  APItest/t/locale.t: Add missing SKIP: label


  Commit: f06f3fba8a8da39da4f2f98b72a8667973d72e23
      
https://github.com/Perl/perl5/commit/f06f3fba8a8da39da4f2f98b72a8667973d72e23
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M ext/XS-APItest/t/locale.t

  Log Message:
  -----------
  APItest/t/locale.t: Fix tests

This was misleadingly outputting an undef value, instead of just saying
it's undef


  Commit: 8bfe8a74a90ecbd6e883974e51f702ccd0721891
      
https://github.com/Perl/perl5/commit/8bfe8a74a90ecbd6e883974e51f702ccd0721891
  Author: Karl Williamson <[email protected]>
  Date:   2021-04-03 (Sat, 03 Apr 2021)

  Changed paths:
    M cygwin/cygwin.c
    M embed.fnc
    M ext/XS-APItest/t/locale.t
    M handy.h
    M lib/locale.t
    M lib/locale_threads.t
    M locale.c
    M proto.h
    M t/loc_tools.pl

  Log Message:
  -----------
  more6


Compare: https://github.com/Perl/perl5/compare/09c640a11df0...8bfe8a74a90e

Reply via email to