Branch: refs/heads/smoke-me/khw-env
  Home:   https://github.com/Perl/perl5
  Commit: 967826ea350821aa382399043f4a8d17a4d71292
      
https://github.com/Perl/perl5/commit/967826ea350821aa382399043f4a8d17a4d71292
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/harness

  Log Message:
  -----------
  XXX skip croak.t under sanitizer


  Commit: 133c12ce6eca426cd2902510172e03b3a3e4c12a
      
https://github.com/Perl/perl5/commit/133c12ce6eca426cd2902510172e03b3a3e4c12a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/op/sub.t

  Log Message:
  -----------
  op/sub.t: Cancel watchdog when done

A watchdog timer should be cancelled after the test(s) it guards.
Otherwise, when someone adds new tests after it in the file, and doesn't
notice that the tests are under the watchdog, those new tests can fail.
These failures may be intermittent, only happening under heavy load.


  Commit: 69e6d701dcfe38358b21efa23d585a27e71e2a7c
      
https://github.com/Perl/perl5/commit/69e6d701dcfe38358b21efa23d585a27e71e2a7c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/test.pl

  Log Message:
  -----------
  test.pl: Add comment that should clear watchdog

As it says, failure to cancel a timer can lead to failing (or worse:
flapping) tests


  Commit: a413dc1719ae90484ca78445e664c7290270c592
      
https://github.com/Perl/perl5/commit/a413dc1719ae90484ca78445e664c7290270c592
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/TEST

  Log Message:
  -----------
  XXX skip cpan testing


  Commit: 19037fbaa9e1a0fb856d6bb3fce6635cd064a446
      
https://github.com/Perl/perl5/commit/19037fbaa9e1a0fb856d6bb3fce6635cd064a446
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M MANIFEST
    M charclass_invlists.h
    M lib/unicore/mktables
    M lib/unicore/uni_keywords.pl
    M regcharclass.h
    A t/re/uniprops11.t
    A t/re/uniprops12.t
    A t/re/uniprops13.t
    A t/re/uniprops14.t
    A t/re/uniprops15.t
    A t/re/uniprops16.t
    A t/re/uniprops17.t
    A t/re/uniprops18.t
    A t/re/uniprops19.t
    A t/re/uniprops20.t
    A t/re/uniprops21.t
    A t/re/uniprops22.t
    A t/re/uniprops23.t
    A t/re/uniprops24.t
    M uni_keywords.h

  Log Message:
  -----------
  uniprops 24


  Commit: 16114d116bf69b0ecfad7146bb9fc7c45ff06706
      
https://github.com/Perl/perl5/commit/16114d116bf69b0ecfad7146bb9fc7c45ff06706
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M MANIFEST
    A t/uni/idstart.pl
    A t/uni/idstart00.t
    A t/uni/idstart01.t
    A t/uni/idstart02.t
    A t/uni/idstart03.t
    A t/uni/idstart04.t
    A t/uni/idstart05.t
    A t/uni/idstart06.t
    A t/uni/idstart07.t
    A t/uni/idstart08.t
    A t/uni/idstart09.t
    A t/uni/idstart10.t
    A t/uni/idstart11.t
    A t/uni/idstart12.t
    A t/uni/idstart13.t
    A t/uni/idstart14.t
    A t/uni/idstart15.t
    A t/uni/idstart16.t
    A t/uni/idstart17.t
    A t/uni/idstart18.t
    A t/uni/idstart19.t
    A t/uni/idstart20.t
    A t/uni/idstart21.t
    A t/uni/idstart22.t
    A t/uni/idstart23.t
    M t/uni/variables.t

  Log Message:
  -----------
  Split t/uni/variables.t into multiple tests

These can be done in parallel; otherwise this is often the test that
finishes last, holding up the test suite completion.


  Commit: 05cb38ddbb2fccfc804f57296b2dab8c95fbdc75
      
https://github.com/Perl/perl5/commit/05cb38ddbb2fccfc804f57296b2dab8c95fbdc75
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/test.pl

  Log Message:
  -----------
  XXX test.pl: dont unlink temps


  Commit: e043fd7385dd50ccdcb9527261a1ea7b974d24a8
      
https://github.com/Perl/perl5/commit/e043fd7385dd50ccdcb9527261a1ea7b974d24a8
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/test.pl

  Log Message:
  -----------
  Revert "XXX test.pl: dont unlink temps"

This reverts commit 1579ce0dbce549cb594214ba27d4e2fa389f891b.


  Commit: 039efffd3dd2b0022d3a5d051acafbac137c0328
      
https://github.com/Perl/perl5/commit/039efffd3dd2b0022d3a5d051acafbac137c0328
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/run/locale.t

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


  Commit: 1182acd9b01d97a47bbcc8026c9b54ac59c221b6
      
https://github.com/Perl/perl5/commit/1182acd9b01d97a47bbcc8026c9b54ac59c221b6
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/run/locale.t

  Log Message:
  -----------
  XXX run/locale.t: maybe f move test


  Commit: 004f1e87e3a9fc866891fda07b93c057492c7a4b
      
https://github.com/Perl/perl5/commit/004f1e87e3a9fc866891fda07b93c057492c7a4b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M vutil.c

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

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

Remove some blank lines that don't contribute to readability

Add/change comment wording


  Commit: 8189341e2cdd7149257a0c26b047321f8f9e659d
      
https://github.com/Perl/perl5/commit/8189341e2cdd7149257a0c26b047321f8f9e659d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    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: d9d9d69dd2bcf06e448f76d7bc3f39807684cc06
      
https://github.com/Perl/perl5/commit/d9d9d69dd2bcf06e448f76d7bc3f39807684cc06
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M vutil.c

  Log Message:
  -----------
  vutil.c: Debug


  Commit: ecac2b78ce833a95a99e33494bb90afebab5f69a
      
https://github.com/Perl/perl5/commit/ecac2b78ce833a95a99e33494bb90afebab5f69a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M vutil.c

  Log Message:
  -----------
  vutil.c: Add logic to avoid having to change locales

Prior to this commit, unless the locale was C or POSIX, it changed it
temporarily so as to make sure the decimal point radix character was a
dot.

But on POSIX platforms or C99 compilers, there are easy ways to
determine if the radix is a dot or not, without having to look at the
locale.  This commit changes to take advantage of those mechanisms to
avoid toggling the locale unless it is actually needed to be done.

Only if the compiler is C89 on a non-POSIX box will the previous
existing method be used.


  Commit: 04c8a4ff380921630bff4144a13f7533fa6c0c04
      
https://github.com/Perl/perl5/commit/04c8a4ff380921630bff4144a13f7533fa6c0c04
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M vutil.c

  Log Message:
  -----------
  vutil.c: C.UTF-8 also has a dot radix character

This is another locale besides C and POSIX that are guaranteed to have
the radix character be a dot.

Very likely, locales beginning with "en_" will too.  But this isn't
guaranteed.


  Commit: cd1a7d83a4d5a0ccd1bfb5b0119c0bb7aba6b7ea
      
https://github.com/Perl/perl5/commit/cd1a7d83a4d5a0ccd1bfb5b0119c0bb7aba6b7ea
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M vutil.c

  Log Message:
  -----------
  vutil.c: Don't use Perl locale mechanisms

The code in this function may be called from places that participate in
the extensive Perl locale-handling mechanisms.  But it may also be
called from code that isn't.

That means it has to use the base level libc functions for its locale
handling, and to be careful to not interfere with the Perl data
structures.  When there is a possibility of collisions with other
threads, a mutex must be used to prevent that.  There is still the
possibility of races if another thread is not using a mutex to protect
its locale accesses; but that can't be helped.

Recent perls have added mechanisms to allow for an API that can be used
to do mutex locking without harming the Perl data structures.

This commit changes vutil.c to use them if available, and using no-ops
or the best available alternatives, if not.


  Commit: c9df3d287c81f283e343a31464d88ff0a05d633a
      
https://github.com/Perl/perl5/commit/c9df3d287c81f283e343a31464d88ff0a05d633a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M cpan/version/t/07locale.t

  Log Message:
  -----------
  version::07locale.t: Use I18N::Langinfo, not POSIX::localeconv()

The former is always present; the latter might not be.


  Commit: 5d18e4a2180477ceb6e6dd8d1873f7481e87ba5a
      
https://github.com/Perl/perl5/commit/5d18e4a2180477ceb6e6dd8d1873f7481e87ba5a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M cpan/version/t/07locale.t

  Log Message:
  -----------
  version 07locale.t should use LC_NUMERIC, not ALL

These outliers don't belong.  This file is working on LC_NUMERIC only.


  Commit: 54bb8522482c58d211a8ec56947a355c3787b11b
      
https://github.com/Perl/perl5/commit/54bb8522482c58d211a8ec56947a355c3787b11b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M cpan/Archive-Tar/t/02_methods.t

  Log Message:
  -----------
  XXX skip Archive-Tar because of symlinks


  Commit: 2e987464f1f6ecc1b718d41efb229260ee8eed76
      
https://github.com/Perl/perl5/commit/2e987464f1f6ecc1b718d41efb229260ee8eed76
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/porting/cmp_version.t

  Log Message:
  -----------
  XXX skip cmp_version.t because of sym links


  Commit: 715cc6944e7e8aa726720ded1bc0ff54d80b6248
      
https://github.com/Perl/perl5/commit/715cc6944e7e8aa726720ded1bc0ff54d80b6248
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  XXX temp to test broken lconv on non-Windows


  Commit: b2fbfabef5cf11f0cb8e5610112d40e3585cfc52
      
https://github.com/Perl/perl5/commit/b2fbfabef5cf11f0cb8e5610112d40e3585cfc52
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M cpan/Sys-Syslog/t/syslog-inet-udp.t
    M cpan/Sys-Syslog/t/syslog.t

  Log Message:
  -----------
  XXX skip syslog tests because fail without LC_TIME


  Commit: 57994d09cc41e932d4fa49f4f88821c2a8c98890
      
https://github.com/Perl/perl5/commit/57994d09cc41e932d4fa49f4f88821c2a8c98890
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M Configure

  Log Message:
  -----------
  XXX Configure temporary to get no_nl, etc working


  Commit: 6569f7f395700e2fdba6a10663ab1a4401238310
      
https://github.com/Perl/perl5/commit/6569f7f395700e2fdba6a10663ab1a4401238310
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M win32/config_H.gc
    M win32/config_H.vc

  Log Message:
  -----------
  Regenerate Configure after metaconfig backports applied


  Commit: 6025160157827fec829e7361b2d8cbd59dc1a9f7
      
https://github.com/Perl/perl5/commit/6025160157827fec829e7361b2d8cbd59dc1a9f7
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M Configure
    M config_h.SH
    M uconfig.h
    M win32/config_H.gc
    M win32/config_H.vc

  Log Message:
  -----------
  Regenerate Configure after rm thread-safe nl_langinfo_l


  Commit: 3bdc65b6718bb0351c3d277a9d9c65820fadfa5d
      
https://github.com/Perl/perl5/commit/3bdc65b6718bb0351c3d277a9d9c65820fadfa5d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M Configure
    M Cross/config.sh-arm-linux
    M Cross/config.sh-arm-linux-n770
    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
    M win32/config_H.gc
    M win32/config_H.vc

  Log Message:
  -----------
  XXX No count Regenerate Configure after LC_ALL


  Commit: eb613abdaa66f96467879c389879ba2e8da0901c
      
https://github.com/Perl/perl5/commit/eb613abdaa66f96467879c389879ba2e8da0901c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Use an enum to simplify consecutive value initialization

This commit replaces the clumsy method to initialize some symbols with
consecutive vaues.  This also presents opportunities to declare
variables as the particular enum type, to allow for better checking and
code generation.


  Commit: 7bbdcb0ee5a5d131f2b2b1c3bc5facec5edc8517
      
