Branch: refs/heads/smoke-me/khw-env
  Home:   https://github.com/Perl/perl5
  Commit: 998aeda5d2e110469d84db820bfd36334cdd4e7f
      
https://github.com/Perl/perl5/commit/998aeda5d2e110469d84db820bfd36334cdd4e7f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M charclass_invlists.h
    M lib/unicore/Makefile
    M lib/unicore/mktables
    M lib/unicore/uni_keywords.pl
    M regcharclass.h
    M uni_keywords.h

  Log Message:
  -----------
  mktables more verbose


  Commit: 52c2e85d9a895ca207f7109936058bc005ee0cad
      
https://github.com/Perl/perl5/commit/52c2e85d9a895ca207f7109936058bc005ee0cad
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm

  Log Message:
  -----------
  BlackBox dont use rare scripts


  Commit: d68bf67677f6c88114909964b806faa5794ef5d0
      
https://github.com/Perl/perl5/commit/d68bf67677f6c88114909964b806faa5794ef5d0
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/harness

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


  Commit: 7d27447a8de5c6503664e1f3cbe38443b11754d5
      
https://github.com/Perl/perl5/commit/7d27447a8de5c6503664e1f3cbe38443b11754d5
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/harness

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


  Commit: 5a5435ebcaecb6ad77216032ca2381ec7802c4ce
      
https://github.com/Perl/perl5/commit/5a5435ebcaecb6ad77216032ca2381ec7802c4ce
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/porting/bincompat.t

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


  Commit: beb41ee2b076939ab21cf6611f937ef0ac8702fd
      
https://github.com/Perl/perl5/commit/beb41ee2b076939ab21cf6611f937ef0ac8702fd
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/TEST

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


  Commit: 0d6bac6104be8461d2da275156b3363defe76c6f
      
https://github.com/Perl/perl5/commit/0d6bac6104be8461d2da275156b3363defe76c6f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M MANIFEST
    M charclass_invlists.h
    M dist/Tie-File/t/29a_upcopy.t
    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:
  -----------
  XXX temp: dist/Tie-File/t/29a_upcopy.t: Up alarm


  Commit: 3c5507d7dc575c0305206faba2c0ff7598bfc60e
      
https://github.com/Perl/perl5/commit/3c5507d7dc575c0305206faba2c0ff7598bfc60e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 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: e9d8ab179e75d6dbf25d464a7eb8b919e1afc219
      
https://github.com/Perl/perl5/commit/e9d8ab179e75d6dbf25d464a7eb8b919e1afc219
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/test.pl

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


  Commit: 4b5d8e73db1d900a662aa656ef91af2670061dc6
      
https://github.com/Perl/perl5/commit/4b5d8e73db1d900a662aa656ef91af2670061dc6
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/test.pl

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

This reverts commit 1579ce0dbce549cb594214ba27d4e2fa389f891b.


  Commit: 26ba766063ffa658af2f59ed19cbbe393774ced2
      
https://github.com/Perl/perl5/commit/26ba766063ffa658af2f59ed19cbbe393774ced2
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/run/locale.t

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


  Commit: dc9a3261c2512eaa636e68b08ab6ecccc47fdeb3
      
https://github.com/Perl/perl5/commit/dc9a3261c2512eaa636e68b08ab6ecccc47fdeb3
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/run/locale.t

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


  Commit: 5e9b9af9de4cab214929e162ca7c00bb4b988246
      
https://github.com/Perl/perl5/commit/5e9b9af9de4cab214929e162ca7c00bb4b988246
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

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

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


  Commit: 6e23b9ea86354ab6afa6ffb0c8e1ce2a405ac32a
      
https://github.com/Perl/perl5/commit/6e23b9ea86354ab6afa6ffb0c8e1ce2a405ac32a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/porting/cmp_version.t

  Log Message:
  -----------
  XXX skip cmp_version.t prob. due to 5.38 tag issue


  Commit: 7d0a4e20ecc9fc8e7ee6e3439e6aaf6f99900835
      
https://github.com/Perl/perl5/commit/7d0a4e20ecc9fc8e7ee6e3439e6aaf6f99900835
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

  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: 68e60b799acebb1e8578bfe9f6409b4b95b52eb2
      
https://github.com/Perl/perl5/commit/68e60b799acebb1e8578bfe9f6409b4b95b52eb2
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

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


  Commit: 2436e49b6a2354e10bb7041e3df6065fe26a378b
      
https://github.com/Perl/perl5/commit/2436e49b6a2354e10bb7041e3df6065fe26a378b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/porting/cmp_version.t

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


  Commit: 22188e44bf8b7fa8c6be310067eadfc1fd486795
      
https://github.com/Perl/perl5/commit/22188e44bf8b7fa8c6be310067eadfc1fd486795
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M perl.h

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


  Commit: 0e949c10aa453d8b162766588e71ceed03f9da20
      
https://github.com/Perl/perl5/commit/0e949c10aa453d8b162766588e71ceed03f9da20
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 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: 02b30ba64811bb9372a1da5513db2e98ad75efec
      
https://github.com/Perl/perl5/commit/02b30ba64811bb9372a1da5513db2e98ad75efec
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M makedef.pl
    M perl.h

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


  Commit: 2450799c8eaf58fa36155f706f13afaf4b12c9de
      
https://github.com/Perl/perl5/commit/2450799c8eaf58fa36155f706f13afaf4b12c9de
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M perl.h

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


  Commit: ce940ee8dcb6fccf52969870994b8829ae219ab9
      
https://github.com/Perl/perl5/commit/ce940ee8dcb6fccf52969870994b8829ae219ab9
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

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


  Commit: dd55e39bd0d0ca3ab3247d0b5f0eba4948b9213c
      
https://github.com/Perl/perl5/commit/dd55e39bd0d0ca3ab3247d0b5f0eba4948b9213c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 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: c7d5d352ccb024397064fe0f5ed8cee3e8e4a01e
      
https://github.com/Perl/perl5/commit/c7d5d352ccb024397064fe0f5ed8cee3e8e4a01e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 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: 25da275bded1192dbc22fb50978d684e39ba61c7
      
https://github.com/Perl/perl5/commit/25da275bded1192dbc22fb50978d684e39ba61c7
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 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: 72871b802ceb798c032f5d83b6a42a80b83f99d8
      
https://github.com/Perl/perl5/commit/72871b802ceb798c032f5d83b6a42a80b83f99d8
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 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: de92804811081f1f108feaa40b4bfe1a4ceafc3c
      
https://github.com/Perl/perl5/commit/de92804811081f1f108feaa40b4bfe1a4ceafc3c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

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


  Commit: c4f91051a360dba6793d7bad93a14589242c3619
      
https://github.com/Perl/perl5/commit/c4f91051a360dba6793d7bad93a14589242c3619
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

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


  Commit: 243caabe58220ee46e3c263977c833c8cddaa476
      
https://github.com/Perl/perl5/commit/243caabe58220ee46e3c263977c833c8cddaa476
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M dist/threads/threads.xs

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


  Commit: 8c699958e25e4622623cfbdcc371a1fbb7af4071
      
https://github.com/Perl/perl5/commit/8c699958e25e4622623cfbdcc371a1fbb7af4071
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M lib/locale.t

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


  Commit: 0cd2bdd62d1a218e29a75f44966a9fef7f352198
      
https://github.com/Perl/perl5/commit/0cd2bdd62d1a218e29a75f44966a9fef7f352198
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M lib/locale.t

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


  Commit: 413f68493c4a7ea31c0ea1c72a31df95927aa3cf
      
