Branch: refs/heads/smoke-me/khw-env Home: https://github.com/Perl/perl5 Commit: 3eb3477364345b47c02d88feef7454b554d3706a https://github.com/Perl/perl5/commit/3eb3477364345b47c02d88feef7454b554d3706a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024)
Changed paths: M lib/locale.t Log Message: ----------- lib/locale.t: Fixes #21697. On some platforms, a locale name is specified in the code page (or code set) that applies to it, rather than plain ASCII. Windows, and hence MingW, is the prime example. The locale name for a particular Turkish variety found in MingW is "Turkish_T?????.1254" where the question marks represent different characters that have meaning in the 1254 code page, but would look like mojibake if I had reproduced their actual values here. When doing a setlocale() here, if the current code page is incompatible with the new one, it will fail; if compatible it will succeed. On my box running MingW, locales are tried out by this test file in alphabetical order, and the one before this Turkish happens to be Thai, with a code page of 874. Apparently 1254 is not compatible with 874, so switching directly from Thai to Turkish fails. The solution is to switch into a neutral code page before switching into one being trialed. "C" works in this case, and I suspect in all others. Commit: ef5894ec8590455b10be5c4e0210232047219c51 https://github.com/Perl/perl5/commit/ef5894ec8590455b10be5c4e0210232047219c51 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 43993c24a0bf54ce6e28230f8a7ade4ad2861c2a https://github.com/Perl/perl5/commit/43993c24a0bf54ce6e28230f8a7ade4ad2861c2a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm Log Message: ----------- BlackBox dont use rare scripts Commit: 94f0435af2cd21c111f2e74e57c30c604a669f36 https://github.com/Perl/perl5/commit/94f0435af2cd21c111f2e74e57c30c604a669f36 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/harness Log Message: ----------- XXX t/harness temp tweaks Commit: b73132bd0a2eca32668fc2b7b137a92698d295b6 https://github.com/Perl/perl5/commit/b73132bd0a2eca32668fc2b7b137a92698d295b6 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/harness Log Message: ----------- XXX skip croak.t under sanitizer Commit: 59bb8bff87a7ddda366282bc171608a76b8b49e6 https://github.com/Perl/perl5/commit/59bb8bff87a7ddda366282bc171608a76b8b49e6 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/porting/bincompat.t Log Message: ----------- skip bincompat.t Commit: 69e3c5a52fcdc7051220ab14202c267a35136e35 https://github.com/Perl/perl5/commit/69e3c5a52fcdc7051220ab14202c267a35136e35 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/porting/bincompat.t Log Message: ----------- Revert "skip bincompat.t" This reverts commit 559abf36660fef3e16d1cd33dc5aa6ca2202b88c. Commit: 8b8452c74702bca19db4622402e11dbf2c0237b4 https://github.com/Perl/perl5/commit/8b8452c74702bca19db4622402e11dbf2c0237b4 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/TEST Log Message: ----------- Skip cpan testing message Commit: b50b199261044ec7b5f9430c603ead9e5e6553af https://github.com/Perl/perl5/commit/b50b199261044ec7b5f9430c603ead9e5e6553af Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- runconfigure: only usequery with that directory Commit: 7d10512d40091b9510acde916698924a26ff77a7 https://github.com/Perl/perl5/commit/7d10512d40091b9510acde916698924a26ff77a7 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/TEST Log Message: ----------- Also skip non-thread dist testing Commit: 4af12bc3793632551711ab3f8d35662fb9ab1c28 https://github.com/Perl/perl5/commit/4af12bc3793632551711ab3f8d35662fb9ab1c28 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M cpan/Archive-Tar/t/02_methods.t Log Message: ----------- XXX skip Archive-Tar because of symlinks Commit: c8e1f815ae29360c682a0b2bdcde57653b5b6c08 https://github.com/Perl/perl5/commit/c8e1f815ae29360c682a0b2bdcde57653b5b6c08 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/porting/cmp_version.t Log Message: ----------- XXX skip cmp_version.t because of sym links Commit: b79de4e5743de19502905df375733dad1a1a8e77 https://github.com/Perl/perl5/commit/b79de4e5743de19502905df375733dad1a1a8e77 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 43283aec7e8e5ff9ff29ffd576d4f9aaf4398045 https://github.com/Perl/perl5/commit/43283aec7e8e5ff9ff29ffd576d4f9aaf4398045 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M dist/Tie-File/t/29a_upcopy.t Log Message: ----------- up timeout for dist/Tie-File/t/29a_upcopy.t Commit: b21c7b91381c4b88cc87482c37c76d9a8708ca44 https://github.com/Perl/perl5/commit/b21c7b91381c4b88cc87482c37c76d9a8708ca44 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 93f542c7e717c8df6134fa7412dab8889d60513d https://github.com/Perl/perl5/commit/93f542c7e717c8df6134fa7412dab8889d60513d Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/run/locale.t Log Message: ----------- run/locale.t: more debug Commit: d0ac3ccce79afa7b21284f8625831e9f57b070a4 https://github.com/Perl/perl5/commit/d0ac3ccce79afa7b21284f8625831e9f57b070a4 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: ----------- Make 24 uniprops.t tests Commit: 5f65aafe17246bca97f5e0e9d68d512ac2a5d6f5 https://github.com/Perl/perl5/commit/5f65aafe17246bca97f5e0e9d68d512ac2a5d6f5 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- XXX temp to test broken lconv on non-Windows Commit: 246fc5e57cd82c988a49371a1e320d51d5009164 https://github.com/Perl/perl5/commit/246fc5e57cd82c988a49371a1e320d51d5009164 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/run/locale.t Log Message: ----------- XXX run/locale.t: maybe f move test Commit: cbc35fae4e265298d08d9c8e24c8d3d1b056017a https://github.com/Perl/perl5/commit/cbc35fae4e265298d08d9c8e24c8d3d1b056017a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 93417a85149d7adeebaaf4aa944f0d243a0fa909 https://github.com/Perl/perl5/commit/93417a85149d7adeebaaf4aa944f0d243a0fa909 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/porting/cmp_version.t Log Message: ----------- XXX skip cmp_version.t prob. due to 5.38 tag issue Commit: 8fdda119f0352c2dc310cad0c7252de5f8d3a10f https://github.com/Perl/perl5/commit/8fdda119f0352c2dc310cad0c7252de5f8d3a10f Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 663bd3aaaf4eec7af604ef98ab86ad341c8ac200 https://github.com/Perl/perl5/commit/663bd3aaaf4eec7af604ef98ab86ad341c8ac200 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M makedef.pl M perl.h Log Message: ----------- XXX temporary: Allow undef LC_ALL Commit: e532dc8b85346b52de8ea4a3a6ca336f58a86017 https://github.com/Perl/perl5/commit/e532dc8b85346b52de8ea4a3a6ca336f58a86017 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- perl.h: Fake up win32 compile a bit Commit: c0e695d26f768ffdd8bb5fb39676017da5aea07b https://github.com/Perl/perl5/commit/c0e695d26f768ffdd8bb5fb39676017da5aea07b Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 167df2936a63442f560ed6542506cf241d4324b6 https://github.com/Perl/perl5/commit/167df2936a63442f560ed6542506cf241d4324b6 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 291b1f45ce40892c687bf990474a995a611189d2 https://github.com/Perl/perl5/commit/291b1f45ce40892c687bf990474a995a611189d2 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 296c66aacf66607fa6e269a33efbe7137c4e4889 https://github.com/Perl/perl5/commit/296c66aacf66607fa6e269a33efbe7137c4e4889 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: d0d973943d55e5705ec4af819679da75c08b3750 https://github.com/Perl/perl5/commit/d0d973943d55e5705ec4af819679da75c08b3750 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M embed.fnc M proto.h M util.c Log Message: ----------- XXX memlog Commit: e79e6bed5e0c1dc9e14c6e385aa6d743e5d935ba https://github.com/Perl/perl5/commit/e79e6bed5e0c1dc9e14c6e385aa6d743e5d935ba Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h M t/run/switchDx.t Log Message: ----------- debug thread Commit: d21831a651dadb25d042e7c4a299565b969382b8 https://github.com/Perl/perl5/commit/d21831a651dadb25d042e7c4a299565b969382b8 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M dist/threads/threads.xs Log Message: ----------- threads.xs DEBUG_U Commit: af390e4de927897a961079a49bd78e33e91ad716 https://github.com/Perl/perl5/commit/af390e4de927897a961079a49bd78e33e91ad716 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M lib/locale.t Log Message: ----------- XXX temp: lib/locale.t: debug Commit: b7c6c96ee7a81a2309fc81424fe42f4d6e8fd37e https://github.com/Perl/perl5/commit/b7c6c96ee7a81a2309fc81424fe42f4d6e8fd37e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M lib/locale.t Log Message: ----------- lib/locale.t FILE debug Commit: ec7b6b1102068228dc6d00b63289192f998133b8 https://github.com/Perl/perl5/commit/ec7b6b1102068228dc6d00b63289192f998133b8 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M lib/locale.t Log Message: ----------- lib/locale.t Commit: 55b99f2ce56150666e18e0837e6f48b718756b02 https://github.com/Perl/perl5/commit/55b99f2ce56150666e18e0837e6f48b718756b02 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- XXX perl.h: Debugging mutex lock' Commit: a2af25af3427adcb912a8ebe87a15727b588cbbe https://github.com/Perl/perl5/commit/a2af25af3427adcb912a8ebe87a15727b588cbbe Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 9990e0c0346d6e8d4b8bb484738dc77e45aa864f https://github.com/Perl/perl5/commit/9990e0c0346d6e8d4b8bb484738dc77e45aa864f Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M cpan/version/t/07locale.t Log Message: ----------- cpan/version/07locale.t: drop, bug have to recompute md5 Commit: bc6fa1e06c203241060a57dadc5e276beb73dc4e https://github.com/Perl/perl5/commit/bc6fa1e06c203241060a57dadc5e276beb73dc4e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/porting/customized.dat Log Message: ----------- customized.dat Commit: f3998163981a833c2b403fc97377e09724386c32 https://github.com/Perl/perl5/commit/f3998163981a833c2b403fc97377e09724386c32 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/loc_tools.pl Log Message: ----------- loc_tools: XXX Debug Commit: 34e58f6c2c4c75900633dad6c564f2a167968316 https://github.com/Perl/perl5/commit/34e58f6c2c4c75900633dad6c564f2a167968316 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- S_querylocale_2008_i: Add entry assertion Commit: 517a41f557ef8daa0714f16f42d938e316283d85 https://github.com/Perl/perl5/commit/517a41f557ef8daa0714f16f42d938e316283d85 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- S_bool_setlocale_i: Add entry assertion Commit: 8fae6c7648a61a5bec96b26825de9a645e3560e2 https://github.com/Perl/perl5/commit/8fae6c7648a61a5bec96b26825de9a645e3560e2 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- savepv if threaded, unused I think Commit: 44d24b8a405b7a0a44b7c510469140f20ef1c675 https://github.com/Perl/perl5/commit/44d24b8a405b7a0a44b7c510469140f20ef1c675 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M hints/darwin.sh Log Message: ----------- darwin hints querylocale race in earlier darwins? Commit: eef8588242c37e4d0f11e1f009265747bd93afab https://github.com/Perl/perl5/commit/eef8588242c37e4d0f11e1f009265747bd93afab Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M pp.c Log Message: ----------- pp_study: Add memory use debugging Commit: 724ce4ed2dd3a3ed82e41e1ca27ae8d5327e3428 https://github.com/Perl/perl5/commit/724ce4ed2dd3a3ed82e41e1ca27ae8d5327e3428 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M pp.c Log Message: ----------- Revert "pp_study: Add memory use debugging" Commit: 01d5a10508dce87dd41b51aea2d0fad4fe5d9ffc https://github.com/Perl/perl5/commit/01d5a10508dce87dd41b51aea2d0fad4fe5d9ffc Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M hints/darwin.sh Log Message: ----------- darwin Commit: 86ce92a1938908a7e6c439eb800278f82287dca4 https://github.com/Perl/perl5/commit/86ce92a1938908a7e6c439eb800278f82287dca4 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: b1f56b1a7bbb1ba37a2da2ece8070d2a3a7039cc https://github.com/Perl/perl5/commit/b1f56b1a7bbb1ba37a2da2ece8070d2a3a7039cc Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/run/locale.t Log Message: ----------- t/run/locale.t: debug Commit: 1cf4d472b4e780038e2119af17af15bc91f3d552 https://github.com/Perl/perl5/commit/1cf4d472b4e780038e2119af17af15bc91f3d552 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M lib/locale_threads.t Log Message: ----------- locale_threads: add a commented out yield Commit: 34444f4eee94714e123a3c441517433303c100dc https://github.com/Perl/perl5/commit/34444f4eee94714e123a3c441517433303c100dc Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M lib/locale_threads.t Log Message: ----------- locale_threads: debugging Commit: dca0ff9496c58598568809b0913bb4f8faf6ff17 https://github.com/Perl/perl5/commit/dca0ff9496c58598568809b0913bb4f8faf6ff17 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 9300143c0cf5d11bc5d879ed04c701aa0c26ee65 https://github.com/Perl/perl5/commit/9300143c0cf5d11bc5d879ed04c701aa0c26ee65 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: c7c83325723930216c5f26b833dfbab4850fa946 https://github.com/Perl/perl5/commit/c7c83325723930216c5f26b833dfbab4850fa946 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: e74f9d65c2f754838211351f5474d38c7bdeaf03 https://github.com/Perl/perl5/commit/e74f9d65c2f754838211351f5474d38c7bdeaf03 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M thread.h Log Message: ----------- thread.h: White space only Indent some nested preproccessor defines Commit: 0af8a2c75206d73b31714a46b8613a3f7b65618c https://github.com/Perl/perl5/commit/0af8a2c75206d73b31714a46b8613a3f7b65618c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 92e9c24f2f46c14f8a012355294a8a88d4a53969 https://github.com/Perl/perl5/commit/92e9c24f2f46c14f8a012355294a8a88d4a53969 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M cpan/Time-Piece/Piece.xs Log Message: ----------- XXX Time::Piece strftime Commit: 7896bb0bcbe4bd0b78f723a9c6e6b9c9c6abb929 https://github.com/Perl/perl5/commit/7896bb0bcbe4bd0b78f723a9c6e6b9c9c6abb929 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M cpan/Time-Piece/Piece.xs Log Message: ----------- Time-Piece: notes to myself Commit: d3b45a66b848165b1901ab94d47216b78e00920a https://github.com/Perl/perl5/commit/d3b45a66b848165b1901ab94d47216b78e00920a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M util.c M win32/perlhost.h Log Message: ----------- XXX Win32 mem log Commit: 454b5e5231a89a9296783b8a05e2e48afde5b370 https://github.com/Perl/perl5/commit/454b5e5231a89a9296783b8a05e2e48afde5b370 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M util.c Log Message: ----------- XXX util add thread to mem_log Commit: 1d3065fb2176f5c30a99f8d22ff65b6151f83149 https://github.com/Perl/perl5/commit/1d3065fb2176f5c30a99f8d22ff65b6151f83149 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- Debug wrap wset Commit: 3354d901862e94648346264d85e653b56635eed2 https://github.com/Perl/perl5/commit/3354d901862e94648346264d85e653b56635eed2 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M pod/perlhacktips.pod Log Message: ----------- XXX incomplete perlhacktips: Commit: 920eaffbf698a1d2fbef4dd5cf8d3cfb0fb3924e https://github.com/Perl/perl5/commit/920eaffbf698a1d2fbef4dd5cf8d3cfb0fb3924e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M iperlsys.h Log Message: ----------- iperlsys.h: TODO need to look at adding mutexes Commit: c24f87e6146d1863b2d7fc98518db218a7114922 https://github.com/Perl/perl5/commit/c24f87e6146d1863b2d7fc98518db218a7114922 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M regen/reentr.pl Log Message: ----------- reentr.pl: XXX about needing mutex Commit: 45b008fcffb3b4098f55905a2e0ea4c8bc2e18e7 https://github.com/Perl/perl5/commit/45b008fcffb3b4098f55905a2e0ea4c8bc2e18e7 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M dist/ExtUtils-ParseXS/lib/perlxs.pod M pod/perlembed.pod M pod/perlhacktips.pod M pod/perllocale.pod M t/porting/known_pod_issues.dat Log Message: ----------- perlxs Commit: c55dc19cb4cdf31fee780b9d7a2abaaa86546757 https://github.com/Perl/perl5/commit/c55dc19cb4cdf31fee780b9d7a2abaaa86546757 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M pod/perlmod.pod Log Message: ----------- perlmod Commit: 6a8240cf08dee7465dc5cf5172865c73c5591c91 https://github.com/Perl/perl5/commit/6a8240cf08dee7465dc5cf5172865c73c5591c91 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M pod/perllocale.pod Log Message: ----------- perllocale Xxx start of changes Commit: ee6f38753ab428b77eb71164566b6e05a89de4fb https://github.com/Perl/perl5/commit/ee6f38753ab428b77eb71164566b6e05a89de4fb Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M win32/config_H.gc M win32/config_h.PL M win32/config_sh.PL Log Message: ----------- XXX config Commit: 8c14f9df8989f4b42945d7db6737dc236f8ba38c https://github.com/Perl/perl5/commit/8c14f9df8989f4b42945d7db6737dc236f8ba38c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M pod/perlembed.pod Log Message: ----------- f perlembed Commit: 63f9efb171873d50f895eb2aa913fdb467bb8af5 https://github.com/Perl/perl5/commit/63f9efb171873d50f895eb2aa913fdb467bb8af5 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M intrpvar.h M locale.c M perl.h Log Message: ----------- 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: f705ead3f2c9a58a747f2006448041f55ee35c84 https://github.com/Perl/perl5/commit/f705ead3f2c9a58a747f2006448041f55ee35c84 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M lib/locale_threads.t Log Message: ----------- locale_threads: start of using platform locales Commit: 9f24d16e15b067681cced35ad61828f102ab63d7 https://github.com/Perl/perl5/commit/9f24d16e15b067681cced35ad61828f102ab63d7 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M lib/locale_threads.t Log Message: ----------- Revert "locale_threads: start of using platform locales" This reverts commit a7a8dea3aabb81a05aacaf3a26c49854a5854111. Commit: ff990f2bc1a98fa3db266b7669e24a5b25017c70 https://github.com/Perl/perl5/commit/ff990f2bc1a98fa3db266b7669e24a5b25017c70 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c M perl.c M sv.c Log Message: ----------- define numeric values to be C when no USE_NUMERIC Commit: 224b42f09468ab30b263307af8555ac4225ac733 https://github.com/Perl/perl5/commit/224b42f09468ab30b263307af8555ac4225ac733 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 06546e526cf57eca8ed9d28b6203f029c73cf5c1 https://github.com/Perl/perl5/commit/06546e526cf57eca8ed9d28b6203f029c73cf5c1 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Add #define to separate label from declaration This is designed to be mostly self-documenting. Commit: 1168d246c542f928573fb276f77e59de4b59a0a7 https://github.com/Perl/perl5/commit/1168d246c542f928573fb276f77e59de4b59a0a7 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M pp.c Log Message: ----------- pp_study: hook Commit: 10c8a1bfd08b4179734b4c643c5d2f332a27d98a https://github.com/Perl/perl5/commit/10c8a1bfd08b4179734b4c643c5d2f332a27d98a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- rulereeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee Commit: 0b2333c6376360ee4c9a8ddd6790474525d2db2b https://github.com/Perl/perl5/commit/0b2333c6376360ee4c9a8ddd6790474525d2db2b Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 8c1c74aade0e6ba462365725cf2c8706a5555363 https://github.com/Perl/perl5/commit/8c1c74aade0e6ba462365725cf2c8706a5555363 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- maybe emul Commit: 40a2461493518bd18a30c26bab49bd2214039c43 https://github.com/Perl/perl5/commit/40a2461493518bd18a30c26bab49bd2214039c43 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M embedvar.h M intrpvar.h M locale.c M makedef.pl M sv.c Log Message: ----------- more maybe Commit: 4aa8ee87638bc5304bf5235235670a42d42f1300 https://github.com/Perl/perl5/commit/4aa8ee87638bc5304bf5235235670a42d42f1300 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Silence compiler warning This tightens when this function is compiled to the actual Configurations it is needed in. Commit: c6ccfec74b056bba55851736307bb7f2e556745f https://github.com/Perl/perl5/commit/c6ccfec74b056bba55851736307bb7f2e556745f Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- C_thous better ifdef Commit: e83fcd5bdb29f433c62d72a71bec89f699378f1b https://github.com/Perl/perl5/commit/e83fcd5bdb29f433c62d72a71bec89f699378f1b Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M ext/POSIX/t/posix.t M ext/POSIX/t/time.t M ext/XS-APItest/t/locale.t M lib/locale.t M lib/locale_threads.t Log Message: ----------- skip tests if no strftime Commit: f8a5866d41574a9ee3776ecc06eba31906550358 https://github.com/Perl/perl5/commit/f8a5866d41574a9ee3776ecc06eba31906550358 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/loc_tools.pl Log Message: ----------- loctools use if dumper Commit: 82bef432619841cf82b0cbc2b7082dbf05ec0a43 https://github.com/Perl/perl5/commit/82bef432619841cf82b0cbc2b7082dbf05ec0a43 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M ext/POSIX/lib/POSIX.pod Log Message: ----------- start of pod for localeconv Commit: 288381bc92fd9038fde460c231466abf09b4cd3c https://github.com/Perl/perl5/commit/288381bc92fd9038fde460c231466abf09b4cd3c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: da52b46f2e6b8185fbfa1e79eb09e3e8c62d5556 https://github.com/Perl/perl5/commit/da52b46f2e6b8185fbfa1e79eb09e3e8c62d5556 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- debug populate localeconv Commit: 8c21c9f9193443974ab909a08e0fbf924c621e1d https://github.com/Perl/perl5/commit/8c21c9f9193443974ab909a08e0fbf924c621e1d Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M dist/threads/threads.xs Log Message: ----------- debug thread xs Commit: 8cd0695f671be89b349049371d9bf50a314b1bd4 https://github.com/Perl/perl5/commit/8cd0695f671be89b349049371d9bf50a314b1bd4 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M lib/locale_threads.t Log Message: ----------- lib/locale_threads.t: Add debugging info Commit: 611b4a1ef54d9798d9748687d10658c8a2f60aea https://github.com/Perl/perl5/commit/611b4a1ef54d9798d9748687d10658c8a2f60aea Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M embed.fnc M embed.h M proto.h M sv.c Log Message: ----------- Add newSVpvz() to create a sized SvPV. There's no current trivial method to create a non-zero length SV that will hold a PV. Commit: 9486b414c1233c2349a89ab52ffe46439503cb91 https://github.com/Perl/perl5/commit/9486b414c1233c2349a89ab52ffe46439503cb91 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Call newSVpvz() Commit: 3f245ee1115d28dd29f8fb8fea4ff657741ff81c https://github.com/Perl/perl5/commit/3f245ee1115d28dd29f8fb8fea4ff657741ff81c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Shorten critical section times Toggling a category's locale has a cost, so if there are a bunch of operations that are going to be done in a row in a particular toggled state, it makes sense to toggle once, do them all, then toggle back. Most of the toggling in this file is short term, but there are a few places where it is advantageous to toggle once. But on some Configurations, toggling creates a critical, uninterruptible section. For these, keeping the amount of time spent in such a state without letting other threads execute needs to be as short as feasible, and this outweighs the cost of toggling and retoggling. This commit balances these competing needs by creating new macros for those cases where we want to have an overarching toggle. Those macros become no-ops when the toggling creates an uninterruptible section. Thus, when there is a cost to remaining toggled for longer periods, those macros don't do anything, and the macros that are at the point of the actual need are the ones that do the toggling/retoggling. In the Configurations where there isn't such a cost, the overarching macros kick in, and the shorter-term ones find that the state is already toggled, and they return without doing anything. Commit: d812cc830ffedc42d2c76ef7560494a2f79572a7 https://github.com/Perl/perl5/commit/d812cc830ffedc42d2c76ef7560494a2f79572a7 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- Add DEBUG_SETLOCALE_INCONSISTENCIES Commit: e3d3dc53e29624f092424b4c8998704c09a2de3c https://github.com/Perl/perl5/commit/e3d3dc53e29624f092424b4c8998704c09a2de3c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- Enable DEBUG_SETLOCALE_INCONSISTENCIES Commit: 2fe0399d60648513fbec5a47029acf8a83ab9c74 https://github.com/Perl/perl5/commit/2fe0399d60648513fbec5a47029acf8a83ab9c74 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- Make numeric standard inconsistent Commit: f4109837c0858b8bbb7827f52ab199c075908c25 https://github.com/Perl/perl5/commit/f4109837c0858b8bbb7827f52ab199c075908c25 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: cc1479123718871f87ab11a278ac4727137581d8 https://github.com/Perl/perl5/commit/cc1479123718871f87ab11a278ac4727137581d8 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 10ad73d871945ccdcbc142b7da1f35e9db87d96c https://github.com/Perl/perl5/commit/10ad73d871945ccdcbc142b7da1f35e9db87d96c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- femul Commit: 2cf7106315bec7d3f0d5cf3e26625d73e97a184a https://github.com/Perl/perl5/commit/2cf7106315bec7d3f0d5cf3e26625d73e97a184a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- DEBUG Lv to U Commit: 62d565799055e3041521ff5b3906b7286f55c990 https://github.com/Perl/perl5/commit/62d565799055e3041521ff5b3906b7286f55c990 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- extra debug Commit: 4acc3625ece97109c7fbf406555b4f49121ef1bb https://github.com/Perl/perl5/commit/4acc3625ece97109c7fbf406555b4f49121ef1bb Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- more emul locks Commit: 22985263dc8d671307eab10850d40deaa4dd521a https://github.com/Perl/perl5/commit/22985263dc8d671307eab10850d40deaa4dd521a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- Revert "more emul locks" This reverts commit 4733a1674423ee47b33eb0ee1882e1bf39faa1a6. Commit: b6241d5746edc8fe79877b60b9a67d74b7f21a38 https://github.com/Perl/perl5/commit/b6241d5746edc8fe79877b60b9a67d74b7f21a38 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- langinfo lock Commit: e879cd0d01e8cbf8f8b5dd9827a2d3e962e83500 https://github.com/Perl/perl5/commit/e879cd0d01e8cbf8f8b5dd9827a2d3e962e83500 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- Revert "langinfo lock" This reverts commit acaff35d7ed83830fb36c149aafede5cdf400061. Commit: 0a7feff49ef35c9706f51506c3c53915d9a3106e https://github.com/Perl/perl5/commit/0a7feff49ef35c9706f51506c3c53915d9a3106e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- lock mask Commit: 440c1a4d65652d314b50451c21c3e8feffc470a2 https://github.com/Perl/perl5/commit/440c1a4d65652d314b50451c21c3e8feffc470a2 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- Revert "lock mask" This reverts commit 3fd528c9d5d5b9c05dc1c697e61570b81811fb95. Commit: c612e1a20e5a18f708c40b262f41fbb7a0039f25 https://github.com/Perl/perl5/commit/c612e1a20e5a18f708c40b262f41fbb7a0039f25 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Maybe comment' Commit: 354faaf5bcdfa121599826c0ee8ee7b90399186d https://github.com/Perl/perl5/commit/354faaf5bcdfa121599826c0ee8ee7b90399186d Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- XXX perl.h maybe drop Commit: 6a0c0299993de2bba30e5d89eb5dea240ecbb1cf https://github.com/Perl/perl5/commit/6a0c0299993de2bba30e5d89eb5dea240ecbb1cf Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) 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: 304c6f719da720adefc05bd57d16a0e97d4af8ab https://github.com/Perl/perl5/commit/304c6f719da720adefc05bd57d16a0e97d4af8ab Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- Debug uselocale Commit: 00189c6ee6b948eaf8ce6957cb211c3ee5637363 https://github.com/Perl/perl5/commit/00189c6ee6b948eaf8ce6957cb211c3ee5637363 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M sv.c Log Message: ----------- sv.c need to check for pv in sv in sv_setpvf Commit: a6841af037a9213511eff448bc7af5637aa5b957 https://github.com/Perl/perl5/commit/a6841af037a9213511eff448bc7af5637aa5b957 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M sv.c Log Message: ----------- sv Commit: 26ad73e1b50b72b9c5e79408c123937f17461df6 https://github.com/Perl/perl5/commit/26ad73e1b50b72b9c5e79408c123937f17461df6 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- immediate use Commit: 3028a6988277d32504210e5203c97b6d8432b9cd https://github.com/Perl/perl5/commit/3028a6988277d32504210e5203c97b6d8432b9cd Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- more immed Commit: 4b4c93f4823793b1c2ea2853cbae933d57fa6a08 https://github.com/Perl/perl5/commit/4b4c93f4823793b1c2ea2853cbae933d57fa6a08 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- Revert "more immed" This reverts commit d14fa3db195160b1170c3b169204fdfa10830fb8. Commit: 9628e57cf765f0e179d2ceaf771027a60b4e0451 https://github.com/Perl/perl5/commit/9628e57cf765f0e179d2ceaf771027a60b4e0451 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- Revert "immediate use" This reverts commit f0df51da9259a5823f1561c492ff8e6b9eb2805a. Commit: f6fc0611c9c41c8a1868434d92fce6be11ad0c06 https://github.com/Perl/perl5/commit/f6fc0611c9c41c8a1868434d92fce6be11ad0c06 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Comments, white space Commit: 4b4c5e4e08e09418a63580d7869d0b0d76a44d62 https://github.com/Perl/perl5/commit/4b4c5e4e08e09418a63580d7869d0b0d76a44d62 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- add is_cur_locale_utf8 Commit: 37c49ef042f1076d63fe296f17e40b79bc6f4603 https://github.com/Perl/perl5/commit/37c49ef042f1076d63fe296f17e40b79bc6f4603 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M ext/POSIX/POSIX.xs M locale.c M perl.h Log Message: ----------- final Commit: c091514a0430192fe3392df4bea5eb0f14d68979 https://github.com/Perl/perl5/commit/c091514a0430192fe3392df4bea5eb0f14d68979 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/run/locale.t Log Message: ----------- t/run/locale.t: Change var name and hoist to larger scope The old name was somewhat misleading Commit: 7a3fa1789110d8a2e3b126b464b367b82d993858 https://github.com/Perl/perl5/commit/7a3fa1789110d8a2e3b126b464b367b82d993858 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/run/locale.t Log Message: ----------- t/run/locale.t: Extract code into a sub This is in preparation for it to be called from another place Commit: 6a6c462abd957b474145d650a4f3cc9e07711160 https://github.com/Perl/perl5/commit/6a6c462abd957b474145d650a4f3cc9e07711160 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/run/locale.t Log Message: ----------- t/run/locale.t: Save sub return in an array This is in preparation for it to be used again. Commit: b1ee261734ae13a15392583ae2ed4f7f1448f0c0 https://github.com/Perl/perl5/commit/b1ee261734ae13a15392583ae2ed4f7f1448f0c0 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/run/locale.t Log Message: ----------- t/run/locale.t: Add test This is marked TODO; the next commit will cause this test to pass. Commit: 1625db0f65923eef1f831a04ae766c34fb119f48 https://github.com/Perl/perl5/commit/1625db0f65923eef1f831a04ae766c34fb119f48 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c M t/run/locale.t 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. Commit: f059f7c996c857adee0023fac6bac460374bfe3e https://github.com/Perl/perl5/commit/f059f7c996c857adee0023fac6bac460374bfe3e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c M t/run/locale.t Log Message: ----------- Revert "S_find_locale_from_environment: Handle disparate LC_ALL" This reverts commit ec083d3e824ac77199917066653c26780cf26bb0. Commit: 0077d3e674277462972874102f41a869e2cbf711 https://github.com/Perl/perl5/commit/0077d3e674277462972874102f41a869e2cbf711 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M t/run/locale.t Log Message: ----------- Revert "t/run/locale.t: Add test" This reverts commit 28b41f6baf95fe40466e5ee3e349550c7c4e85ee. Commit: 5251753b39cdd961354e35e58c344fad84d8704f https://github.com/Perl/perl5/commit/5251753b39cdd961354e35e58c344fad84d8704f Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- finish comment;: read env lock on posix setlocale lock Commit: 84a98ec72e64799f3ed6ebc218c479030d937373 https://github.com/Perl/perl5/commit/84a98ec72e64799f3ed6ebc218c479030d937373 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Don't recalculate the locale In these functions, we already know the locale, so pass it to the called function instead of NULL, so that that function won't have to recalculate it. Commit: 183724bc83799d729c09ff19360a1e47bc5bdea9 https://github.com/Perl/perl5/commit/183724bc83799d729c09ff19360a1e47bc5bdea9 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M regen/regen_lib.pl Log Message: ----------- regen/regen_lib.pl: Stop compile time warning This suppresses the warning about negative repeat counts Commit: ff1218b95e9528c5287f7575e5b169d019c1ba93 https://github.com/Perl/perl5/commit/ff1218b95e9528c5287f7575e5b169d019c1ba93 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M regen/reentr.pl Log Message: ----------- regen/reentr.pl: Use hash instead of code conditionals Fill this hash with the buffer sizes instead of using conditionals in the code to do so. This is in preparation for more variance in the sizes, which would otherwise increase the number of conditionals Commit: 794862fead97848650b50c245b26926b2528d943 https://github.com/Perl/perl5/commit/794862fead97848650b50c245b26926b2528d943 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M reentr.c M regen/reentr.pl Log Message: ----------- reentr.pl: Increase strerror_r buffer size We have seen cases where a libc strerror() buffer size of 80 is not enough. See https://github.com/Perl/perl5/issues/21992. One might think our current size for strerror_r() of 256 would handle any situation, but in looking around for this, I saw that glibc bothers to document that theirs is 1024. So this commit bumps it to that. Commit: 884bb128efabe6d4a24a1a2224f57d8527112c01 https://github.com/Perl/perl5/commit/884bb128efabe6d4a24a1a2224f57d8527112c01 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M regen/reentr.pl Log Message: ----------- regen/reentr.pl: Update comments Commit: 36a13c06bde8adf10cf88ecc378819d6e0cad73c https://github.com/Perl/perl5/commit/36a13c06bde8adf10cf88ecc378819d6e0cad73c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M reentr.c M regen/reentr.pl Log Message: ----------- regen/reentr.pl: Reserve L_cuserid bytes for getlogin_r buffer This constant is defined by POSIX to be the max size of a user name. We don't have to guess, as what was done before this commit. Commit: 16de4b73747917e4f52014ace47103a062068e5d https://github.com/Perl/perl5/commit/16de4b73747917e4f52014ace47103a062068e5d Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M reentr.c M regen/reentr.pl Log Message: ----------- f L_cuserid Commit: d852ec1f1f4371fb542d183c7befb4b8872b851c https://github.com/Perl/perl5/commit/d852ec1f1f4371fb542d183c7befb4b8872b851c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M reentr.c M regen/reentr.pl Log Message: ----------- regen/reentr.pl: Reserve L_ctermid bytes for ttyname_r buffer This constant is defined by POSIX to be the max size of the return of ctermid(), which should be the same as for ttyname_r(). Commit: bdbd9cb8cec9f5e2de0a9e10942783d35d902399 https://github.com/Perl/perl5/commit/bdbd9cb8cec9f5e2de0a9e10942783d35d902399 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M doio.c Log Message: ----------- doio: Wrap functions with mutexes Commit: 1033a8e5e06a64de96e1c88c483741c3cbedacc8 https://github.com/Perl/perl5/commit/1033a8e5e06a64de96e1c88c483741c3cbedacc8 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.c Log Message: ----------- perl.c: Wrap functions with mutexes Commit: aa6587884581214b5c4db9c86edf8371b0a5e48b https://github.com/Perl/perl5/commit/aa6587884581214b5c4db9c86edf8371b0a5e48b Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M reentr.c M reentr.h M regen/reentr.pl Log Message: ----------- regen/reentr.pl: Update copyright year Commit: 6b6e5e7bb3dddd9e9e4e78f90b4975eb997df785 https://github.com/Perl/perl5/commit/6b6e5e7bb3dddd9e9e4e78f90b4975eb997df785 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M reentr.h M regen/reentr.pl Log Message: ----------- regen/reentr.pl: White-space, comment Commit: 0bd1f851c0ea880efef95f1c9938b362096f3b00 https://github.com/Perl/perl5/commit/0bd1f851c0ea880efef95f1c9938b362096f3b00 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M MANIFEST A reentr_locks.h M regen/reentr.pl M t/porting/regen.t Log Message: ----------- regen/reentr.pl: Also generate mutex locking definitions This program has a DATA table containing information about the reentrant version of various functions. This commit adds two columns to that tablwe containing information I researched about the thread-safety of the non-reentrant functions vs the reentrant ones. It uses this to generate a new header file of macro definitions that say how each version should be locked. The coder now need only use the name of a function to get to a macro containing the appropriate definition; the coder need not know the details. Commit: db6571aa30019512f11a49274a6a080c4749d564 https://github.com/Perl/perl5/commit/db6571aa30019512f11a49274a6a080c4749d564 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- perl.h: Include the generated file from the previous commit And remove the now duplicate LOCK definitions. I checked an earlier version to make sure the new locks matched the old, and the only changes were errors I had found in the old ones e Commit: 066f96d7fea3f0ea0bd3ee8c833f6b6a901b970c https://github.com/Perl/perl5/commit/066f96d7fea3f0ea0bd3ee8c833f6b6a901b970c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M pp_sys.c Log Message: ----------- pp_sys: Add locks around some calls Commit: b075a82301ea235744279900fda1a19e36780f33 https://github.com/Perl/perl5/commit/b075a82301ea235744279900fda1a19e36780f33 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- perl.h: Use Perl_croak() instead of more specific panic Instead of using locale_panic_(), which is applicable for locales, use the more generic Perl_croak(). This is in preparation for a future commit that will use this code in other situations Commit: 6dd9fdb1c60fc88db56f1086c7fc0dce20466e1c https://github.com/Perl/perl5/commit/6dd9fdb1c60fc88db56f1086c7fc0dce20466e1c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- Create PERL_REENTRANT_LOCK(), UNLOCK Prior to this commit, the mutex lock for locales was a reentrant lock; and no others. This extracts that logic into these two new macros, and generalizes them, so that any mutex can easily be made into a reentrant one. Commit: c013dd3cc7441f6e893e6981b4723bb72734974d https://github.com/Perl/perl5/commit/c013dd3cc7441f6e893e6981b4723bb72734974d Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M embedvar.h M intrpvar.h M perl.h M sv.c Log Message: ----------- start reent env lock Commit: 4ad6c2707a2c784224e94ae00d6bf78727d67134 https://github.com/Perl/perl5/commit/4ad6c2707a2c784224e94ae00d6bf78727d67134 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h M perlvars.h Log Message: ----------- REENT LOCK => many reader Commit: c9cb9ed12ed5e48df45631416f287052e21216cb https://github.com/Perl/perl5/commit/c9cb9ed12ed5e48df45631416f287052e21216cb Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M perl.h Log Message: ----------- move env lock Commit: 152e49f881efd5274db3b6e5082e8b133aff9978 https://github.com/Perl/perl5/commit/152e49f881efd5274db3b6e5082e8b133aff9978 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-22 (Thu, 22 Feb 2024) Changed paths: M ext/I18N-Langinfo/Langinfo.xs M iperlsys.h M lib/locale.t M lib/locale_threads.t M locale.c M locale_table.h M makedef.pl M perl.h M reentr_locks.h M regen/reentr.pl M t/run/locale.t Log Message: ----------- foo Compare: https://github.com/Perl/perl5/compare/3f64593f6224...152e49f881ef To unsubscribe from these emails, change your notification settings at https://github.com/Perl/perl5/settings/notifications