https://github.com/Perl/perl5/commit/7bbdcb0ee5a5d131f2b2b1c3bc5facec5edc8517
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  locale.c: Always leave a space for LC_ALL entries

Some platforms may not have the LC_ALL conglomerate category.  This
commit leaves a placeholder for it anyways.  Having this always there
can lead to some simplifications.


  Commit: 3a2f2962e439cded482ff6fbb4941d20e70e336b
      
https://github.com/Perl/perl5/commit/3a2f2962e439cded482ff6fbb4941d20e70e336b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M intrpvar.h
    M perl.h

  Log Message:
  -----------
  perl.h: Create a locale mnemonic #define for sync across files


  Commit: 57a1c5307de8f6af0f97147cbe1f66ff6e3df3f2
      
https://github.com/Perl/perl5/commit/57a1c5307de8f6af0f97147cbe1f66ff6e3df3f2
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M makedef.pl
    M perl.h

  Log Message:
  -----------
  XXX temporary: undef LC_ALL


  Commit: 4bfd615f360abbea032f07aa1d7e91f8ff034281
      
https://github.com/Perl/perl5/commit/4bfd615f360abbea032f07aa1d7e91f8ff034281
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Fake up win32 compile a bit


  Commit: 6d5559eb46d6284b61156fe77b1e239e77e3f551
      
https://github.com/Perl/perl5/commit/6d5559eb46d6284b61156fe77b1e239e77e3f551
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  ruler


  Commit: b695095a84d1c4c3f85cf36c3b899bbbf5fbb305
      
https://github.com/Perl/perl5/commit/b695095a84d1c4c3f85cf36c3b899bbbf5fbb305
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M sv.c

  Log Message:
  -----------
  newSVbool(): Fix compiler warning

The parameter was declared const in embed.fnc, but not in the function
prototype


  Commit: f4eb6806e9cb86a66a82fde8f866d42d09f415c1
      
https://github.com/Perl/perl5/commit/f4eb6806e9cb86a66a82fde8f866d42d09f415c1
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M embed.fnc
    M proto.h

  Log Message:
  -----------
  regnode_after(): Fix compiler warning

A parameter to this function was declared const in its prototype but not
in embed.fnc.


  Commit: 76a319e788c316a995b15a0f83abe54f0770ebfb
      
https://github.com/Perl/perl5/commit/76a319e788c316a995b15a0f83abe54f0770ebfb
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  uvoffuni_to_utf8_flags_msgs(): Fix compiler warning

A parameter to this function was declared const in embed.fnc, but isn't
const.

This commit also adds a const to another parameter that is constant.


  Commit: a5aa544446757523ca3d244abcbf3134a6fce6d2
      
https://github.com/Perl/perl5/commit/a5aa544446757523ca3d244abcbf3134a6fce6d2
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M embed.fnc
    M proto.h

  Log Message:
  -----------
  S_clear_placeholders(): Fix compiler warning

A parameter to this function was declared const in its prototype but not
in embed.fnc, and had a different name


  Commit: e284141aa84df4cccf11f3bb8acf8d0b84686604
      
https://github.com/Perl/perl5/commit/e284141aa84df4cccf11f3bb8acf8d0b84686604
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  DEBUG_


  Commit: cd5b8a5f6aadaf2c2b4fa895f4c69a6ee2674ef9
      
https://github.com/Perl/perl5/commit/cd5b8a5f6aadaf2c2b4fa895f4c69a6ee2674ef9
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c
    M perl.c

  Log Message:
  -----------
  XXX appears to be an existing bug need multiplicity for cur_locale obj

SEE what is failing, maybe only non2008 nonsetlocale


  Commit: 6f833c0b0c2fe061408bb7ac7969e22f31c488e3
      
https://github.com/Perl/perl5/commit/6f833c0b0c2fe061408bb7ac7969e22f31c488e3
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: debug with thread id


  Commit: dfa16fcf41204a7d096910882c9a61c1e32d853e
      
https://github.com/Perl/perl5/commit/dfa16fcf41204a7d096910882c9a61c1e32d853e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  XXX memlog


  Commit: 965ded750bfb5e411ae4e31bf8f237535cdd4706
      
https://github.com/Perl/perl5/commit/965ded750bfb5e411ae4e31bf8f237535cdd4706
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX win workaround


  Commit: ec922f6510ebe30289f18f4fb81cfdf6ecac734f
      
https://github.com/Perl/perl5/commit/ec922f6510ebe30289f18f4fb81cfdf6ecac734f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  just after XXX win workaround


  Commit: 98696590a8e054f54dc44aac1a77bc41919c41ae
      
https://github.com/Perl/perl5/commit/98696590a8e054f54dc44aac1a77bc41919c41ae
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

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


  Commit: bbda27e5f6f6d78be7a13eb0aa478f6f3378ba73
      
https://github.com/Perl/perl5/commit/bbda27e5f6f6d78be7a13eb0aa478f6f3378ba73
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  XXX locale_threads.t: Add alarm


  Commit: c9a0b8159871e5a279d157d9d875decce72bb079
      
https://github.com/Perl/perl5/commit/c9a0b8159871e5a279d157d9d875decce72bb079
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Debug locking


  Commit: e30d9335e384833925c8c5fe916adf69faa7b2ff
      
https://github.com/Perl/perl5/commit/e30d9335e384833925c8c5fe916adf69faa7b2ff
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c
    M perl.h
    M t/run/switchDx.t

  Log Message:
  -----------
  debug thread


  Commit: 88f675825d2b49365d48cb0ed756f4b2b32176e7
      
https://github.com/Perl/perl5/commit/88f675825d2b49365d48cb0ed756f4b2b32176e7
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M dist/threads/threads.xs
    M inline.h

  Log Message:
  -----------
  threads.xs DEBUG_U


  Commit: 454f476958ee5f0bf5b73cb20bebcb0bf920e404
      
https://github.com/Perl/perl5/commit/454f476958ee5f0bf5b73cb20bebcb0bf920e404
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M makedef.pl

  Log Message:
  -----------
  XXX: UCRT mingw is not likely locale-thread safe

In order for mingw to be locale-thread safe, it needs UCRT which current
packages don't tend to have.  But this commit adds a XXX -DUCRT


  Commit: fb4134d6ef40ce2862245c265218a4d207d904ca
      
https://github.com/Perl/perl5/commit/fb4134d6ef40ce2862245c265218a4d207d904ca
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  loc_tools


  Commit: 94fed0c3b51d5fcd94792b7d43f21f17c8b13bba
      
https://github.com/Perl/perl5/commit/94fed0c3b51d5fcd94792b7d43f21f17c8b13bba
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/loc_tools.pl

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


  Commit: c33206fd13b38aef5d3cf1359a54475f27fb6bb0
      
https://github.com/Perl/perl5/commit/c33206fd13b38aef5d3cf1359a54475f27fb6bb0
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: define locale mutex under more cirumstances

Prior to this commit, it wasn't defined if we aren't paying attention to
locales; but that doesn't mean they don't exist, and the operations that
affect them are still callable; so they should have a mutex to prevent
one thread from overwriting another's.


  Commit: 7500b60eaa03694ad2a8c07b0ad524e3fc231227
      
https://github.com/Perl/perl5/commit/7500b60eaa03694ad2a8c07b0ad524e3fc231227
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M makedef.pl
    M perl.h

  Log Message:
  -----------
  perl.h: Also recognize -DNO_THREAD_SAFE_LOCALE

It would be a reasonable Configure option to say
-Accflags=-DNO_THREAD_SAFE_LOCALE


  Commit: ed0527a9f7ca072a790f04710eb7a9e9727cdc7d
      
https://github.com/Perl/perl5/commit/ed0527a9f7ca072a790f04710eb7a9e9727cdc7d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: configthreadlocale() error checking

The code previously just assumed the system call always worked.  But it
may not if the CRTL is wrong; this surfaced on a mingw compile.

It's better to have it fail outright than to continue and silently give
a wrong answer.


  Commit: fe6f157a101ec5abac7c48a64a33ac43711ac979
      
https://github.com/Perl/perl5/commit/fe6f157a101ec5abac7c48a64a33ac43711ac979
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Turn mutex warning into a panic

This was my attempt to keep going and try to recover after a problem was
found:  an unbalanced number of  locks/unlocks.  However, in looking at
a many-million line execution trace, I realized that the recovery likely
doesn't lead to correct results, and we should quit immediately when it
happens.


  Commit: 74afa150ff7fbc76e11880baab26f48a1fd800e5
      
https://github.com/Perl/perl5/commit/74afa150ff7fbc76e11880baab26f48a1fd800e5
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: White space, comments only


  Commit: de54ee363de127f5147bd3bfc6c4c720baa7d42d
      
https://github.com/Perl/perl5/commit/de54ee363de127f5147bd3bfc6c4c720baa7d42d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h change lock debugging text


  Commit: e7565e7fcf5efa6ab3c8f07954586ea2a4271f65
      
https://github.com/Perl/perl5/commit/e7565e7fcf5efa6ab3c8f07954586ea2a4271f65
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/harness

  Log Message:
  -----------
  t/harness temp tweaks


  Commit: 8dc64f68ffa841f039cfa3442bfacd4daaf60898
      
https://github.com/Perl/perl5/commit/8dc64f68ffa841f039cfa3442bfacd4daaf60898
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M pod/perllocale.pod

  Log Message:
  -----------
  perllocale Xxx start of changes


  Commit: 509fc9dd8c078e5e82c4ac5f017590c73453d13b
      
https://github.com/Perl/perl5/commit/509fc9dd8c078e5e82c4ac5f017590c73453d13b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  XXX ruler lib/locale_threads.t


  Commit: 339a4047394756440ac59b6e7825c19dec810672
      
https://github.com/Perl/perl5/commit/339a4047394756440ac59b6e7825c19dec810672
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M hints/freebsd.sh
    M hints/openbsd.sh

  Log Message:
  -----------
  XXX try out bsd 2008


  Commit: bd369637eabcd88efca1b9ca6e0599df7f6fdac9
      
https://github.com/Perl/perl5/commit/bd369637eabcd88efca1b9ca6e0599df7f6fdac9
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M makedef.pl

  Log Message:
  -----------
  makedef.pl: Don't use locale items unless using locale

If we are configured to not look at locales at all, we shouldn't be
looking at threaded locales nor POSIX 2008 ones.

This commit fixes a situation that is not likely at all to show up in
real life, but I stumbled across it in testing weird configurations.


  Commit: 81c14f004ad56c0db1ee5827e16477b072edc5d8
      
https://github.com/Perl/perl5/commit/81c14f004ad56c0db1ee5827e16477b072edc5d8
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M makedef.pl

  Log Message:
  -----------
  makedef.pl: Remove redundant set

This ||= is useless, as just above we've already set MULTIPLICITY if
USE_ITHREADS is set.


  Commit: 27da2fceb4c7e6920b4e58b84960fa14bcdf246f
      
https://github.com/Perl/perl5/commit/27da2fceb4c7e6920b4e58b84960fa14bcdf246f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M lib/locale.t

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


  Commit: e8d4a0594d29013555e6c0cdc91ccc3f7b4dfd00
      
https://github.com/Perl/perl5/commit/e8d4a0594d29013555e6c0cdc91ccc3f7b4dfd00
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M lib/locale.t

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


  Commit: 5396671620601cb421d693e772eaa81e6ea379ee
      
https://github.com/Perl/perl5/commit/5396671620601cb421d693e772eaa81e6ea379ee
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M lib/locale.t

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


  Commit: 2b7745bd16512cee7b34956b4b94da94c3a9f7c6
      
https://github.com/Perl/perl5/commit/2b7745bd16512cee7b34956b4b94da94c3a9f7c6
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M pod/perlhacktips.pod

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


  Commit: 00738612622562d674bb678c44a1cdc5ed1764c0
      