https://github.com/Perl/perl5/commit/413f68493c4a7ea31c0ea1c72a31df95927aa3cf
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M lib/locale.t

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


  Commit: dcd1b5bb60c2b40ab5720906590562b82e558c32
      
https://github.com/Perl/perl5/commit/dcd1b5bb60c2b40ab5720906590562b82e558c32
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M perl.h

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


  Commit: ed18d259519a689c54cd3a9bdb406e45cf8fb9c2
      
https://github.com/Perl/perl5/commit/ed18d259519a689c54cd3a9bdb406e45cf8fb9c2
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

  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: 9d0e50373f9f2fb920b30b6e8f6a91e3e6f1dcf2
      
https://github.com/Perl/perl5/commit/9d0e50373f9f2fb920b30b6e8f6a91e3e6f1dcf2
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

  Log Message:
  -----------
  drop, bug have to recompute md5


  Commit: 98d4a9dd5d0e17546b752c8f38d48e0731dcee15
      
https://github.com/Perl/perl5/commit/98d4a9dd5d0e17546b752c8f38d48e0731dcee15
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/porting/customized.dat

  Log Message:
  -----------
  customized.dat


  Commit: 3e39ab1bd6df8263e2b4f472ae834184eff9a0a4
      
https://github.com/Perl/perl5/commit/3e39ab1bd6df8263e2b4f472ae834184eff9a0a4
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  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 then run

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

It wouldn't know how to extract just the LC_NUMERIC part of the LC_ALL
string.

There is no test added because I didn't find a shell that allows setting
LC_ALL to such a disparate value.


  Commit: 80bd1f005654eea910b6febb5b98815ab0420ae3
      
https://github.com/Perl/perl5/commit/80bd1f005654eea910b6febb5b98815ab0420ae3
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/loc_tools.pl

  Log Message:
  -----------
  loc_tools: XXX Debug


  Commit: 009ab26c95035446cb1b9c4f40742c0909d8f65b
      
https://github.com/Perl/perl5/commit/009ab26c95035446cb1b9c4f40742c0909d8f65b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_querylocale_2008_i:  Add entry assertion


  Commit: 0e5d8746f4092ab9e56b3544aaa70402356be68f
      
https://github.com/Perl/perl5/commit/0e5d8746f4092ab9e56b3544aaa70402356be68f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_bool_setlocale_i: Add entry assertion


  Commit: 4866a62bc5ff282dedb0324c82c49ecdeb6c2759
      
https://github.com/Perl/perl5/commit/4866a62bc5ff282dedb0324c82c49ecdeb6c2759
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

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


  Commit: dd96888d869a143d881bebda102c44618ec6dac0
      
https://github.com/Perl/perl5/commit/dd96888d869a143d881bebda102c44618ec6dac0
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 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: 17742730fa04e48b41da108b4f22aa45a2a94a9f
      
https://github.com/Perl/perl5/commit/17742730fa04e48b41da108b4f22aa45a2a94a9f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 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: a3afbc0d24db27d1147532427a3c24e8248de09b
      
https://github.com/Perl/perl5/commit/a3afbc0d24db27d1147532427a3c24e8248de09b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M hints/darwin.sh

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


  Commit: 01ba2815006342e70b861493a36c5dd3c58b1b27
      
https://github.com/Perl/perl5/commit/01ba2815006342e70b861493a36c5dd3c58b1b27
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  pp.c


  Commit: 139e3dc66fff8b4ef8fd99c5bc34b101b3189d99
      
https://github.com/Perl/perl5/commit/139e3dc66fff8b4ef8fd99c5bc34b101b3189d99
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M hints/darwin.sh

  Log Message:
  -----------
  darwin


  Commit: 6b8430f4e855d985a3fa0e109962363bdc59a082
      
https://github.com/Perl/perl5/commit/6b8430f4e855d985a3fa0e109962363bdc59a082
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M hints/freebsd.sh

  Log Message:
  -----------
  Enable thread-safe locales on some freebsd versions

This had been disabled in the hints file due to bugs, which perl now
works around, so reenable (and reformat some lines for clarity)


  Commit: ba3ec252683e114ebf0dc9b01cdb2e4ba671a8da
      
https://github.com/Perl/perl5/commit/ba3ec252683e114ebf0dc9b01cdb2e4ba671a8da
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/run/locale.t

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


  Commit: 33d61ab5f3f82093db61d6bbf071b8f391280945
      
https://github.com/Perl/perl5/commit/33d61ab5f3f82093db61d6bbf071b8f391280945
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  locale_threads: add a commented out yield


  Commit: 97979f5dd414ce3865250e402f10a5bb05e8d921
      
https://github.com/Perl/perl5/commit/97979f5dd414ce3865250e402f10a5bb05e8d921
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M lib/locale_threads.t

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


  Commit: 8d80b03fd4ff8404c88289cef6131b5a7f3ddfa0
      
https://github.com/Perl/perl5/commit/8d80b03fd4ff8404c88289cef6131b5a7f3ddfa0
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/porting/customized.dat

  Log Message:
  -----------
  customized.dat for before Time Piece


  Commit: 77c96c9269b119d011dd036270690b241a771f86
      
https://github.com/Perl/perl5/commit/77c96c9269b119d011dd036270690b241a771f86
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

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


  Commit: a249e6f9a5abcbf091ef5832e9bd129f28ce9152
      
https://github.com/Perl/perl5/commit/a249e6f9a5abcbf091ef5832e9bd129f28ce9152
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 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: f4cf2fce4e338643ec62bb818e267f52ef65c0be
      
https://github.com/Perl/perl5/commit/f4cf2fce4e338643ec62bb818e267f52ef65c0be
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

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

This core function available since 5.13.2 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
substitute, but far better than nothing.


  Commit: 4bd66d3a3c15ccf6af4af5229c0a8c557a7b38cc
      
https://github.com/Perl/perl5/commit/4bd66d3a3c15ccf6af4af5229c0a8c557a7b38cc
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 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: 5c44be36cbf503564b244d644dfb52ee6bd59a40
      
https://github.com/Perl/perl5/commit/5c44be36cbf503564b244d644dfb52ee6bd59a40
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M thread.h

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

Indent some nested preproccessor defines


  Commit: 6a0d496b2f838f2dbdb18b74ec9814c971c4f9a4
      
https://github.com/Perl/perl5/commit/6a0d496b2f838f2dbdb18b74ec9814c971c4f9a4
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 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

  Log Message:
  -----------
  Time::Piece: Add critical sections

This calls various macros to make certain libc calls uninterruptible, so
that they can be used safely in threaded applications, when this module
is loaded with a perl that supports this.

The macros are defined to do nothing if the perl doesn't contain working
versions of them.  In such perls, the macros are also defined to do
nothing except on configurations that could have races.

Typically, an extra problem is that the libc calls return in a global
static buffer, subject to being overwritten by another thread.  But an
earlier commit defined PERL_REENTRANT, which makes those functions
transparently return in a thread-local buffer instead.  That doesn't
help if the function gets interrupted by another thread; this commit
completes the process.


  Commit: c54860166582a00a7429ae77d77808f516f06a53
      
https://github.com/Perl/perl5/commit/c54860166582a00a7429ae77d77808f516f06a53
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

  Log Message:
  -----------
  XXX Time::Piece strftime


  Commit: 667b33ec67f069d9b3064cce061705412ee8cf2a
      
https://github.com/Perl/perl5/commit/667b33ec67f069d9b3064cce061705412ee8cf2a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

  Log Message:
  -----------
  Time-Piece: notes to myself


  Commit: 4895ea3b00ee5245116843666d711f363f85eae2
      
https://github.com/Perl/perl5/commit/4895ea3b00ee5245116843666d711f363f85eae2
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Slightly change wording of DEBUG messages

This makes them more consistent with the other messages in this file.


  Commit: 2d371e5ece212a02ca976bd46d88d4dffe6a7ff4
      
https://github.com/Perl/perl5/commit/2d371e5ece212a02ca976bd46d88d4dffe6a7ff4
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M util.c
    M win32/perlhost.h

  Log Message:
  -----------
  XXX Win32 mem log


  Commit: 36ab14aec9419a37f45f4d781de3d7fc7858767b
      
https://github.com/Perl/perl5/commit/36ab14aec9419a37f45f4d781de3d7fc7858767b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M util.c

  Log Message:
  -----------
  XXX util add thread to mem_log


  Commit: 2d3dca1152bf0dc178b8a0323f5457eb237accc1
      
https://github.com/Perl/perl5/commit/2d3dca1152bf0dc178b8a0323f5457eb237accc1
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Debug wrap wset


  Commit: cc9248888413757c9625aed2e732eda5f4c991c8
      
https://github.com/Perl/perl5/commit/cc9248888413757c9625aed2e732eda5f4c991c8
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Change some -DLv statements to -DL

These debug statements show something isn't quite normal, so shouldn't
require a verbose option to be displayed


  Commit: a066681a82e9318100fe4aa78bdc079d85fff1cb
      
https://github.com/Perl/perl5/commit/a066681a82e9318100fe4aa78bdc079d85fff1cb
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M pod/perlhacktips.pod

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


  Commit: e1ed13e55cbba32df461ce6e430f0799b822ef2d
      
https://github.com/Perl/perl5/commit/e1ed13e55cbba32df461ce6e430f0799b822ef2d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M iperlsys.h

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


  Commit: f3c7e9e66f3d621e698ae43afe59dedc248d8e38
      
https://github.com/Perl/perl5/commit/f3c7e9e66f3d621e698ae43afe59dedc248d8e38
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M regen/reentr.pl

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


  Commit: 0c0b492fc8bd3989df0c9bc71eadf91dc61bc096
      
https://github.com/Perl/perl5/commit/0c0b492fc8bd3989df0c9bc71eadf91dc61bc096
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

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


  Commit: be413666f37e6c0aba8887769946d0feb6e54719
      
https://github.com/Perl/perl5/commit/be413666f37e6c0aba8887769946d0feb6e54719
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M pod/perlmod.pod

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


  Commit: a66dce61598e3bb74a74a5af02514dbf5f4ff080
      
https://github.com/Perl/perl5/commit/a66dce61598e3bb74a74a5af02514dbf5f4ff080
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M pod/perllocale.pod

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


  Commit: b5632a8ee61b7847b6793eeeda910160a85f5630
      
https://github.com/Perl/perl5/commit/b5632a8ee61b7847b6793eeeda910160a85f5630
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M win32/config_H.gc
    M win32/config_h.PL
    M win32/config_sh.PL

  Log Message:
  -----------
  XXX config


  Commit: a138ae2e8db2250f4d0f86ab6fa3ff202c813905
      
https://github.com/Perl/perl5/commit/a138ae2e8db2250f4d0f86ab6fa3ff202c813905
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M t/run/locale.t

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


  Commit: 476c8cc7512abb21db05a46758d90409755b7fee
      
https://github.com/Perl/perl5/commit/476c8cc7512abb21db05a46758d90409755b7fee
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M pod/perlembed.pod

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


  Commit: 8edfcab4eead4aa4ae3649552807f5eb2d4271f1
      
https://github.com/Perl/perl5/commit/8edfcab4eead4aa4ae3649552807f5eb2d4271f1
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Win32: We don't know the locale here

And, so we don't know whether it is a UTF-8 locale or not.  So use the
proper enum value to indicate that.


  Commit: 4d8e9b8efb13178ffadafd3aa89d6cf51fbd4bc4
      
https://github.com/Perl/perl5/commit/4d8e9b8efb13178ffadafd3aa89d6cf51fbd4bc4
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX more work mingw


  Commit: 86a7182d5a748181ed5cfacb3877eac966f1aa68
      
https://github.com/Perl/perl5/commit/86a7182d5a748181ed5cfacb3877eac966f1aa68
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  pp


  Commit: 972263f0df388235d1a27480534d27a49945efb2
      
https://github.com/Perl/perl5/commit/972263f0df388235d1a27480534d27a49945efb2
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  Revert "pp"

This reverts commit 1133b83f4bd637f8641d66b48abd2bf7b5525ee3.


  Commit: f5f7226a7cf028e58cd26d79a8535d697d7b9711
      
https://github.com/Perl/perl5/commit/f5f7226a7cf028e58cd26d79a8535d697d7b9711
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  Revert "pp.c"

This reverts commit 6b8211cf799406b7044deceefb3b3f1a31515bda.


  Commit: 4c6233aec6bd91529b65eeeb4e08ed68b224b551
      
https://github.com/Perl/perl5/commit/4c6233aec6bd91529b65eeeb4e08ed68b224b551
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  locale_threads: start of using platform locales


  Commit: d9cbb2a38729e31e303a23a352e006652ccf2e3f
      
https://github.com/Perl/perl5/commit/d9cbb2a38729e31e303a23a352e006652ccf2e3f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  Revert "locale_threads: start of using platform locales"

This reverts commit a7a8dea3aabb81a05aacaf3a26c49854a5854111.


  Commit: 57fe59b4dc8e7a48462cd862763fba4259d2ae9c
      
https://github.com/Perl/perl5/commit/57fe59b4dc8e7a48462cd862763fba4259d2ae9c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c
    M perl.c
    M sv.c

  Log Message:
  -----------
  define numeric values to be C when no USE_NUMERIC


  Commit: e46e9eae69ff2f3b7dfd0a89264fa11f14f098da
      
https://github.com/Perl/perl5/commit/e46e9eae69ff2f3b7dfd0a89264fa11f14f098da
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c
    M perl.c
    M sv.c

  Log Message:
  -----------
  Revert "define numeric values to be C when no USE_NUMERIC"

This reverts commit 9bb7ff6531bf9e28d635a71e6d55c752a995da2d.


  Commit: 2cd20197dc990e18c7ec2f7410086440b22a6306
      
https://github.com/Perl/perl5/commit/2cd20197dc990e18c7ec2f7410086440b22a6306
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use shorter macro form

The _i suffix macros are for when we don't know the category at compile
time, and we have to have calculated an index.  In all these cases, the
index has been calculated, but the value is known at compile time.  The
_c suffix macros are designed for this, and using them reduces visual
clutter.


  Commit: d95f821cb5bb61b3fca87ab0ae05d43b5984603c
      
https://github.com/Perl/perl5/commit/d95f821cb5bb61b3fca87ab0ae05d43b5984603c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Silence some compiler warnings

These only occur when pretending that this is a MingW compilation, which
is a development-only tool to catch errors before they show up on a real
MingW box.  This would never get compiled for real.


  Commit: dc82c0326091c3b1de1bc01d52372220ad4ecf12
      