https://github.com/Perl/perl5/commit/00738612622562d674bb678c44a1cdc5ed1764c0
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M handy.h

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


  Commit: 1f6949d9d52492588798b62fd3333e66dca980e4
      
https://github.com/Perl/perl5/commit/1f6949d9d52492588798b62fd3333e66dca980e4
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M iperlsys.h

  Log Message:
  -----------
  iperlsys.h: TODO need to look at adding mutexes


  Commit: e01209c2cef942d0757c0458274cd1fec72b8852
      
https://github.com/Perl/perl5/commit/e01209c2cef942d0757c0458274cd1fec72b8852
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M regen/reentr.pl

  Log Message:
  -----------
  reentr.pl: XXX about needing mutex


  Commit: 788391b930607d161df88fb4b5051dd3866b0af1
      
https://github.com/Perl/perl5/commit/788391b930607d161df88fb4b5051dd3866b0af1
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M regexec.c

  Log Message:
  -----------
  regexec.c: XXX has cast to U8 for some reason


  Commit: 9a25725d8df3185ba1216df7da203643674e4198
      
https://github.com/Perl/perl5/commit/9a25725d8df3185ba1216df7da203643674e4198
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M sv.c

  Log Message:
  -----------
  perlapi: Combine sv_eq(), sv_eq_flags() entries


  Commit: 6bf38e89ee28c87b4e09c483de99f8bf7371a504
      
https://github.com/Perl/perl5/commit/6bf38e89ee28c87b4e09c483de99f8bf7371a504
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

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


  Commit: 4d1b00fb5844a6cc02835b5b3693f07d6a94f1fe
      
https://github.com/Perl/perl5/commit/4d1b00fb5844a6cc02835b5b3693f07d6a94f1fe
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M dist/IO/IO.xs

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


  Commit: de936f1415418ee1023f3d18175be5485973a0a3
      
https://github.com/Perl/perl5/commit/de936f1415418ee1023f3d18175be5485973a0a3
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  Debug Windows memory usage in pp_study


  Commit: 7386a487d3d8ec6dbc2d9ad7e4435aec1760f802
      
https://github.com/Perl/perl5/commit/7386a487d3d8ec6dbc2d9ad7e4435aec1760f802
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M pod/perlmod.pod

  Log Message:
  -----------
  perlmod


  Commit: bdac27e8d503e97ac147847e353c5e5bf17bf127
      
https://github.com/Perl/perl5/commit/bdac27e8d503e97ac147847e353c5e5bf17bf127
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

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


  Commit: 3eb7bd56a595be1dd7db38bc3f22abc6bfb9d371
      
https://github.com/Perl/perl5/commit/3eb7bd56a595be1dd7db38bc3f22abc6bfb9d371
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Rename S_calculate_LC_ALL_string()

Its return is a string.  Add the suffix '_string' to emphasize that


  Commit: 6ca11240fd11ec562ce8845e2f0c2ea6a0b93091
      
https://github.com/Perl/perl5/commit/6ca11240fd11ec562ce8845e2f0c2ea6a0b93091
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M cpan/version/t/07locale.t

  Log Message:
  -----------
  07locale.t: Add some Windows locales to try

On various windows machines, none of the locales listed in <DATA> exist.
This commit copies ones from core's loc_tools.pl to give additional
possibilities to try


  Commit: 21854f35f4d426034a7dcebf7fe0517567c2817d
      
https://github.com/Perl/perl5/commit/21854f35f4d426034a7dcebf7fe0517567c2817d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use proper macro

querylocale_c()  likely will expand to the correct thing, but it isn't
defined until higher in the stack of locale handling layers.  Instead
use the construct that is lower in the stack.


  Commit: a1176796b9569c96bfd1664a420001de54f9928b
      
https://github.com/Perl/perl5/commit/a1176796b9569c96bfd1664a420001de54f9928b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move some static functions within file

This places them more conveniently.

Future commits will continue this reordering until like-level and
like-kind functions are close to each other physically in the file.


  Commit: c8feef9a1761eb989824e7a036896b805b42a9f6
      
https://github.com/Perl/perl5/commit/c8feef9a1761eb989824e7a036896b805b42a9f6
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Replace an assumption by a cpp check

This commit adds a preprocessor directive to check if we are running on
a POSIX 2008 system, rather than just assume we are if the earlier
possibilities weren't the case.  And it causes a compile time error if
none pan out.


  Commit: f97381d525102a5c3cd4c7d4728f5e4c2353fb02
      
https://github.com/Perl/perl5/commit/f97381d525102a5c3cd4c7d4728f5e4c2353fb02
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Don't compile without LC_ALL under POSIX 2008

The code assumes that if you have POSIX 2008, you have LC_ALL.  This
adds a compile-time error check to prevent someone from finding that out
the harder way.


  Commit: 28c7c4a8e6c8e9cdec894b4df8a74a56686b16dd
      
https://github.com/Perl/perl5/commit/28c7c4a8e6c8e9cdec894b4df8a74a56686b16dd
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move a parallel array adjacent to its mates

This is in preparation for making their parallelism more obvious


  Commit: be51f0024b5b36df3050208bf73fd4f959f4379a
      
https://github.com/Perl/perl5/commit/be51f0024b5b36df3050208bf73fd4f959f4379a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M embed.fnc
    M proto.h

  Log Message:
  -----------
  locale.c: Add warning if function return ignored


  Commit: eb5274013d8e4a8d682e6894dc43e2318346d8d6
      
https://github.com/Perl/perl5/commit/eb5274013d8e4a8d682e6894dc43e2318346d8d6
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Properly identify reason for placeholder in arrays

This is needed to handle the case where a locale category passed in (via
Perl_setlocale) is unknown to perl, hence is considered illegal.

The previous comments were misleading.


  Commit: fef94a0dcdbc0f6a3793606ea1b1f888cbf57a2f
      
https://github.com/Perl/perl5/commit/fef94a0dcdbc0f6a3793606ea1b1f888cbf57a2f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  Change return of S_get_category_index_nowarn

This is in preparation for it being called from more than a single
place.  Instead of returning -1 on error, it returns an out-of-bounds
value 1 greater than the largest legal value.  There is a placeholder
entry in all the arrays this can be indexed into for that illegal value.
This means if it somehow gets used, we wont get a segfault, like we
would on the -1, but instead a value that will show up as wrong, but not
crash.


  Commit: 61fffa5f0d4245223369007433ebb9aa3cda2a83
      
https://github.com/Perl/perl5/commit/61fffa5f0d4245223369007433ebb9aa3cda2a83
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Check for illegal input category

It is possible for Perl_setlocale() to be called with a category value
that is illegal, or is just unknown to us.  There is a function that
maps category numbers into our internal indexing scheme.  It maps any
unknown value to the same index, larger than any legal one.

Prior to this commit, there was no check that the input was valid; we
went off processing it as if it were valid.  That there was an element
in the tables that corresponds to this index prevented any illegal
memory acceses, but it is better to check early and return an error.


  Commit: 49133099bea9ba6d4878b42c7704ddb303571d97
      
https://github.com/Perl/perl5/commit/49133099bea9ba6d4878b42c7704ddb303571d97
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Revamp initialization of parallel arrays

This new method eliminates a lot of #ifdef's in each of the array
initializations, consolidating all the array entries for a category
to be in a single group.  This facilitates ease of checking that things
are correct and the addition of new items.

A Factory pattern to generate all these could be used instead.  But I
don't know how to do that in cpp (I suppose some recursive #includes
would do it uglily), and I don't think it's worth it to do a regen
script.

There is a reason for the  apparently weird indentation, that future
commits will reveal.


  Commit: c6b2e7709cd55c29bfc77ffb84c4bb7a56133d30
      
https://github.com/Perl/perl5/commit/c6b2e7709cd55c29bfc77ffb84c4bb7a56133d30
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  Rename SETLOCALE_LOCK to LOCALE_LOCK

This mutex isn't just about the setlocale function; it applies to all
locale related critical sections.


  Commit: 2ed517c8d29c93bdfcc6560e7c6501b1fc6634fb
      
https://github.com/Perl/perl5/commit/2ed517c8d29c93bdfcc6560e7c6501b1fc6634fb
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Avoid runtime strlen() calls

The lengths of these strings are known at compile time.  This commit
creates an array of those lengths to avoid calling strlen() in a loop
unnecessarily.


  Commit: 224bc9a08795f23a82dfb954adda49daf7f4d911
      
https://github.com/Perl/perl5/commit/224bc9a08795f23a82dfb954adda49daf7f4d911
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Replace loop with a switch()

locale.c uses tables to specify data and actions about the different
locale categories on the system.  The categories are opaque integers
specified by libc, so they have to be mapped to indices into the tables
for our use.  Prior to this commit, that was done by a loop iterating
over each possibility until it found a match.  This commit changes that
to use a switch() statement, so that the compiler can choose what the
best way to implement things are.


  Commit: 360c443b548823b755037ccd46352a0591cc034b
      
https://github.com/Perl/perl5/commit/360c443b548823b755037ccd46352a0591cc034b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

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

There is actually only one place where the locale category can be input
from code outside this file.  Now that the previous commit added
validation to that one spot, The rest of the calls should already be
validated, and if the input is bad, it means that there is a serious
error in the logic of this code, and warrants panicking.

This commit collapses two functions into one plus a macro to call it
with the right parameters.  It moves the warning into the one place
where it is useful, and panics if there is a problem otherwise.


  Commit: a57f6a8e603dd77f4c31b04b4c422f2c69d6eeb5
      
https://github.com/Perl/perl5/commit/a57f6a8e603dd77f4c31b04b4c422f2c69d6eeb5
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    R .github/CONTRIBUTING.pod
    A .github/CONTRIBUTING.pod
    R .github/README.md
    A .github/README.md

  Log Message:
  -----------
  type change


  Commit: 80ccbeb40e5bd0c4319031cd1c1b975ff8c3862c
      
https://github.com/Perl/perl5/commit/80ccbeb40e5bd0c4319031cd1c1b975ff8c3862c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  XXXleaks: Remove PL_cur_LC_ALL for non-Windows

This value is now held in a slot in PL_curlocales[] for non-Windows
platforms.


  Commit: 49eb64cfb1cb6c4db757fda29320c96663cdd8fb
      
https://github.com/Perl/perl5/commit/49eb64cfb1cb6c4db757fda29320c96663cdd8fb
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Rename S_myquerylocale_i()

This name doesn't effectively describe it.  The new name is
querylocale_2008_i, indicating it is for the POSIX 2008 API.


  Commit: 1491dd31368cbb1b274d2fc4abc838090b51e317
      
https://github.com/Perl/perl5/commit/1491dd31368cbb1b274d2fc4abc838090b51e317
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Separate setlocale into bool and query

There are two ways that POSIX specifies to change the locale.

The earlier interface is setlocale(), which either returns NULL on
failure, or a pointer to global static memory containing the character
string of the changed locale.  That may very well be the input locale
name, or the platform can return something that to it is equivalent.

The second, from the 2008 standard, is newlocale() which returns either
NULL on failure or a pointer to an opaque object, and there is no
official way to find out what the current locale is.  (The next proposed
version of the Standard will finally add this capability.)  Some
platforms have introduced a querylocale() to get this information.
(glibc has a hidden function to do so.)

Note that the return value of setlocale() is problematic, valid only
until the next call to that function, which might be immediately from
another thread.  The value, if needed, has to be saved to a per-thread
buffer in a critical section with the function call.  That buffer
presents opportunities for leaking or being destroyed too early,
resulting in heap use after being freed.

And it turns out that the value is often not needed; often what is
needed is only if the operation failed or succeeded.

This commit starts the process of limiting the use of the changed value
to just where its really needed.  It does this by changing the
newlocale() form to return success/failure, removing all the macros that
think you can set and get the value in the same operation, and minor
fixups.


  Commit: 8e132119eefdd7d58f75849101ed398b0d1fd865
      
https://github.com/Perl/perl5/commit/8e132119eefdd7d58f75849101ed398b0d1fd865
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

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

This function is simple, but almost entirely redundant with
less_dicey_bool_setlocale_r().  A simple wrapper to the latter suffices.

The commit also changes the macros for this to use void_setlocale_r() as
the base which the other two are defined in terms of.  This avoids a
runtime calculation of the internal index corresponding to the input
locale category except when we are about to panic.


  Commit: 0e8cf9f8c2b92a145f6afc2b1aa67b32b1d4a6ee
      
https://github.com/Perl/perl5/commit/0e8cf9f8c2b92a145f6afc2b1aa67b32b1d4a6ee
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Avoid a runtime calculation

As in the previous commit, this rewrites the void_setlocale_X macros so
as to not need a runtime calculation except in the very rare event of
executing a panic.


  Commit: 9c5690c1219d4e274f80c6e34d0aacf847ce9592
      
https://github.com/Perl/perl5/commit/9c5690c1219d4e274f80c6e34d0aacf847ce9592
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add missing panic

In just the POSIX 2008 implementation of setting locales, the panic upon
failure had been omitted.  The whole point of a void call is so that the
caller doesn't have to check the return code of something that should
never fail, and can just assume that if it gets to the next statement
everything worked as expected.


  Commit: f797f1d3005023234bda0b1d41becef1942994a9
      
https://github.com/Perl/perl5/commit/f797f1d3005023234bda0b1d41becef1942994a9
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Reorder code, add comments

There are three separate implementations of an internal API for locale
handling.  This commit makes them stand out in the code, and makes the
ordering within each implementation parallel to the other
implementations.

And adds explanatory comments.


  Commit: 2b7edbaef8b6964b3f43b5911005803110479a7e
      
https://github.com/Perl/perl5/commit/2b7edbaef8b6964b3f43b5911005803110479a7e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Remove one-off macro

This was used to prevent an unnecessary copy.  But the next commit will
change the macro it was avoiding to not always do the copy.  That will
avoid more copies than this would. The copy that results will still be
unnecessary in some cases, but there is a net gain.


  Commit: b777a1711ebb4cc949ca3a404434c4f1dff93c08
      
https://github.com/Perl/perl5/commit/b777a1711ebb4cc949ca3a404434c4f1dff93c08
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move copy from macro to called function

Not all returns from the function need to be copied.  Thus this
eliminates some extraneous copies.


  Commit: ac8ca927ebc318fc9ece9b0388f88da1f8598091
      
https://github.com/Perl/perl5/commit/ac8ca927ebc318fc9ece9b0388f88da1f8598091
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_toggle_locale_i: Move some assert()s, initialization


  Commit: 41dc7a96297f01f2ef617dbe431d5043cadf353d
      
https://github.com/Perl/perl5/commit/41dc7a96297f01f2ef617dbe431d5043cadf353d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Add extra debug info to panics

This commit adds some call stack information to the message that gets
output when about to panic because of an unanticipated failure in
the locale handling code.


  Commit: 72de9cc216ff3369d69c14dc80ef3e452f4a5d3e
      
https://github.com/Perl/perl5/commit/72de9cc216ff3369d69c14dc80ef3e452f4a5d3e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add void_setlocale_with_caller macros

These pass a file and line number of further up the calling stack to a
panic so as to improve debugging information.


  Commit: 17432d39bb67ffeb981db2522b8322a582c1f521
      
https://github.com/Perl/perl5/commit/17432d39bb67ffeb981db2522b8322a582c1f521
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Initialize PL_curlocales at startup

Previously this was done later, which meant other code had to take them
being uninitialized into consideration over and over at runtime.  That
code is hereby removed.

This commit enables further simplifications to follow in later commits.


  Commit: ceed1245177f4d018d116c0e7a59676658a54241
      
https://github.com/Perl/perl5/commit/ceed1245177f4d018d116c0e7a59676658a54241
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use void_ macro form when ignoring return

The void_ form panics if unsuccessful; and here we are relying on it
being successful.


  Commit: bcb37799a817b378e861df3cef4cf4b09b27da7b
      
https://github.com/Perl/perl5/commit/bcb37799a817b378e861df3cef4cf4b09b27da7b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Don't exclude LC_ALL in  loop

This function was setting each individual locale category to the same
value.  But if all the subcomponents are the same, so is LC_ALL.  No
need to special case it


  Commit: 6a327db5c9d43c12582a6e184fa03b250218e476
      
https://github.com/Perl/perl5/commit/6a327db5c9d43c12582a6e184fa03b250218e476
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Change function to return void

It just returns the input value unchanged; this is a no-op.


  Commit: 0621d6d836cd7cc73ef28391e65f09b06e21bf43
      
https://github.com/Perl/perl5/commit/0621d6d836cd7cc73ef28391e65f09b06e21bf43
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Remove no-longer needed parameter and computation

When a locale category changes, LC_ALL necessarily also does.  When we
are looping changing a bunch of categories, LC_ALL's intermediate values
are of no importance; only the final value matters.  Prior to this
commit, this was handled by setting a flag to not do the recalculation
until the final loop iteration.

But a more elegant solution is to not recalculate it all, until the
value is actually needed.  So the code is changed to invalidate the
stored value if an individual locale category changes, and then do the
calculation only when needed and invalidated.


  Commit: 8f13a81647deaaee6cec52db7b24aa6c627381ff
      
https://github.com/Perl/perl5/commit/8f13a81647deaaee6cec52db7b24aa6c627381ff
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Change parameter name for static function

category_locales_list is somewhat more descriptive than individ_locales


  Commit: dea86d9bb70744c1b4ff2b788ed6c8062028fcd9
      
https://github.com/Perl/perl5/commit/dea86d9bb70744c1b4ff2b788ed6c8062028fcd9
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Change API of S_calculate_LC_ALL_string

This function looks at all the individual locale categories on the
system.  So far it is called with either an array of the current values
for them, or an object from which those values can be derived.

But the object is always the current locale object in effect.  The
querylocale_i() macro can be used to get this information without
needing to have to name the object.  Therefore the object parameter is
superfluous, and the function could be notified to use querylocale_i by
making the array parameter NULL.

But right now you get one or the other.  There are two signatures to
this function, depending on the platform capabilities.

This commit collapses those into one signature, the one with an array
parameter.  And then NULL is used to trigger calling querylocale_i().

The reason to do this is that future commits will want to pass an array
to this function, even when it is compiled on a platform that currently
doesn't allow that option.


  Commit: 0d79d27d3904c5214a6ead196d7476259252a5ec
      
https://github.com/Perl/perl5/commit/0d79d27d3904c5214a6ead196d7476259252a5ec
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

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

The previous enhancements to calculate_LC_ALL_string means this function
can just call it without having to loop itself.


  Commit: 0dfd8fbe30f35579bdf7529bcb9190976fe851e5
      
https://github.com/Perl/perl5/commit/0dfd8fbe30f35579bdf7529bcb9190976fe851e5
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Slight refactoring of S_querylocale_2008_i

This just moves some asserts, adds comments and a branch prediction, and
replaces a variable used in only one place by it value.


  Commit: e34c6cac7d80da2dd3fda259280e38ebf233d5fe
      
https://github.com/Perl/perl5/commit/e34c6cac7d80da2dd3fda259280e38ebf233d5fe
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Shortcut common case

When using the POSIX 2008 locale interface, perl keeps (for the entire
lifetime of the process) an object for when all locale categories are in
the C locale.  So, if someone queries the current locale, and the C
object is the one in effect, the locale must be C, and we can return C
immediately.

This has the salubrious effect of hiding from perl bugs on some
*BSD-related platforms.  A link to a ticket to FREEBSD is in one of the
comment lines of this commit.


  Commit: 6a5a91532ab38873523508b8bd57cd809a806cf1
      
https://github.com/Perl/perl5/commit/6a5a91532ab38873523508b8bd57cd809a806cf1
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Reorder #if clauses

Currently, the two clauses are about the same length, but in the next
commit the current first clause will become a lot longer.

The principal that it's easier to read code that disposes of the easy
cases first comes into play, so, reverse the clause order.


  Commit: 22a234969feb228b85eb90705ff14607335dde03
      
https://github.com/Perl/perl5/commit/22a234969feb228b85eb90705ff14607335dde03
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Inline only remaining use of querylocale_l()

Future commits would make this macro need to be a function anyway, and
since there is only one use of it, just inline it.  The assertion it
defines is no longer needed, as we know that the one place it is now
placed is valid.

This also adds explanatory comments


  Commit: e4e4fb07733103fb27ae17b63e2514ccced45e07
      
https://github.com/Perl/perl5/commit/e4e4fb07733103fb27ae17b63e2514ccced45e07
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Flatten two nested if's

These can be combined into a single more cohesive construct


  Commit: 5259812340aba67eb0c51faf0ce5b65d1d9d72e9
      
https://github.com/Perl/perl5/commit/5259812340aba67eb0c51faf0ce5b65d1d9d72e9
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move a #define, and add a comment


  Commit: 17fedfe26689fe184590bf17ff921a67cd1bd1d8
      
https://github.com/Perl/perl5/commit/17fedfe26689fe184590bf17ff921a67cd1bd1d8
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX try reverting: locale.c: Lock around querylocale

See what passes


  Commit: ac95770cff86a0f8df65af5c2d91c1b873c9548b
      
https://github.com/Perl/perl5/commit/ac95770cff86a0f8df65af5c2d91c1b873c9548b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Revert "XXX try reverting: locale.c: Lock around querylocale"

This reverts commit 899565f1db40eb12fba5733b20cd63362d7e5b5f.


  Commit: e04e969f61567c73b6b66f6eeadd058a055cb71e
      
https://github.com/Perl/perl5/commit/e04e969f61567c73b6b66f6eeadd058a055cb71e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Split up S_setlocale_from_aggregate_LC_ALL

This splits out the parsing of the LC_ALL string from the locale
setting.  Future commits will use the parse portion in more places.

The new code doesn't panic on syntax errors, unlike the old.  This is
because we should never panic on user input, but return failure instead.


  Commit: 4d8545b18df9a4d1527dd7898904592fd6cc356b
      
https://github.com/Perl/perl5/commit/4d8545b18df9a4d1527dd7898904592fd6cc356b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

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

This macro uses the results of the new Configure probe that tells us how
the platform represents disparate LC_ALL strings.


  Commit: 94355f934a919dde25149b495f7410a25b5647e5
      
https://github.com/Perl/perl5/commit/94355f934a919dde25149b495f7410a25b5647e5
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move two helper functions for POSIX 2008 implementation


  Commit: 184b0ab0f28408929a79e4583d6d5ac370798469
      
https://github.com/Perl/perl5/commit/184b0ab0f28408929a79e4583d6d5ac370798469
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  Add development aid for simulating LC_ALL fake positional notation

There are two ways that systems represent LC_ALL when not all individual
categories are in the same locale.  One is
    category_name=value
pairs, and the other is a positional notation
    cat1_value|cat2_value|cat3_value|...
where the separator (here '|') varies between platforms, and the
position of a value determines which category it applies to.

This commit adds the ability to simulate a positional box on a
name=value box, so that many bugs can be found without having to access
a real positional box.


  Commit: 0f1b017ce0df811365ae65fa7e02c17de348e170
      
https://github.com/Perl/perl5/commit/0f1b017ce0df811365ae65fa7e02c17de348e170
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add support for LC_ALL positional notation

Some platforms use a positional notatiol for LC_ALL when not all
categories are the same, like

    C/English/C.UTF-8/ ...

This commit takes advantage of the new Configure probe to now handle
those when parsing an LC_ALL string.


  Commit: 47c5f5c44ad17df0b6885713e207d2e0bd7fff83
      