https://github.com/Perl/perl5/commit/dc82c0326091c3b1de1bc01d52372220ad4ecf12
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add braces, indent code

Prior to this commit, the 'switch' immediately followed the 'if' without
a left brace for the 'if'.  This conserved indentation and was feasible
because the scopes were identical..  But a future commit will want to
have the scope of the 'if' be larger than that of the 'switch', so add
the braces for the 'if' and indent the 'switch' code.

This commit also fixes white space on another line


  Commit: 3dbe839393627037c0488e779f76819b5227938b
      
https://github.com/Perl/perl5/commit/3dbe839393627037c0488e779f76819b5227938b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

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

A slight restructuring saves some lines.


  Commit: d9516d9590db4d58219431d019983a63f455b037
      
https://github.com/Perl/perl5/commit/d9516d9590db4d58219431d019983a63f455b037
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Change two #define names

They will soon have a more general meaning than currently.


  Commit: 1bab20c366545560baa2432b108298eaa6cfa013
      
https://github.com/Perl/perl5/commit/1bab20c366545560baa2432b108298eaa6cfa013
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Change parameter specification

S_populate_hash_from_localeconv() takes a mask of one or two bits that
specify which of LC_NUMERIC and/or LC_MONETARY to operate on.  Prior to
this commit, the appropriate bit was based on our internal index for the
relevant category(ies).  But we already have #defines of 0 for NUMERIC,
and 1 for MONETARY.  These are adjacent and start at 0, desirable
properties that the internal index doesn't necessarily have.

This commit changes to base the parameter on these 0,1 values.  This
will allow simplification in the next commit, and going forward.


  Commit: be0039b2848440609952c49adb0369c901420ca9
      
https://github.com/Perl/perl5/commit/be0039b2848440609952c49adb0369c901420ca9
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Simplify some localeconv() code

The previous commits have allowed this code to determine by looking at
the position of a bit in a mask what is going on, and so the code that
used to be there to cope with not having that can be removed.


  Commit: c0ffdcac5e94c2c37945c778c2a426eb47e3719f
      
https://github.com/Perl/perl5/commit/c0ffdcac5e94c2c37945c778c2a426eb47e3719f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

  Log Message:
  -----------
  locale.c: Don't need an explicit U32

Previous commits have caused only the lowest two bits in this variable
to be used; don't need anything as explicit as a U32.


  Commit: cf642da58d7a743cf15beb2c14b869f45d628147
      
https://github.com/Perl/perl5/commit/cf642da58d7a743cf15beb2c14b869f45d628147
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move code to earlier in function

This is in preparation for the object created here to be needed earlier.

This commit also cleans up a comment related to the moved code


  Commit: e59c79c8d3d31914b344c53ecb2ff57d8c673522
      
https://github.com/Perl/perl5/commit/e59c79c8d3d31914b344c53ecb2ff57d8c673522
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Reorder some statements in a switch()

This unifies the common text in two case: statements, and makes all of
them do their business in the same order.

This makes it easier to compare and contrast the actions of the various
case:s


  Commit: 2204e4b1e03553bad714613fb2e683c378ce0818
      
https://github.com/Perl/perl5/commit/2204e4b1e03553bad714613fb2e683c378ce0818
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Remove unused #define


  Commit: f44fa019ef5ccae866d1bca2b7fddb962bbd197e
      
https://github.com/Perl/perl5/commit/f44fa019ef5ccae866d1bca2b7fddb962bbd197e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

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

And collapse an existing one into one of the new ones, so as to use
a parallel naming convention

These will be used in future commits


  Commit: 38f8f54633e1e42c167a5087001ee24abd81b757
      
https://github.com/Perl/perl5/commit/38f8f54633e1e42c167a5087001ee24abd81b757
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Special case some C locale values

On Windows and MingW, some of this code can be frequently called, and
often with the C locale in effect.  Normally localeconv() is called to
fill in these values, but that is expensive in part because of a bunch
of setlocale() calls, some of which are extra, needed because of bugs in
the Windows libc.  We can short circuit that for the common C locale
case, as the values are specified by the C standard, so are known at
compile time.


  Commit: 44cdc0f21b41328816cc459ac253d082bf970925
      
https://github.com/Perl/perl5/commit/44cdc0f21b41328816cc459ac253d082bf970925
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

  Log Message:
  -----------
  locale.c: Use parallel array to simplify

This allows the numeric fields returned by localeconv() to have the same
logic as the string fields, simplifying the code a bit.  They weren't
previously handled the same because one category doesn't have any
numeric fields.  But this is now handled by creating an array and making
its corresponding element NULL, so the strings and numeric fields are
handled in the same way.


  Commit: 0e360aa91f05455d2640e3c2ef794e9d0256f2d8
      
https://github.com/Perl/perl5/commit/0e360aa91f05455d2640e3c2ef794e9d0256f2d8
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

  Log Message:
  -----------
  Special case localeconv when NUMERIC, MONETARY must be C

When both these categories are C, we don't need to call localeconv(),
which can be expensive because it may mean toggling locales.  Instead
the answers are well defined by the C Standard.  This adds a function
that returns those, and #ifdef's to locale.c to compile to use the
special function instead of the more general one if both categories must
be C.

A future commit will extend the use of this new function to more cases.


  Commit: 31e7575d3f410516d40f720d1b13181628dcc041
      
https://github.com/Perl/perl5/commit/31e7575d3f410516d40f720d1b13181628dcc041
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

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

When called with just a single item, we only need a single call to the
populating function, so move this code ahead of the 2nd call.  This also
clarifies the comments.


  Commit: f26beb36ebf1a2119d62feb6600f9938df7d0e0b
      
https://github.com/Perl/perl5/commit/f26beb36ebf1a2119d62feb6600f9938df7d0e0b
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c Special case localeconv for C locale

An earlier commit created a function that speedily works when both
LC_NUMERIC and LC_MONETARY are confined to the C locale, such as in
OpenBSD.  This commit extends that to use this function whenever a
category happens to be in the C locale.  This is a common case, that is
thus sped up.

Over the course of the development of locale.c, the meaning of not
having the various categories changed from not being on the machine, or
not paying attention to them, to instead mean, even if they are on the
machine, they are always kept in the C locale.  This code was not
updated to reflect that; and this commit also does that updating.


  Commit: 4021a6b35cd714d15c565b8196acc530950a6871
      
https://github.com/Perl/perl5/commit/4021a6b35cd714d15c565b8196acc530950a6871
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Use out-of-bounds value for illegality

This was using 0 as a parameter, which is a legal value and could have
been confused by the called subroutine as being legitimate.  It is not a
bug because of the way the subroutine is currently written given the
other parameters in this call.  But it is more robust to use an
out-of-bounds value, so that if the function were to change, we would
sooner find out about any improper call.


  Commit: dc3625808fb78b4d1a22bef15129f0c67e9e52c8
      
https://github.com/Perl/perl5/commit/dc3625808fb78b4d1a22bef15129f0c67e9e52c8
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Skip locale utf8ness calculation if feasible

I originally wrote this to save time processing the strings returned by
localeconv().  If we know that the locale isn't UTF-8, then we don't
have to calculate this for each string returned, Thus "Calculate once, not
many times".

But I hadn't realized that likely only one string is ever going to be
non-ASCII: the currency symbol.  (The decimal and thousands separators
could also be, but of the >500 locales on my Linux box, only ps_AF has
them so.  That is the Pashtun language in Afghanistan; not a frequently
occurring locale.)

So it comes down to either case is effectively "calculate once".  And it
is generally more expensive to calculate the UTF8ness of a locale than a
particular string in it, especially when those strings are going to be
ASCII, as in this case.

This commit changes to not calculate the locale's UTF8ness.


  Commit: f2ada59b6c600db350a5ac59c36843d7e4e08678
      
https://github.com/Perl/perl5/commit/f2ada59b6c600db350a5ac59c36843d7e4e08678
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Avoid unnecessary work around localeconv()

There are now two different functions that return the values for
localeconv().  One is for when the locale is "C"; the other for
everything else.  The C one returns values that don't need adjusting, so
skip that for this case.

This commit removes the SvPOK check which was recently added by
fe048cfaa3b42320785bd0c34896ac834634db22.  It was needed for before we
got values when -DNO_LOCALE_MONETARY is specified.  Now that we do get
those values, the SV always will contain a PV at this point.


  Commit: 2dd22487ebd2e5c2cd2fd13e80b149d0bca9900d
      
https://github.com/Perl/perl5/commit/2dd22487ebd2e5c2cd2fd13e80b149d0bca9900d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Remove redundant lock

This is a relic from a past implementation.  The operation is locked by
a different macro to lock it, so this is redundant.


  Commit: 9b8d5b86cc56be29c42a08dfecece98bc16fe7f0
      
https://github.com/Perl/perl5/commit/9b8d5b86cc56be29c42a08dfecece98bc16fe7f0
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c Use macro to avoid conditionals

We know at compile time what these conditionals always evaluate to.  Use
a macro to replace the confitional with nothing when its always going to
be true.  (The section of code doesn't even get compiled when its going
to always be false.)


  Commit: 0f581a9e08f32862cb5721abd2ca543093218705
      
https://github.com/Perl/perl5/commit/0f581a9e08f32862cb5721abd2ca543093218705
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  localeconv: Need to toggle current locale to desired one

localeconv() returns the values from the current locale.  Prior to this
commit we weren't always setting the current locale to the desired one
which is passed into this function.

It was a rare Configuration where the two didn't match, so this bug
wasn't caught until now.


  Commit: 81dd1fd57c1d75ebfd4b7ae698330bff48e44b97
      
https://github.com/Perl/perl5/commit/81dd1fd57c1d75ebfd4b7ae698330bff48e44b97
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Combine some preprocessor directives

This function is full of #if conditionals, due to the high variance in
what the capabilities of platforms are.

I tried various methods to lessen the cognitive load, like turning it
into separate functions that each suit a particular Configuration, but
it was just as complicated as before.

The code is doing set up, then the actual operation, then teardown.  The
actual operation is invariant.  What this commit does is for some of the
setup conditionals to define its own teardown macro.  The result is the
teardown looks much cleaner, and there is no possibility that it will
get out-of-sync with the setup.


  Commit: d3a8d247bb02abf363020dc8bf9d022dc3566aec
      
https://github.com/Perl/perl5/commit/d3a8d247bb02abf363020dc8bf9d022dc3566aec
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M hints/freebsd.sh
    M locale.c

  Log Message:
  -----------
  Avoid unnecessary mutex lock on Windows

It turns out that Windows since VS 2015 has a completely thread-safe
localeconv() function, with its result stored in a per-thread buffer.
MingW when built with the Universal C Run Time (UCRT) also has this
property.  These are the only implementations of localeconv() I know of
like this.

There is thus no need to have a critical section on these platforms.

This commit abstracts this, so that other platforms can be added if
found to be thread-safe.


  Commit: 1184962bde71b3c71607113af9dec5bd0924c6f4
      
https://github.com/Perl/perl5/commit/1184962bde71b3c71607113af9dec5bd0924c6f4
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX fleash outlocale.c: Revamp localeconv() Win32 handling

This reorders the Windows setup to before the individual category setups.


  Commit: 6f3fd009bb6c04cde6eaa9a61ef26199d64c5a93
      
https://github.com/Perl/perl5/commit/6f3fd009bb6c04cde6eaa9a61ef26199d64c5a93
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Remove unimplemented macros

This section of code won't compile should it be tried.  But this is a
very rare Configuration that none of our smokers have encountered so
far.  These macros are defined in a later commit.


  Commit: f75d807d0115b32bc3b0828216f096ada2c3f6f5
      
https://github.com/Perl/perl5/commit/f75d807d0115b32bc3b0828216f096ada2c3f6f5
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  funusedarg


  Commit: 2de266a1bac4b505c3b9f955779f27c8a847ae0c
      
https://github.com/Perl/perl5/commit/2de266a1bac4b505c3b9f955779f27c8a847ae0c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

  Log Message:
  -----------
  Return C values if localeconv() not available

localeconv() is a C89 function.  But the existing code handled the case
if it isn't available by returning an empty hash if POSIX::localeconv()
is called.  Prior commits have made it actually easier to instead return
the hash populated with the values that the C locale has, which is more
desirable than the current state.  And that is what this commit does.

There are reasons that localeconv() might not be available.  It still is
broken on MingW, and until recently on older Windows releases that we
now no longer support.  Workarounds were developed for those cases, but
there may be other platforms where it ends up broken without a
workaround, and this code handles them better and more simply than
before this commit.


  Commit: 4e0d6b33e5c44586b161f649847c1208a111d8ae
      
https://github.com/Perl/perl5/commit/4e0d6b33e5c44586b161f649847c1208a111d8ae
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

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

We can outdent preprocessor lines because the previous commit removed a
surrounding #ifdef.


  Commit: c6784c1aeef452e6d66fe9a23f48c853734c75a6
      
https://github.com/Perl/perl5/commit/c6784c1aeef452e6d66fe9a23f48c853734c75a6
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add struct definition as a fallback

If we ever encountered a platform that didn't have localeconv(), nor its
structure definition, this could be used to get things to work.


  Commit: 6b4d1a1e5201a812a2c7a4f0c9423d7d07567d37
      
https://github.com/Perl/perl5/commit/6b4d1a1e5201a812a2c7a4f0c9423d7d07567d37
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Do an adjustment in a critical section

This adjustment was deferred until after the critical section, but it is
only an extra conditional and variable set, whose time should be dwarfed
by the store to the hash, so I think it's all right to add it to the
critical section.


  Commit: bab58c63374e65481b96cbe1fcdbcad522835827
      
https://github.com/Perl/perl5/commit/bab58c63374e65481b96cbe1fcdbcad522835827
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Do localeconv() adjustments immediately unthreaded

localeconv() must be called and its struct processed in a critical
section when other threads or embedded perls could also be using it.
Something like StructCopy can't be used to save its values, as a deep
copy is needed.  Some of the processing can be expensive, so is deferred
to a separate pass after the critical section.

But if no critical section is needed, it's cheaper to do the processing
as we go along doing the copy.  A comment removed in this commit said
that the reason this wasn't done was because of an extra maintenance
cost (having to maintain the code in two places).  But when I actually
looked at what it would like like to do this, I found it is essentially
just an extra function call, not enough "extra" to worry about.


  Commit: 3edce8d1613e40f6b6eab0026ac109b7631ffa31
      
https://github.com/Perl/perl5/commit/3edce8d1613e40f6b6eab0026ac109b7631ffa31
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  debug populate localeconv


  Commit: ee7bc6f422b82983e48655908977f8ea2de466f3
      
https://github.com/Perl/perl5/commit/ee7bc6f422b82983e48655908977f8ea2de466f3
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: S_is_locale_utf8(): "C" locale not UTF-8