https://github.com/Perl/perl5/commit/47c5f5c44ad17df0b6885713e207d2e0bd7fff83
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: use variable to avoid extra comparisons

The mnemonic name also makes it clearer.  Instead of comparing two
variables multiple times, set a boolean once with the result, and use
that.


  Commit: a8127c12041c922f4406b881c7fe168f41795677
      
https://github.com/Perl/perl5/commit/a8127c12041c922f4406b881c7fe168f41795677
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Windows Use .ACP for sys default fallback

Prior to this commit the locale handling code thought that Windows used
"" for the system default locale.  But it's not, and to get to the
change in the initialization code, the "" had already been tried and
failed.


  Commit: 9e893a642b9f3427fcc030b09f83ad4a54b8cab7
      
https://github.com/Perl/perl5/commit/9e893a642b9f3427fcc030b09f83ad4a54b8cab7
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  locale.c, perl.h: comments, white space


  Commit: 8bc4f934e2529324d0e1f98570bc22776b2967a1
      
https://github.com/Perl/perl5/commit/8bc4f934e2529324d0e1f98570bc22776b2967a1
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX maybe not for windows: S_calculate_LC_ALL_string(): save value after 
calculation

On some platforms the string returned by this function also needs to be
kept up-to-date in an array element.  This commit changes the function
to do the update (after the potentially expensive calculation) as a
side-effect, so as to avoid unnecessary recalculations.


  Commit: 6ef6b4cc9aca9a4438825e2e9fe99698d40c7af5
      
https://github.com/Perl/perl5/commit/6ef6b4cc9aca9a4438825e2e9fe99698d40c7af5
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Precalculate LC_ALL string boiler plate length

When not all categories have the same locale, the internal
representation of LC_ALL is a sequence of 'cat=value' pairs, separated
by semi-colons.  The only things that vary are the values.  This commit
sums up the non-varying portions at compile time.


  Commit: 47d6a33976c239f4a66f616eefd1965172a5588b
      
https://github.com/Perl/perl5/commit/47d6a33976c239f4a66f616eefd1965172a5588b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  S_querylocale_2008_i: Add caller's line# param

This will be helpful in debugging


  Commit: 0d7a3419389adeadf13dc77f1ef9d26a0f304075
      
https://github.com/Perl/perl5/commit/0d7a3419389adeadf13dc77f1ef9d26a0f304075
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Calculate native LC_ALL strings

There are two methods of representing non-uniform LC_ALL strings.  One
is name=value pairs, and the other is positional.  Now that there is a
Configure probe that detects the details, calculate_LC_ALL_string() is
here enhanced to have a parameter passed to it as to which variety the
output should be in, and to generate the proper format.


  Commit: bd86b3721c023258a873b1ece14616548a200164
      
https://github.com/Perl/perl5/commit/bd86b3721c023258a873b1ece14616548a200164
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Revamp S_ stdize_locale()

We are now able to parse and construct non-uniform LC_ALL strings.  A
big part of this function was trying to deal with these, but now that
can be farmed out.

It's now extremely unlikely this function will now actually change
anything, based on recent field experience.  To save copying that
therefore won't likely ever be needed, this function now returns its
input if unchanged, and a mortalized copy if it unlikely does need to be
changed.  That means it no longer needs a buffer reserved for it.

The input is going to be the static global buffer pointed to by the
return of setlocale().  That means calls to this function need to be
protected by mutexes in threaded systems, and the result safely copied
during the critical section.  This requirement is unchanged by this
commit.


  Commit: f8169c4e5cb97ffdbf9841e0246203bf9b65f8b0
      
https://github.com/Perl/perl5/commit/f8169c4e5cb97ffdbf9841e0246203bf9b65f8b0
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  Rename the buffer in S_less_dicey_locale

It was reusing the buffer formerly used by S_stdize_locale(), but now
its only use is from this function, so name it accordingly.


  Commit: 379aecdb2e66f13c3386e4d4db03d601281fbad1
      
https://github.com/Perl/perl5/commit/379aecdb2e66f13c3386e4d4db03d601281fbad1
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_stdize_locale() Rmv testing for spurious '='

This code had been added to counteract occasional cases of improper
syntax in a locale string.  Other fixes to the locale handling have
resulted in those cases not now showing up.  It was never clear if the
changes that code made to the locale name were actually the right thing
to do.

Now, we have the ability to correctly parse locale strings on all
platforms tested on.  If there is a problem with a platform, the parsing
discovers it and returns an error, which stdize_locale() checks for and
also returns an error if found, and so on back up the line to the user
calling code.


  Commit: c3934094b34028d0653b645d0c7cc0f5144f8a57
      
https://github.com/Perl/perl5/commit/c3934094b34028d0653b645d0c7cc0f5144f8a57
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  XXX perldelta other pod: Compile stdize_setlocale() only if requested

XXX perldelta, and where else?

This very old function has been whittled down to just looking for
newlines in returned locales.  Those just haven't come up in platforms
we have tested on in recent years.  Therefore, this is extra work on
most, or perhaps all platforms.  Should a platform show that this is
still needed, its hints file can be changed to add a Configure option.


  Commit: ac0b6d1fc130b3ab7e73d2d01c9256ce7d8a6dcf
      
https://github.com/Perl/perl5/commit/ac0b6d1fc130b3ab7e73d2d01c9256ce7d8a6dcf
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Create STDIZED_SETLOCALE_LOCK

Its best to use a mutex associated with the operation.  This creates one
for stdized_setlocale(), which is just an alias for another mutex.


  Commit: f661cf7071a5d761491817c35b81454a1813d0cc
      
https://github.com/Perl/perl5/commit/f661cf7071a5d761491817c35b81454a1813d0cc
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move a macro definition earlier in the file


  Commit: 64067a21063b99ab3a593473409fc7332fb561a1
      
https://github.com/Perl/perl5/commit/64067a21063b99ab3a593473409fc7332fb561a1
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Change DEBUG statements to include non-0 errno

This is very helpful when things go wrong.


  Commit: 8aad46e105c2f12c35277f2c4f7e2331900a6658
      
https://github.com/Perl/perl5/commit/8aad46e105c2f12c35277f2c4f7e2331900a6658
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Only define string constant on platforms that need it


  Commit: 3e189d8d1975141f132664113f64383f0788473c
      
https://github.com/Perl/perl5/commit/3e189d8d1975141f132664113f64383f0788473c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Perl_sync_locale(): Best to change to global locale

This didn't actually cause a bug AFAIK, but prior to this commit, the
comment was wrong.  The comment makes sense, so bring the code into
compliance.

The reason it was not a bug is that even though the thread remained in
the per-thread locale, it uses the global locale API to set things.


  Commit: c2d210b21d86826a98bde40cfbc3ee455a3d9f56
      
https://github.com/Perl/perl5/commit/c2d210b21d86826a98bde40cfbc3ee455a3d9f56
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

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

Now that we have code that works on platforms with differing ways of
representing LC_ALL, we can use it instead of looping through all the
subcomponents.


  Commit: b200485484c2221864d4b5e7103b9d306475d525
      
https://github.com/Perl/perl5/commit/b200485484c2221864d4b5e7103b9d306475d525
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Extract code into a function

This is in preparation for a future commit where it will be called from
more than one place.


  Commit: 276411e7fd37a8071e0f6806c0ce98daaa2e7f4a
      
https://github.com/Perl/perl5/commit/276411e7fd37a8071e0f6806c0ce98daaa2e7f4a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Extract code into separate function

This is in preparation for it being called from a second location in a
future commit.

Beyond the move, the only changes are to white space, and a
PERL_UNUSED_ARG.


  Commit: 13f5a4fe27a349c2965cbe7935505072fe4ae3f8
      
https://github.com/Perl/perl5/commit/13f5a4fe27a349c2965cbe7935505072fe4ae3f8
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Complement initialization of boolean

This was my attempt to make the difference listing in the next commit
smaller, but it didn't help much.


  Commit: 7a87ea4b875db10e27d211a9c11224b3b9cca1ba
      
https://github.com/Perl/perl5/commit/7a87ea4b875db10e27d211a9c11224b3b9cca1ba
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Rework locale initialization loop

The previous code was always hard to understand, with a self-modifying
loop.  I finally figured out a clearer way to do it, by using an enum
with all the possibilities, and a switch statement that sets up the loop
for each, or decides this possibility isn't valid on this platform.  The
first possibility that works exits the loop.


  Commit: 8d052e388f346b3033c5b739af892ac6da3665cf
      
https://github.com/Perl/perl5/commit/8d052e388f346b3033c5b739af892ac6da3665cf
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Rmv redundant sanity check

This was done only on Windows, to verify that the perl was operating on
a system that has a working _configthreadlocale(), when our Configure
expects it to.  But the previous commit now executes this function
anyway at the endif of initialization, so that is soon enough to fail if
something is wrong, making this redundant.


  Commit: 111fbdaed8b5c13c1f36fcf4571b2fa302bad24c
      
https://github.com/Perl/perl5/commit/111fbdaed8b5c13c1f36fcf4571b2fa302bad24c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M utf8.h

  Log Message:
  -----------
  silence utf8.h warning


  Commit: eeb1c98c6d1464e74ebb25128e1266459361bbe1
      
https://github.com/Perl/perl5/commit/eeb1c98c6d1464e74ebb25128e1266459361bbe1
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Extract code into a macro

This is in preparation for a simplification in future commits.


  Commit: ed8b33d68731388e33d27cd4dae6270ca13e17a7
      
https://github.com/Perl/perl5/commit/ed8b33d68731388e33d27cd4dae6270ca13e17a7
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Extend macro from previous commit

Actually this creates a macro of the same name that accomplishes the
same thing, but specifically for Windows.


  Commit: 9e08477efd7d2c1e03771693d5ceaa8b84b224ee
      
https://github.com/Perl/perl5/commit/9e08477efd7d2c1e03771693d5ceaa8b84b224ee
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Don't over allocate array

This previously added an extraneous unused element.


  Commit: 09be8b082e329d78f33b8cc861636fc060124a38
      
https://github.com/Perl/perl5/commit/09be8b082e329d78f33b8cc861636fc060124a38
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Bring declaration inside #if's

This would now cause a compilation error if the code gets screwed up.


  Commit: 890324f71d2d47ff4379dd8231f887b4b7cb3396
      
https://github.com/Perl/perl5/commit/890324f71d2d47ff4379dd8231f887b4b7cb3396
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Slight refactor of switch_to_global_locale()

Now that we can better handle any legal LC_ALL string, we can just use
LC_ALL when available.


  Commit: b62826918717335701264225e3250974baa960e1
      
https://github.com/Perl/perl5/commit/b62826918717335701264225e3250974baa960e1
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  Perl__byte_dump_string(): Properly handle NULL input

Instead of an assert, this returns (nil) and things can proceed.


  Commit: 6ebec6665fe04b407946f9958df4e90594cb0320
      
https://github.com/Perl/perl5/commit/6ebec6665fe04b407946f9958df4e90594cb0320
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Combine two condiionals to rm special case

The case removed is handled transparently below.


  Commit: efb7737360a61e1bee4a1705afa90194728e29da
      
https://github.com/Perl/perl5/commit/efb7737360a61e1bee4a1705afa90194728e29da
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_find_locale_from_environment(): Change var name

This variable is really the LANG environment variable; change its name
to correspond.


  Commit: 582d2d691988d9b0dee7b97c138b9bb8b923a4e3
      
https://github.com/Perl/perl5/commit/582d2d691988d9b0dee7b97c138b9bb8b923a4e3
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_find_locale_from_environment(): Add comments


  Commit: 363fa93657ae4226590b1fea017c9450dfbd43ed
      
https://github.com/Perl/perl5/commit/363fa93657ae4226590b1fea017c9450dfbd43ed
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_find_locale_from_environment(): Combine logic