This adds a quick check to rule out "C" and "POSIX" as being possible
UTF-8 locales.  This shortcuts the more expensive checking needed for
non-trivial cases.


  Commit: 51949788adf37f8f1e5692bfa44e02765bcfafae
      
https://github.com/Perl/perl5/commit/51949788adf37f8f1e5692bfa44e02765bcfafae
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Tighten rules for detecting locale UTF-8ness

This is calling mbtowc() or mbrtowc().  Prior to this commit, it only
tested their returns to verify that they didn't return an error.  This
commit changes so that the return is tested to be the precise correct
value.


  Commit: 31db7b50ae6e19369fe608401b9ef4e0f0984f26
      
https://github.com/Perl/perl5/commit/31db7b50ae6e19369fe608401b9ef4e0f0984f26
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move declarations, add comments

C99 allows us to make declarations more local.


  Commit: 11cc5a48b399c5ede376f13839db98cfe815513e
      
https://github.com/Perl/perl5/commit/11cc5a48b399c5ede376f13839db98cfe815513e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move code into another function

This moves the code that definitely can determine if a locale is UTF-8
into the function is_locale_utf8().  This has the benefit of avoiding
some work on platforms lacking nl_langinfo(), such as Windows.


  Commit: 60d0edb85aae348457bf65544b37dfd38f6059cf
      
https://github.com/Perl/perl5/commit/60d0edb85aae348457bf65544b37dfd38f6059cf
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Fix up some comments

I did some research as to possible alternate methods if the current one
turns out not to work on some platforms, and the comments are hereby
changed to reflect the results.


  Commit: 21bdefaae78a59cbc5e39159d02991f1da44e773
      
https://github.com/Perl/perl5/commit/21bdefaae78a59cbc5e39159d02991f1da44e773
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Add shortcut ruling out locale being  UTF8

This quick check can shortcut the extra work for locales that aren't
UTF-8.


  Commit: e844566f5a1e40152bd54c3f4325dfc3d708bc6c
      
https://github.com/Perl/perl5/commit/e844566f5a1e40152bd54c3f4325dfc3d708bc6c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Comments and white space

I did some research based on the suggestions in the comments hereby
removed, only to find it is pretty much a dead-end.  I added new
comments to reflect this.


  Commit: 4143b9a02897bd0c514fa01f2af7b21be6c602c0
      
https://github.com/Perl/perl5/commit/4143b9a02897bd0c514fa01f2af7b21be6c602c0
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Move code to within only block using it


  Commit: fa440c9a4d9a661a76b413056b4d774040ec6ff6
      
https://github.com/Perl/perl5/commit/fa440c9a4d9a661a76b413056b4d774040ec6ff6
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  mismatched ctype


  Commit: 213c6ad6d97a70c84d8e0dc08af8398305a263d8
      
https://github.com/Perl/perl5/commit/213c6ad6d97a70c84d8e0dc08af8398305a263d8
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: XXX Move codeset to separate function


  Commit: 05cf0784b346c60f5b677bbabb1e1bb89eb439f7
      
https://github.com/Perl/perl5/commit/05cf0784b346c60f5b677bbabb1e1bb89eb439f7
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  strtod


  Commit: 24dff9b6ab4bae727b46fced7160478c9c68e7de
      
https://github.com/Perl/perl5/commit/24dff9b6ab4bae727b46fced7160478c9c68e7de
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  strtod_l


  Commit: d492b521accd9de41ed5c5737fbd7b362adebfa4
      
https://github.com/Perl/perl5/commit/d492b521accd9de41ed5c5737fbd7b362adebfa4
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Quit no if strftime() fails with EINVAL

It turns out that some platforms set errno to EINVAL when the libc
function strftime() finds the input format to be in error, though this
is not specified in the Standard (a defect there in my opinion).
Windows in particular does set errno.  Quit when an EINVAL errno is
detected.  On platforms that don't set EINVAL, the current behavior is
retained where the loop is executed again and again to rule out that the
error isn't a buffer size problem.


  Commit: 6edb54d3a5ada5a25605106b9730679f9d4ff1f6
      
https://github.com/Perl/perl5/commit/6edb54d3a5ada5a25605106b9730679f9d4ff1f6
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M dist/threads/threads.xs

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


  Commit: 9265b865a8fc8f0bd30254d711fde031760d86d9
      
https://github.com/Perl/perl5/commit/9265b865a8fc8f0bd30254d711fde031760d86d9
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

  Log Message:
  -----------
  add FAKE MING


  Commit: 54a162e21cf61e4f7916fd533ecd5b6a5103fd1e
      
https://github.com/Perl/perl5/commit/54a162e21cf61e4f7916fd533ecd5b6a5103fd1e
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Rmv warning and unnecessary declaration

The Windows versions we now support don't need to have this libc
function declared, and warn that it is being declared.


  Commit: 7ccf6dbf8237f00557ca17f3d2ad77facda8ebd8
      
https://github.com/Perl/perl5/commit/7ccf6dbf8237f00557ca17f3d2ad77facda8ebd8
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  XXX msg locale.c: Refactor an #ifdef

maybe #undef afterwards


  Commit: 5ef7734d4465ee2edd3ea01a54fe1e7e5f6f819c
      
https://github.com/Perl/perl5/commit/5ef7734d4465ee2edd3ea01a54fe1e7e5f6f819c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Change macro calls to shorter form

The _c version of the macros here are shorter to read, and expand to the
identical statements


  Commit: 46a2fd2938c41d799128721c687968884fb543d8
      
https://github.com/Perl/perl5/commit/46a2fd2938c41d799128721c687968884fb543d8
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  lib/locale_threads.t: Change variable names

Using 'set' as opposed to 'group' is clearer.


  Commit: 094eb83112e54d377f551b001c0cb19054b5469f
      
https://github.com/Perl/perl5/commit/094eb83112e54d377f551b001c0cb19054b5469f
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  lib/locale_threads.t: Add debugging info


  Commit: da074d1f7c228ac85dcada571ad5de301461a87c
      
https://github.com/Perl/perl5/commit/da074d1f7c228ac85dcada571ad5de301461a87c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  S_my_langinfo_i: Be sure to return in both places

This function returns a value, and also copies that value into a buffer.
Certain rare Configurations failed to fill the buffer in some
circumstances.


  Commit: 283ac0ce5ac9f24977700c1189478ee457747bb5
      
https://github.com/Perl/perl5/commit/283ac0ce5ac9f24977700c1189478ee457747bb5
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Avoid unnecessary locale changes

In our emulation of nl_langinfo(), prior to this commit, we always
toggled the locales of two categories to the necessary ones.  Except
that there are a number of paths through the code that don't require
this toggling.  This commit narrows the scope of the toggling to just
those cases that need it.


  Commit: bb55c319ff8b360e6a505073cc3a9536da926c4a
      
https://github.com/Perl/perl5/commit/bb55c319ff8b360e6a505073cc3a9536da926c4a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  locale.c: Avoid a recalculation

If we already have this information, no need to recalculate it.

Add ability to emulate thread-safe locale operations


  Commit: adcd532d9c0ed47163a31d3261e8f4e1de87b744
      
https://github.com/Perl/perl5/commit/adcd532d9c0ed47163a31d3261e8f4e1de87b744
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 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 pod/perlvar.pod
    M proto.h
    M sv.c

  Log Message:
  -----------
  Add ability to emulate thread-safe locale operations

Locale information was originally global for an entire process.  Later,
it was realized that different threads could want to be running in
different locales.  Windows added this ability, and POSIX 2008 followed
suit (though using a completely different API).  When available, perl
automatically uses these capabilities.

But many platforms have neither, or their implementation, such as on
Darwin, is buggy.  This commit adds the capability for Perl programs to
operate as if the platform were thread-safe.

This implementation is based on the observation that the underlying
locale matters only to relatively few libc calls, and only during their
execution.  It can be anything at all at any other time.  perl keeps
what the proper locale should be for each category in a a per-thread
array.  Each locale-dependent operation must be wrapped in mutex
lock/unlock operations.  The lock additionally compares what libc knows
the locale to be, and what it should be for this thread at this time,
and changes the actual locale to the proper value if necessary.  That's
all that is needed.

This commit adds macros to perl.h, for example "MBTOWC_LOCK_", that
expand to do the mutex lock, and change the global locale to the
expected value.  On perls built without this emulation capability, they
are no-ops.  All code in the perl core (unless I've missed something),
are changed to use these macros (there weren't actually many places that
needed this).  Thus, any pure perl program will automatically become
locale-thread-safe under this Configuration.

In order for XS code to also become locale-thread-safe, it must use
these macros to wrap calls to locale-dependent functions.  Relatively
few modules call such functions.  For example, the only one I found that
ships with the perl core is Time::Piece, and it has more fundamental
issues with running under threads than this.  I am preparing pull
requests for it.

Thus, this is not completely transparent to code like native-thread-safe
locale handling is.  Therefore ${^SAFE_LOCALES} returns 2 (instead of 1)
for this type of thread-safety.

Another deficiency compared to the native thread safety is when a thread
calls a non-perl library that accesses the locale.  The typical example is
Gtk (though this particular application can be configured to not be
problematic).  With the native safe threads, everything works as long as
only one such thread is used per Perl program.  That thread would then
be the only one operating in the global locale, hence there are no
conflicts.  With this emulation, all threads are operating in the global
locale, and mutexes would have to be used to prevent conflicts.  To
minimize those, the code added in this commit restores the global locale
when through to the state it was in when started.

A major concern is the performance impact.  This is after all trading
speed for accuracy.  lib/locale_threads.t is noticeably slower when this
is being used.  But that is doing multiple threads constantly using
locale-dependent operations.  I don't notice any change with the rest of
the test suite.  In pure perl, this only comes into play while in the
scope of 'use locale' or when using some of the few POSIX:: functions
that are locale-dependent.  And to some extent when formatting, but the
regular overhead there should dwarf what this adds.

This commit leaves this feature off by default.  The next commit changes
that for the next few 5.39 development releases, so we can see if there
is actually an issue.


  Commit: d7c688795abd1b6d074c4c569f37a8e898b102e3
      
https://github.com/Perl/perl5/commit/d7c688795abd1b6d074c4c569f37a8e898b102e3
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

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


  Commit: 1210cde30992c47ae1ce4eb0f5943cb415712b3d
      
https://github.com/Perl/perl5/commit/1210cde30992c47ae1ce4eb0f5943cb415712b3d
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  Make numeric standard inconsistent


  Commit: cb833a1c07d271701d2d754a1c7c60cfae2f182a
      
https://github.com/Perl/perl5/commit/cb833a1c07d271701d2d754a1c7c60cfae2f182a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

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

  Log Message:
  -----------
  Experimentally enable per-thread locale emulation

This is set to end in 5.39.10, but will give us field experience in the
meantime.


  Commit: acb4a5d367448a267360c0e52032e7c1e307aef7
      
https://github.com/Perl/perl5/commit/acb4a5d367448a267360c0e52032e7c1e307aef7
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  XXX perl.h maybe drop


  Commit: b9a5bb000f20c6735075ad0dded0cc7e5234c0be
      
https://github.com/Perl/perl5/commit/b9a5bb000f20c6735075ad0dded0cc7e5234c0be
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M makedef.pl

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


  Commit: 7e9281d707a3338937d36c81dec484b18b148a6c
      
https://github.com/Perl/perl5/commit/7e9281d707a3338937d36c81dec484b18b148a6c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M makedef.pl

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


  Commit: 4352aecbef1635c4db8834bda22a1806206af4cf
      
https://github.com/Perl/perl5/commit/4352aecbef1635c4db8834bda22a1806206af4cf
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M perl.h

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


  Commit: c1a845c836888cf46d0e3cc15dbc08368d1a19a2
      
https://github.com/Perl/perl5/commit/c1a845c836888cf46d0e3cc15dbc08368d1a19a2
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M perl.h

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


  Commit: f2244e5800d4b432c433484fb4df10bf4ecd4577
      
https://github.com/Perl/perl5/commit/f2244e5800d4b432c433484fb4df10bf4ecd4577
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

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


  Commit: cc0d083db4c4837a16e697c8e7c12358cdd88155
      
https://github.com/Perl/perl5/commit/cc0d083db4c4837a16e697c8e7c12358cdd88155
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  langinfo_l


  Commit: 3c7c70e1526cb559dbf9d6754a53a1f7da31117c
      
https://github.com/Perl/perl5/commit/3c7c70e1526cb559dbf9d6754a53a1f7da31117c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  locale_threads.t: Better handle weird locales

The previous code was generating bunches of uninitialized variable
warnings, due to 1) not checking for definedness early; 2) the loop
termination needs to be reevaluated each time because there is a
potential splice, shortening the array.

This only happens, I believe, on MingW not using UCRT.


  Commit: 40629ee331bb1535c28320e65f7b792420cf7c1c
      
https://github.com/Perl/perl5/commit/40629ee331bb1535c28320e65f7b792420cf7c1c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M makedef.pl
    M perl.h

  Log Message:
  -----------
  Don't do thread-safe locales emulation on mingw

MingW when compiled with the Universal C runtime (UCRT) is thread-safe
with respect to locales, just as VS 2015 and later MSVCRT compilations
are.

However, versions not using UCRT cannot be compiled to emulate
thread-safe locale.  I'm pretty sure this is due to a bug in the libc
strftime() function, having spent a bunch of hours working on this.

It often fails lib/locale_threads.t when using the emulation, but not
always.  The failure is always in strftime().

What made me think it could be perl is another characteristic of the
failures.  lib/locale_threads.t works by, in each thread, setting each
available locale category to a locale, different from any other category
in that thread, and as different as possible from the locale for the
corresponding category in any other thread.  For example thread 0 might
have LC_CTYPE set to locale X, LC_NUMERIC to Y, LC_TIME to Z, etc.
Thread 1 would use a locale for LC_CTYPE, as different from X as
possible, meaning executing the same operation on thread 0 and thread 1
would yield different expected results.  (It goes to some lengths to
calculate the biggest distance in the results.)  Similarly LC_NUMERIC
would have something almost completely different from Y; and so on.

Then each thread executes a batch of iterations.  Each iteration runs
all the operations I could find that perl uses that apply to LC_TYPE,
and all the ones that apply to each of the other categories.  And
verifies that all the results are as expected.

Simultaneously, the other threads are executing their batch.  It is
verifying that there is no bleed-through from one thread to another.  If
the threads all have the same results as the other threads, we couldn't
detect if there is real bleed-through or not.  This is solved by making
the results for each category as different as possible from any other
thread currently executing.