Prior to this commit, the logic was repeated for non-LC_ALL versus
LC_ALL; the latter being executed in a loop.  The logic is not really
trivial and it would be better to have just one instance, so that it
can't get out-of-sync.  To do this, this commit moves everything to the
loop, but sets it up for the non-LC_ALL case to just do a single
iteration.

It also avoids going out to the environment and fetching LANG unless
needed.  The previous behavior got LANG unconditionally if the loop was
used.  It is quite likely that not every locale category would have a
corresponding environment variable set, so that fetch likely wasn't
wasted.  But in order to combine things, the checking for LANG is done
in the loop.

The bottom line is that there is extra code required to combine the two
pieces of logic, but I believe the combining of this into a single
paradigm is worth it.


  Commit: cc0256f5d4c32c75faa505a389c5231f0b4dba95
      
https://github.com/Perl/perl5/commit/cc0256f5d4c32c75faa505a389c5231f0b4dba95
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX tests; linux doesn't allow this:S_find_locale_from_environment: Handle 
disparate LC_ALL

Prior to this commit, it was possible on some platforms to improperly
set a locale category from a locale of "".

Consider:

export LC_ALL="LC_CTYPE=de_DE;LC_NUMERIC=C;LC_TIME=de_DE;..."

and in Perl run with that environment:

    print POSIX::setlocale(LC_NUMERIC, "");


  Commit: f9ac4a92ec288137e42db569c9c41c50ceaf4f83
      
https://github.com/Perl/perl5/commit/f9ac4a92ec288137e42db569c9c41c50ceaf4f83
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  Change parameter name for S_bool_setlocale_2008_i

THe new name is more descriptive


  Commit: 4f702680e1315e170ef27570947a42271025479f
      
https://github.com/Perl/perl5/commit/4f702680e1315e170ef27570947a42271025479f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_bool_setlocale_2008_i: Improve debug statements


  Commit: efd565151330953cf710ca8076311c7e1bca9b9b
      
https://github.com/Perl/perl5/commit/efd565151330953cf710ca8076311c7e1bca9b9b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_bool_setlocale_2008_i: Check for failure return

Previously, this would forge ahead; looking at the code it seems it
would fail later on anyway, but it is best to check and fail
immediately.


  Commit: b3f9f32325a37fa37cd8aa1e8ddea496616f43f3
      
https://github.com/Perl/perl5/commit/b3f9f32325a37fa37cd8aa1e8ddea496616f43f3
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_bool_setlocale_2008_i: Separate out failure code

This causes the failure to be handled by going to effectively a
tail-call spot.  This is in preparation for it being used in another
place.


  Commit: adfb190106a2b2fb5de5a4cd9e942eecc401d7b9
      
https://github.com/Perl/perl5/commit/adfb190106a2b2fb5de5a4cd9e942eecc401d7b9
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move declaration closer to first use


  Commit: f4fa61b327d3e109478ea859b76f3622c9f38475
      
https://github.com/Perl/perl5/commit/f4fa61b327d3e109478ea859b76f3622c9f38475
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Extract two debug statements into macros

This is in preparation for them being called from other places


  Commit: 162924f6c58f5c8aa6a5ae2793a76c775f9024b9
      
https://github.com/Perl/perl5/commit/162924f6c58f5c8aa6a5ae2793a76c775f9024b9
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Indent/outdent some lines

This is to make the differences in the next commit smaller


  Commit: 7412d5b52649717ca51cd0b729d283996a913474
      
https://github.com/Perl/perl5/commit/7412d5b52649717ca51cd0b729d283996a913474
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

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

A "" input locale has been expanded by the time it gets here, so this is
never true; it is a relict from previous implementations.


  Commit: 776d1c2b6af9687a71fd70069aad35099054c52d
      
https://github.com/Perl/perl5/commit/776d1c2b6af9687a71fd70069aad35099054c52d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_bool_setlocale_2008_i: Copy function call.

This removes a function call from a single place and inserts it in
several.  The reason is that it makes a future commit cleaner.


  Commit: 44399c5b31c8e0925e8cc919816379a6cb85c86e
      
https://github.com/Perl/perl5/commit/44399c5b31c8e0925e8cc919816379a6cb85c86e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Combine debugging lines

This information is a subset of a debug statement just prior to it.


  Commit: 2ee8dd9a9960e95b3bef6308df0e364e960d6a36
      
https://github.com/Perl/perl5/commit/2ee8dd9a9960e95b3bef6308df0e364e960d6a36
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  S_update_PL_curlocales(): Add parameter

This is the ultimate caller's line number, which will be useful in a
future commit; unused for now.


  Commit: 9430407ad5e474572dd204df8d59874169abf85a
      
https://github.com/Perl/perl5/commit/9430407ad5e474572dd204df8d59874169abf85a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_update_PL_curlocales_i(): Reverse order of conditionals

The new ordering will play better with future commits


  Commit: e233d27f4b0a59095b9ea63dd8229ebaf9fe0db7
      
https://github.com/Perl/perl5/commit/e233d27f4b0a59095b9ea63dd8229ebaf9fe0db7
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  locale.c: Update comments, white-space in 2 functions


  Commit: dc4dfaf9c6b53dec50633868020125f5bae7df4e
      
https://github.com/Perl/perl5/commit/dc4dfaf9c6b53dec50633868020125f5bae7df4e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Avoid an (unlikely) leak

As the comments say, this eventuality is unlikely to happen, but if it
did, it would mean a leak.


  Commit: 210a91b1d7a3324ca3605b65b668c140fe366630
      
https://github.com/Perl/perl5/commit/210a91b1d7a3324ca3605b65b668c140fe366630
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_bool_setlocale_2008_i: Remove recursion

This converts recursive calls of this function into an iterative loop.
Besides the obvious benefits, some platforms don't even require a loop,
as a future commit will do.


  Commit: 13267bafe406190fdbaf385a1cbcb4c13fca2672
      
https://github.com/Perl/perl5/commit/13267bafe406190fdbaf385a1cbcb4c13fca2672
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  Rmv unused function: S_setlocale_from_aggregate_LC_ALL

Previous commits have removed all uses of this


  Commit: f6f99724588d62308af2c3520439cf00638a8377
      
https://github.com/Perl/perl5/commit/f6f99724588d62308af2c3520439cf00638a8377
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  S_parse_LC_ALL_string(): Add parameter

This tells the function to panic instead of returning failure upon
encountering an error.


  Commit: d7e8e4121313f33f1b87455b7a87e36f5ad8d259
      
https://github.com/Perl/perl5/commit/d7e8e4121313f33f1b87455b7a87e36f5ad8d259
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  S_parse_LC_ALL_string: Squash if categories are same locale

It turns out that some platforms return something like
    C/C/C/C/C/C
instead of just the equivalent 'C' when querying LC_ALL.  This can lead
to extra work for us, and unnecessary noise when displayed to the user.

This commit changes parse_LC_ALL_string() to look for this case, and to
coalesce the result to just  the single value, which is returned in just
the 0th element of the input array, leaving the other elements unused.

It makes this behavior overridable by an input flag, which will be used
in a future commit.


  Commit: e0c3f3f40eec688ce77402eb8f44ccbcf51edeac
      
https://github.com/Perl/perl5/commit/e0c3f3f40eec688ce77402eb8f44ccbcf51edeac
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_update_PL_curlocales(): accept arbitrary LC_ALL string

Prior to this commit, this function couldn't handle an LC_ALL string
that wasn't just a single locale for all categories.  But now that we
can parse a disparate string, update this function to use that.


  Commit: 5994132199792824e07c2c35f6d6862f8d5d912c
      
https://github.com/Perl/perl5/commit/5994132199792824e07c2c35f6d6862f8d5d912c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_setlocale_2008_i(): Use single newlocale() if available

On some platforms the newlocale() libc function when setting LC_ALL can
handle an input locale that sets some categories to one thing; and
others to another; etc.  On such platforms, we don't have to loop
through all categories individually.

This commit changes to use that if the #define indicating its
availability is set.


  Commit: 38a4225311b828d29edf84a1df7fcc6b9efed42f
      
https://github.com/Perl/perl5/commit/38a4225311b828d29edf84a1df7fcc6b9efed42f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  XXX Partial need vutil.c first Rmv underlying numeric

This object, only on POSIX 2008 systems, is no longer used.  I've been
keeping it around in case I could figure out if it had any remaining
utility, but don't see any.


  Commit: 27f1dd5bce89a269164c9cd7c0e6466b368e4f03
      
https://github.com/Perl/perl5/commit/27f1dd5bce89a269164c9cd7c0e6466b368e4f03
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use function already designed for the purpose

Instead of several initialization calls, call the overarching one that
includes them all.


  Commit: b2a4dc4407855dad6b1417f8357d2e82cd644cb5
      
https://github.com/Perl/perl5/commit/b2a4dc4407855dad6b1417f8357d2e82cd644cb5
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Avoid a duplicate conditional


  Commit: 2e43dfee5d6300b7af85892a4090bd4ae236a11d
      
https://github.com/Perl/perl5/commit/2e43dfee5d6300b7af85892a4090bd4ae236a11d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

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


  Commit: 5d9f8d2370e77f5fe6fa01f7bc69ac99cdd6fd0c
      
https://github.com/Perl/perl5/commit/5d9f8d2370e77f5fe6fa01f7bc69ac99cdd6fd0c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX Initial guess as to newlocale() capability

glibc has a newlocale() that can handle disparate LC_ALL string input.
This commit is until more data is gathered.


  Commit: a587dcda9c24794120240c9fb782ca72d7a9f59c
      
https://github.com/Perl/perl5/commit/a587dcda9c24794120240c9fb782ca72d7a9f59c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  Add caller location info to e.g. RESTORE_LC_NUMERIC

These help pinpointing the error source when a failure occurs.


  Commit: 61cb5f7eb0a702fcc2dde84b3fd6b8e0f5c3dd9a
      
https://github.com/Perl/perl5/commit/61cb5f7eb0a702fcc2dde84b3fd6b8e0f5c3dd9a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX tests,delta: Handle glibc extra locale categories

glibc has several locale categories not found in standards.  This commit
provides minimal support.


  Commit: 65b6c143bf35707a6947ace9b46bd866782c53d7
      
https://github.com/Perl/perl5/commit/65b6c143bf35707a6947ace9b46bd866782c53d7
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  Properly handle ignored locale categories

perl can be compiled to ignore arbitrary locale categories that are
actually on the system.  This has never worked transparently, especially
on platforms that use postional notation to represent LC_ALL when not
all categories are set to the same locale.  The system calls will return
a string containing the ignored category, and we dont know how to handle
that.

This large commit fixes that by compiling to include the information
about all categories on the system.  But if a category is to be ignored,
instead we set it to the C locale, and thwart any effort to change it
away from that locale.


  Commit: 60878dd6d09f2dbec71e2f939a989dd7ea747577
      
https://github.com/Perl/perl5/commit/60878dd6d09f2dbec71e2f939a989dd7ea747577
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Revise warnings when locale init has issues

Previously, we didn't know the possible locale categories on this
system, so grepped through the environment outputting anything that
begins with 'LC_'.  But now we do know all of them, and can just use
those.


  Commit: 1df71509d92f337c944dc2a07c76801cc6b493ce
      
https://github.com/Perl/perl5/commit/1df71509d92f337c944dc2a07c76801cc6b493ce
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  S_calculate_LC_ALL_string: Add parameter

This parameter is set only when this function is being called by
Perl_setlocale().  This is purely for performance  It causes this
function to use a particular buffer and avoid extra copying.


  Commit: 9b8014064ce5cf59f59cfe3774daa8ec83ada046
      
https://github.com/Perl/perl5/commit/9b8014064ce5cf59f59cfe3774daa8ec83ada046
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  XXX why not failing tests before this?Create S_native_querylocale_i() and use 
it