However, this isn't good enough.  Every so many iterations, each thread
changes to use a new set of locales.  This verifies that the locales can
be changed in a thread without that bleeding through to other threads.

And thread 0 is special.  It harvests the other threads as they finish,
and keeps going for a while.  This is to catch bugs in thread
completion, of which we've had a few.

MingW's failures all occur, when they occur, on the first iteration
following a switch to a new set of locales.  That is suspiciously like
it is a race condition in cleaning up from the previous setting.  But it
isn't the first test of the set of the first iteration of the next set.
It can be the 10th or so test.  I added enough debugging statements to
convince me that it isn't perl.

This is the failing code in locale.c:

        STRFTIME_LOCK;
        int len = strftime(buf, bufsize, fmt, mytm);
        STRFTIME_UNLOCK;

The returned 'buf' is not always correct.
T
The LOCK/UNLOCK macros on MingW with thread-safe emulation enabled, call
EnterCriticalSection(), and set the locales for the categories that
affect strftime() to the proper locale.  Just to be sure. I tested
setting LC_ALL to the correct value.  While in its uninterruptible (by
other locale handling code anyway) section, strftime() fills buf with
the result for the current locale (which STRFTIME_LOCK has set).

I added print statements within the critical section thusly

        STRFTIME_LOCK;
        DEBUG_U(PerlIO_printf(Perl_debug_log,
                              "calling strftime(%s), LC_ALL=%s\n",
                              fmt, setlocale(LC_ALL, NULL)));
        int len = strftime(buf, bufsize, fmt, mytm);
        DEBUG_U(PerlIO_printf(Perl_debug_log,
                              "return=%s, LC_ALL=%s\n",
                              buf, setlocale(LC_ALL, NULL)));
        STRFTIME_UNLOCK;

On this platform, setlocale() expands to _wsetlocale(), a Windows libc
call.

Here's what they showed for one failure.

        calling strftime(%b), LC_ALL=Hungarian_Hungary.1250
        return=marc., LC_ALL=Hungarian_Hungary.1250

The 'a' in the Hungarian for March is supposed to be a U+00E1, with an
acute accent, so this is wrong.

strftime() also is passed a pointer to a struct tm, which is filled in
with various integers which indicate in this case which month the %b is
supposed to return.  That it is returning something very much like márch
indicates those integers are correct.

Not shown in the example above are the other prints I added to verify
that we are indeed in a critical section.  I didn't see a way to
actually test for this via a libc call, but one could use strace and
wade through the output.  But there are print statements that print out
immediately before entering a critical section, and immediately after
leaving it.  I verified that those prints indicate this code is in a
critical section.

I note that this box has actually not very many locales, so that the
distance between the results of various threads isn't all that large.
Pretty much all the locales are CP 1250, 1251, 1252, and 1257, and no
UTF-8 ones, so all locales are single byte.  None of them map \XE1 into
plain 'a', which is what we are seeing returned, so the cleanup theory
seems wrong.  Sometimes the return is '?' or a series of them,
indicating that the returned character is mojibake.

None of the locales I saw had 'marc\.' as a possible return.  It appears
only here in the entire trace of all threads.  This makes it again less
likely that it is a cleanup issue.  But where did it come from?.  I
don't know.  The value for the C locale is 'Mar', so it didn't come from
there.

The localeconv() function is also broken in this Configuration.  We long
ago figured out a workaround for that.  I tried that same workaround for
strftime(), and it didn't help.


  Commit: 3f224c721cde949991b90ced0cbae6ce9412ff2c
      
https://github.com/Perl/perl5/commit/3f224c721cde949991b90ced0cbae6ce9412ff2c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M ext/I18N-Langinfo/t/Langinfo.t

  Log Message:
  -----------
  langinfo.t


  Commit: 867c96261c3eeb48b35378688c0dcfa3ab006864
      
https://github.com/Perl/perl5/commit/867c96261c3eeb48b35378688c0dcfa3ab006864
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M ext/I18N-Langinfo/t/Langinfo.t

  Log Message:
  -----------
  Revert "langinfo.t"

This reverts commit 79b7d15629ae03be0f44bc4a25ebcac9ca78a09c.


  Commit: 3c9971f6d9f226ce5cd7b1f47164be1ba32d97b1
      
https://github.com/Perl/perl5/commit/3c9971f6d9f226ce5cd7b1f47164be1ba32d97b1
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M lib/locale_threads.t

  Log Message:
  -----------
  Revert "locale_threads.t: Skip on OpenBSD and DragonFly threaded builds"

This reverts commit 1d74e8214dd53cf0fa9e8c5aab3e6187685eadcd, as they
have been modified


  Commit: 6e8396c3ab39e21ca1bc4a2e8346cd839cd51b10
      
https://github.com/Perl/perl5/commit/6e8396c3ab39e21ca1bc4a2e8346cd839cd51b10
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M hints/openbsd.sh

  Log Message:
  -----------
  openbsd


  Commit: 5516de4f0746065be9b1f0dd9e000776d7594448
      
https://github.com/Perl/perl5/commit/5516de4f0746065be9b1f0dd9e000776d7594448
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M hints/openbsd.sh

  Log Message:
  -----------
  openbsd: Not thread safe locales


  Commit: f9843a4e76e0a0ff3dd971164e0559fc3f1f6cc0
      
https://github.com/Perl/perl5/commit/f9843a4e76e0a0ff3dd971164e0559fc3f1f6cc0
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M hints/openbsd.sh

  Log Message:
  -----------
  openbsd hints


  Commit: 34c509d351d7a0c85e56db856405bbe28e845579
      
https://github.com/Perl/perl5/commit/34c509d351d7a0c85e56db856405bbe28e845579
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M hints/openbsd.sh

  Log Message:
  -----------
  openbsd mismatched ctype hints


  Commit: 7db527997263e950b7389972e2b74c3da967402a
      
https://github.com/Perl/perl5/commit/7db527997263e950b7389972e2b74c3da967402a
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  wrap uselocale


  Commit: 0c8131ac780eac8ea88966a5e2501f7156556003
      
https://github.com/Perl/perl5/commit/0c8131ac780eac8ea88966a5e2501f7156556003
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M lib/locale.t

  Log Message:
  -----------
  lib/locale.t start of setlocale failure


  Commit: 610428ebd1b7fca60a7afdb907c1641c29a57329
      
https://github.com/Perl/perl5/commit/610428ebd1b7fca60a7afdb907c1641c29a57329
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h: Fixup FAKE_MINGW

This is used (by me) to partially emulate MingW on a *nix platform.  It
was passing all its tests, but I discovered that I had the wrong #if
which was hence not enabling crucial parts of the emulation.


  Commit: 5256baba96c1f87d683217c880dcc0afebfb9840
      
https://github.com/Perl/perl5/commit/5256baba96c1f87d683217c880dcc0afebfb9840
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  pp_study: hook


  Commit: 07ee39a5cd10aae73340b1307492322632a0f32c
      
https://github.com/Perl/perl5/commit/07ee39a5cd10aae73340b1307492322632a0f32c
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  X


  Commit: 5b2d0d38412fc787ddd6bd51d68a9fb357711606
      
https://github.com/Perl/perl5/commit/5b2d0d38412fc787ddd6bd51d68a9fb357711606
  Author: Karl Williamson <k...@cpan.org>
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
    M locale.c

  Log Message:
  -----------
  smoke


Compare: https://github.com/Perl/perl5/compare/d54f0c0b912c...5b2d0d38412f

Reply via email to