This new function differs from the already existing plain
querylocale_i() in that it returns in the platform's native format,
instead of the internal=to-perl one.

The internal one is used generally so that code doesn't have to cope
with multiple possible formats.  The format of the new locale in
Perl_setlocale() is going to be in native format.  We effectively
translate it into our internal one at the input edge, and that is used
thereafter.

But until this commit, the translation back to native format at the
output edge was incomplete.

This mostly worked because native format differs from locale.c
internal format in just two ways.

One is the locale for LC_NUMERIC.  perl keeps it generally in the C
locale, except for brief intervals which higher level code specifies,
when the real locale is swapped in.  (Actually, this isn't quite true.
If the real locale is indistinguishable from C as far as LC_NUMERIC
goes, perl is happy to use it rather than C, so as to save swapping.)
locale.c had the code in it to translate the internal format back to
native, so it worked for this case.

The other is LC_ALL when not all categories are set to the same locale.
Windows and Linux use 'name=value;' pairs notation, while things derived
from BSD (and others) use a positional notation in which only the values
are given, and the system knows which category a given value is for from
its position in the string.  Perl worked fine for the name=value pairs
notation, because that is the same as its internal one, so no
translation got done, but until this commit, there were issues on
positional platforms.  This seldom got in the way since most people, if
they set the locale at all, will just set it to some single 'foo'.

What this commit effectively does is change Perl_setlocale() to return
the value in the native format which the libc functions are expecting.
This differs from what it used to return only on platforms which use the
positional notation and only for LC_ALL when not all categories are set
to the same locale.

The new function subsumes much of the work previously done in
Perl_setlocale(), and it is able to simplify some of that work.


  Commit: eb9517aa98146d4919645d2f6e074b6ca7bb5a4d
      
https://github.com/Perl/perl5/commit/eb9517aa98146d4919645d2f6e074b6ca7bb5a4d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Remove no longer used macro


  Commit: fec6eb28fad70aea08c791e76d5a5a814be156bb
      
https://github.com/Perl/perl5/commit/fec6eb28fad70aea08c791e76d5a5a814be156bb
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Add setlocale_i()

This macro is defined on Configurations where a simple unadorned
setlocale works for categories that don't have perl record keeping
involved.

This allows Perl_setlocale() to avoid a lot of unnecessary overhead for
these.

This commit defines it only for unthreaded perls.


  Commit: 98812073429169fb4bff4e983d0b698c45d82319
      
https://github.com/Perl/perl5/commit/98812073429169fb4bff4e983d0b698c45d82319
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
   locale.c: Move S_update_PL_curlocales()

 Prior to this commit, it was only for POSIX 2008, but a future commit
 will want to use it when not POSIX 2008.


  Commit: 2621995a16bf2a503b5312ebf3c9e8da5f5ca34f
      
https://github.com/Perl/perl5/commit/2621995a16bf2a503b5312ebf3c9e8da5f5ca34f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  savepv if threaded, unused I think


  Commit: c75e8a6a56fce3b39c11be99dac46f0a16a011f0
      
https://github.com/Perl/perl5/commit/c75e8a6a56fce3b39c11be99dac46f0a16a011f0
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Rmv unexecuted statement after croak


  Commit: 1f6ae2959583bf11ffbadff51d2abc54c89fc66f
      
https://github.com/Perl/perl5/commit/1f6ae2959583bf11ffbadff51d2abc54c89fc66f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Improve collation debugging output

This adds a special case for when the buffer is empty


  Commit: 27001c1f20899ac87d2110b84139abff94237914
      
https://github.com/Perl/perl5/commit/27001c1f20899ac87d2110b84139abff94237914
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX introductory file comments


  Commit: b7e46b386a038a93ab7244d1539084cf64c72a70
      
https://github.com/Perl/perl5/commit/b7e46b386a038a93ab7244d1539084cf64c72a70
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Only compile workaround on platforms needing it

This code works around a bug on Windows with regard to localeconv().
And the bug only exists on such platforms that have thread-safety.
Prior to this commit, the code was compiled on platforms lacking
thread-safety, so was unnecessary.


  Commit: 9ca4281ada12abfbf3552b60ec4da6531d27751d
      
https://github.com/Perl/perl5/commit/9ca4281ada12abfbf3552b60ec4da6531d27751d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M intrpvar.h
    M locale.c

  Log Message:
  -----------
  locale.c: Use wider than U32 for a counter

Processes that change locales are incrementing a counter that could
eventully wrap if the process is long-lived.  It's not likely, but it's
also easy to make this a U64 if available, and make the chances of it
happening much closer to zero.


  Commit: 1435814699b3e5a3aacef0a6022d5385d46926d3
      
https://github.com/Perl/perl5/commit/1435814699b3e5a3aacef0a6022d5385d46926d3
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move setting errno out of critical section

I doesn't matter much, but its better practice to make critical sections
as small as possible.


  Commit: 03d48adb30efdbbadf79892f1d52d446d5a276fc
      
https://github.com/Perl/perl5/commit/03d48adb30efdbbadf79892f1d52d446d5a276fc
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  get_win32_message_utf8ness() Fix unlikely case

This function calls get_locale_string_utf8ness_i().  The API of that
function changed earlier in the 5.37 series, and this was not updated to
correspond.  It is calling it with category 0, wich it thinks is an
out-of-bounds value, but it really is LC_ALL on Windows.  Thus it
actually probably doesn't lead to a failure, but it theoretically could
fail if LC_ALL is not uniform.

So it's better to not succeed just by accident.  This commit changes to
now use LC_CTYPE as the category.  And if someone has managed to compile
Windows without LC_CTYPE, it now just says that the input string isn't
UTF-8, as without LC_CTYPE, you've only got the C locale.


  Commit: 926f7340da6561294b98888e569c382ace30bd50
      
https://github.com/Perl/perl5/commit/926f7340da6561294b98888e569c382ace30bd50
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Only define a structure if needed

Without LC_NUMERIC, this structure is unused, and generates a compiler
warning.


  Commit: 8a3d542fd24dcaccc829bbaff61dec33a37c4d29
      
https://github.com/Perl/perl5/commit/8a3d542fd24dcaccc829bbaff61dec33a37c4d29
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add a debugging statement

This can be helpful in tracing what's happening with nl_langinfo()
calls.


  Commit: 58ce5566df4ce798ca53a16b1c3e8479e5379e66
      
https://github.com/Perl/perl5/commit/58ce5566df4ce798ca53a16b1c3e8479e5379e66
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  perlapi:  Improve wording for Perl_langinfo()


  Commit: fd67b8b3542ef541cc7a759a332d8f0a90322cdc
      
https://github.com/Perl/perl5/commit/fd67b8b3542ef541cc7a759a332d8f0a90322cdc
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Critical section around initializing a global

This code should only have a race in the unlikely event that it is an
embedded perl, and there is another perl already running.  But best to
avoid the possibility at all.


  Commit: 65de17b64659edf2761c625080e1632333cd0665
      
https://github.com/Perl/perl5/commit/65de17b64659edf2761c625080e1632333cd0665
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move #ifdef DEBUGGING

This moves it up to precede a block that only does debugging info.


  Commit: 0a6af30b4c2b609e9b7ee8b7672c3fdee0a5f74b
      
https://github.com/Perl/perl5/commit/0a6af30b4c2b609e9b7ee8b7672c3fdee0a5f74b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_stdize_locale: Set errno if fails


  Commit: 2ea8a0455b49c864abe4f17b6b7f2da92f46b537
      
https://github.com/Perl/perl5/commit/2ea8a0455b49c864abe4f17b6b7f2da92f46b537
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX experimental: Define setlocale_i() on unsafe threaded builds

On threaded Configurations where thread-safe locale handling is not
available, perl automatically does a modicum of prevention of races by
executing locale changes in a critical section, and copying the results
to a thread-safe location.

This commit defines setlocale_i() on such builds.  This macro is used to
bypass more complex handling required in fully thread-safe builds.

I don't see how this changes thread-safeness on the unsafe builds, and
it passes the tests, but I'm considering it experimental for now, until
later in the development cycle.


  Commit: e0db7469f2df8354433c929502555059e2c406d8
      
https://github.com/Perl/perl5/commit/e0db7469f2df8354433c929502555059e2c406d8
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M t/porting/bincompat.t

  Log Message:
  -----------
  skip bincompat.t


  Commit: 5b5505cf835042acd27810263cf9bef4df6d9c77
      
https://github.com/Perl/perl5/commit/5b5505cf835042acd27810263cf9bef4df6d9c77
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M hints/darwin.sh

  Log Message:
  -----------
  darwin hints querylocale race in earlier darwins?


  Commit: 717f9ca4b62c864a00da83fb1a99f050e9ffb2d4
      
https://github.com/Perl/perl5/commit/717f9ca4b62c864a00da83fb1a99f050e9ffb2d4
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: make querylocale locking conditional


  Commit: 3ffb2e95e6f01697afeb3a894ef39ed07cd28d71
      
https://github.com/Perl/perl5/commit/3ffb2e95e6f01697afeb3a894ef39ed07cd28d71
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M intrpvar.h

  Log Message:
  -----------
  intrpvar.h: Comments


  Commit: 2adaa46783cb69fe755a73decfb65d576452d92a
      
https://github.com/Perl/perl5/commit/2adaa46783cb69fe755a73decfb65d576452d92a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  emul


  Commit: baebb4369226eca2acdaf84aa2c5d0af9c16ab03
      
https://github.com/Perl/perl5/commit/baebb4369226eca2acdaf84aa2c5d0af9c16ab03
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Change to use enum type

Instead of 'unsigned int', use the more restricted enum.


  Commit: 8cddc9788d8ee8a347c1637915a1bca7751adb4c
      
https://github.com/Perl/perl5/commit/8cddc9788d8ee8a347c1637915a1bca7751adb4c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  locale.c: Compile utf8ness on platforms that need it

These two functions need to be compiled on certain other platforms than
what was happening.


  Commit: 8332e375d3757a731d139299f2fa0429300f3692
      
https://github.com/Perl/perl5/commit/8332e375d3757a731d139299f2fa0429300f3692
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Silence compiler warning on some platforms

This argument isn't used on some platforms.


  Commit: f27ea67c8318c7d9f8344ab01eaeaba87f78511d
      
https://github.com/Perl/perl5/commit/f27ea67c8318c7d9f8344ab01eaeaba87f78511d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M Configure
    M locale.c
    M metaconfig.h
    M perl.h

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


  Commit: 3401202206c28be3907d746f8a22db70676a17fb
      
https://github.com/Perl/perl5/commit/3401202206c28be3907d746f8a22db70676a17fb
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M Configure
    M locale.c
    M metaconfig.h
    M perl.h

  Log Message:
  -----------
  Revert "f Configure"

This reverts commit 12d2cfd3fbf933bbbfb52a448d8bdda62f7ac100.


  Commit: e84ccf9a06f74bade2d66e71e6bbac0babf14ff7
      
https://github.com/Perl/perl5/commit/e84ccf9a06f74bade2d66e71e6bbac0babf14ff7
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M makedef.pl

  Log Message:
  -----------
  drop when Configure fixed


  Commit: 3ab554b5673c0718ca051f6e52a224b5071d13cd
      
https://github.com/Perl/perl5/commit/3ab554b5673c0718ca051f6e52a224b5071d13cd
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M makedef.pl

  Log Message:
  -----------
  makedef.pl: PL_cur_locale_obj is only POSIX 2008 multiplicity


  Commit: 7a15e88f3a896d9ed21259a4856bf1f4299d565c
      
https://github.com/Perl/perl5/commit/7a15e88f3a896d9ed21259a4856bf1f4299d565c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M makedef.pl

  Log Message:
  -----------
  makedef.pl: Move comment


  Commit: 1d9a51ccb1949cfe56931ad3a0ef617c49db4b41
      
https://github.com/Perl/perl5/commit/1d9a51ccb1949cfe56931ad3a0ef617c49db4b41
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M makedef.pl

  Log Message:
  -----------
  Maybe drop: makedef.pl: Move code


  Commit: 262a1c7fda909b046535bced379db81f6bec0c1f
      
https://github.com/Perl/perl5/commit/262a1c7fda909b046535bced379db81f6bec0c1f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M makedef.pl

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


  Commit: c96d4f9d19f5a42a203c2eaff233fbb8c1f40b42
      
https://github.com/Perl/perl5/commit/c96d4f9d19f5a42a203c2eaff233fbb8c1f40b42
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  Add DEBUG_SETLOCALE_INCONSISTENCIES


  Commit: ee430f0310b98c17487441e2b465bbb482036632
      
https://github.com/Perl/perl5/commit/ee430f0310b98c17487441e2b465bbb482036632
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  Fix mingw locale builds

Experience has shown that mingw with an older runtime library doesn't
have more modern Windows features working properly.  This commit causes
it to compile with workarounds, but allows the user to

-Accflags='-DUCRT_USED'

to indicate to Configure that the code will be using the modern CRT.


  Commit: 477ef8e7b19055bc03f8871055bd08e3f1bfe052
      
https://github.com/Perl/perl5/commit/477ef8e7b19055bc03f8871055bd08e3f1bfe052
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  Enable DEBUG_SETLOCALE_INCONSISTENCIES


  Commit: 80717918eaa3677750329815cf984fad0edaef4d
      
https://github.com/Perl/perl5/commit/80717918eaa3677750329815cf984fad0edaef4d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Add detail to locale mutex debug


  Commit: e3e24d6fe1b987228524c33efbaa84c04a6aed71
      
https://github.com/Perl/perl5/commit/e3e24d6fe1b987228524c33efbaa84c04a6aed71
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c
    M perl.h

  Log Message:
  -----------
  XXX remaining loose ends


  Commit: bc25cb0deb636ca1c3f2aae13c2d6425154fd8cd
      
https://github.com/Perl/perl5/commit/bc25cb0deb636ca1c3f2aae13c2d6425154fd8cd
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M cpan/version/t/07locale.t
    M pod/perlembed.pod
    M t/porting/customized.dat

  Log Message:
  -----------
  final commit


  Commit: 11c447d2096f40daf90563e7150d356aa2e571e3
      
https://github.com/Perl/perl5/commit/11c447d2096f40daf90563e7150d356aa2e571e3
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  use enum, maybe drop


  Commit: 87ac425c4ec8182ee84468f7ecfba8872ef79d0e
      
https://github.com/Perl/perl5/commit/87ac425c4ec8182ee84468f7ecfba8872ef79d0e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Revert "prev commit"

This reverts commit 4be10ec67fb8fef94cb573a8f7b51cb23610517f.


  Commit: 2ade128e1771bdeb32c7435e2809fcc6dc3d273a
      
https://github.com/Perl/perl5/commit/2ade128e1771bdeb32c7435e2809fcc6dc3d273a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  more cat index enum


  Commit: cf139a29cdeb7390c74091f88a3843ff12abe136
      
https://github.com/Perl/perl5/commit/cf139a29cdeb7390c74091f88a3843ff12abe136
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M dist/Tie-File/t/29a_upcopy.t

  Log Message:
  -----------
  XXX temp: dist/Tie-File/t/29a_upcopy.t: Up alarm


  Commit: 6401991d02b483882b64b625d7fd234c349b8d75
      
https://github.com/Perl/perl5/commit/6401991d02b483882b64b625d7fd234c349b8d75
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

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


  Commit: d8b08eabce06369911cc9f98a94c94ff7ab27cf1
      
https://github.com/Perl/perl5/commit/d8b08eabce06369911cc9f98a94c94ff7ab27cf1
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h fixup


  Commit: 78bbb29573f46bb9ca9fb3ee177bdc43c93b86ea
      
https://github.com/Perl/perl5/commit/78bbb29573f46bb9ca9fb3ee177bdc43c93b86ea
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M Configure

  Log Message:
  -----------
  f Configure for positional


  Commit: 63dc49fd14833e4ccf07e781693d7b8c1b2a6d91
      
https://github.com/Perl/perl5/commit/63dc49fd14833e4ccf07e781693d7b8c1b2a6d91
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  fixup init for C C C C C


  Commit: f8626d3f6c4487125d3156bf253a6af89f222d94
      
https://github.com/Perl/perl5/commit/f8626d3f6c4487125d3156bf253a6af89f222d94
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  perlapi: Fix strftime inaccuracies, clarify


  Commit: 4dd79b38d02b4a3ed64bb05e98b1c08252bfed6e
      
https://github.com/Perl/perl5/commit/4dd79b38d02b4a3ed64bb05e98b1c08252bfed6e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Set errno when my_strftime() fails.

The libc strftime() doesn't have any way to distinguish between
erroneous input and that which just doesn't generate any output; hence
it doesn't set errno.

But my_strftime() has logic to reasonably confidently make that
distinction, so it should set errno when it determines that it is
erroneous input.


  Commit: 20dc32f0af769a12f07ec1c2329885f7260480c9
      
https://github.com/Perl/perl5/commit/20dc32f0af769a12f07ec1c2329885f7260480c9
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  add is_cur_locale_utf8


  Commit: 3a5a79c348580a58116c31600f2d6bb965a8ab61
      
https://github.com/Perl/perl5/commit/3a5a79c348580a58116c31600f2d6bb965a8ab61
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

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

By creating a temporary variable, an else is eliminated, and the
lock/unlock are brought close together.


  Commit: 0d91ed91ca368b7ef4ceac62ecfd5cf601dbee49
      
https://github.com/Perl/perl5/commit/0d91ed91ca368b7ef4ceac62ecfd5cf601dbee49
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M dist/threads/threads.xs
    M embed.fnc
    M locale.c
    M perl.h
    M proto.h
    M util.c

  Log Message:
  -----------
  switch_locale_context: Add aTHX

This fixes GH #21040

Instead of a dTHX, this passes aTHX automatically, and skips calling
this function if there is no valid context.

It moves that decision into the macro itself, avoiding some #ifdef
directives.


  Commit: c13fdc4e05e7ccccd742f0c119ac646221e1a32c
      
https://github.com/Perl/perl5/commit/c13fdc4e05e7ccccd742f0c119ac646221e1a32c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  strftime: Always restore LC_CTYPE locale

my_strftime toggles LC_CTYPE to match LC_TIME to avoid mojibake.

In reading the code, I realized that there was a code path that doesn't
properly restore it, namely when failure is returned.  This commit fixes
that.


  Commit: d6590fb86b075d43ce307b8e54c16dcbd34a7eb4
      
https://github.com/Perl/perl5/commit/d6590fb86b075d43ce307b8e54c16dcbd34a7eb4
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  Time::Piece: Use reentrant API

This single line magically makes this work much better under threading,
though critical section locks need to be added as well.


  Commit: 7e6ee9dd64a84930ae927600c85d2aad90b1977a
      
https://github.com/Perl/perl5/commit/7e6ee9dd64a84930ae927600c85d2aad90b1977a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  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: 0b00964284cdef7a1acb18d5e6247ea35113946c
      
https://github.com/Perl/perl5/commit/0b00964284cdef7a1acb18d5e6247ea35113946c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

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

  Log Message:
  -----------
  Time-Piece: Use isSPACE_LC, not isspace; etc

isDIGIT_LC() does the same thing as isdigit when everything goes well,
but is more robust when things get more complicated.  The _LC forms are
thread safe, for example.

But note that this code doesn't work properly for a UTF-8 locale, as it
assumes that a byte and character are the same thing.  A major overhaul
would be needed to handle that.


  Commit: f95932b1e1179019d1614d8847a548ba43d20294
      
https://github.com/Perl/perl5/commit/f95932b1e1179019d1614d8847a548ba43d20294
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M cpan/Time-Piece/Piece.pm
    M cpan/Time-Piece/Piece.xs
    M cpan/Time-Piece/Seconds.pm
    M dist/Module-CoreList/lib/Module/CoreList.pm
    M embed.fnc
    M embed.h
    M ext/POSIX/POSIX.xs
    M ext/POSIX/t/time.t
    M locale.c
    M proto.h

  Log Message:
  -----------
  Time::Piece: Use core function to implement strftime_

This functionality is thread-safe and takes care of all worries about
UTF-8.

To use it, the charmap is changed to pass this an SV* instead of a char*


  Commit: 98fd981ac0bbfbd8b270e95b7f35c79fec7dd456
      
https://github.com/Perl/perl5/commit/98fd981ac0bbfbd8b270e95b7f35c79fec7dd456
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M dist/threads/threads.xs
    M intrpvar.h
    M locale.c
    M makedef.pl
    M sv.c

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


  Commit: 98dfe179fc89ea6115c1bc935dc7db3387027454
      
https://github.com/Perl/perl5/commit/98dfe179fc89ea6115c1bc935dc7db3387027454
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M ext/POSIX/t/time.t

  Log Message:
  -----------
  POSIX/t/time.t: Remove no longer necessary code

POSIX::strftime() now automatically handles the case where the locales of
LC_TIME and LC_CTYPE aren't the same.  So no need to explicitly do this
in the test file.


  Commit: b743a1eacc3d21edcb3c2425111cd9a4421c8356
      
https://github.com/Perl/perl5/commit/b743a1eacc3d21edcb3c2425111cd9a4421c8356
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Add DISABLE_LC_NUMERIC_CHANGES macro

This is for code that needs to keep other code from changing LC_NUMERIC
out from under it, but avoids the knowledge of PL_numeric_standard,
which is used when perl controls the locale handling.

This is designed for 'version' (vutil.c) to use, because it has to
operate seamlessly in the mode where perl controls the handling, and
when it doesn't, even if it doesn't know it doesn't.


  Commit: 38325169f8bb75d2a4f0e9f45f709d944f4dd949
      
https://github.com/Perl/perl5/commit/38325169f8bb75d2a4f0e9f45f709d944f4dd949
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Remove extraneous ';'


  Commit: e15e67220989aa2afac3bee2652b7a7060d9e9d3
      
https://github.com/Perl/perl5/commit/e15e67220989aa2afac3bee2652b7a7060d9e9d3
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M ext/POSIX/t/time.t

  Log Message:
  -----------
  XXX see how affects earlier commits: time.t: Add more strftime tests


  Commit: e6a2f0318c090de366f433a336b83272ba9a2720
      
https://github.com/Perl/perl5/commit/e6a2f0318c090de366f433a336b83272ba9a2720
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M dist/threads/threads.xs

  Log Message:
  -----------
  XXX threads.xs: Move #ifdef to beginning of file

XXX saves an interior ifdef, but unsure if worth it.


  Commit: 1222c7e2f497eb6f48c33dd66f61ed61539a9d91
      
https://github.com/Perl/perl5/commit/1222c7e2f497eb6f48c33dd66f61ed61539a9d91
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-14 (Sun, 14 May 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: localeconv() isn't broken on Windows unthreaded

Nor is it broken if compiled without per-thread locale handling.  The
bug in it until VS 2015 was that it always looked at the global locale.
When the only locale available is the global one, there is not breakage.

This commit thus avoids compiling workaround code for the bug when it
isn't necessary.


  Commit: bf8bedc39e0ddfb0642ba9800cbdd152d6c6c504
      
https://github.com/Perl/perl5/commit/bf8bedc39e0ddfb0642ba9800cbdd152d6c6c504
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-05-14 (Sun, 14 May 2023)

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

  Log Message:
  -----------
  foo


Compare: https://github.com/Perl/perl5/compare/327bc0fc260a...bf8bedc39e0d

Reply via email to