Branch: refs/heads/smoke-me/khw-env Home: https://github.com/Perl/perl5 Commit: 3b265980df2371a10c1d9cec35f72ea9df6fff44 https://github.com/Perl/perl5/commit/3b265980df2371a10c1d9cec35f72ea9df6fff44 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 6e06d90af35c07b848848ee308c958efeecae39c https://github.com/Perl/perl5/commit/6e06d90af35c07b848848ee308c958efeecae39c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: d816a7e00e5c50dcb5c4f0315c138c7a14c59ce4 https://github.com/Perl/perl5/commit/d816a7e00e5c50dcb5c4f0315c138c7a14c59ce4 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm Log Message: ----------- BlackBox dont use rare scripts Commit: afc6cfdc575d9385d0910014764f61df3e943a2e https://github.com/Perl/perl5/commit/afc6cfdc575d9385d0910014764f61df3e943a2e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/harness Log Message: ----------- XXX t/harness temp tweaks Commit: 933253d348597db5469341a2757cc2a5b373897a https://github.com/Perl/perl5/commit/933253d348597db5469341a2757cc2a5b373897a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/harness Log Message: ----------- XXX skip croak.t under sanitizer Commit: 467adb8f433a2de7ab9ed71ca319405ebf93e201 https://github.com/Perl/perl5/commit/467adb8f433a2de7ab9ed71ca319405ebf93e201 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/porting/bincompat.t Log Message: ----------- skip bincompat.t Commit: 5ba58ca7feeefdab8147ecfdc43d575911eab609 https://github.com/Perl/perl5/commit/5ba58ca7feeefdab8147ecfdc43d575911eab609 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/TEST Log Message: ----------- Skip cpan testing message Commit: 36e862998783e281e5ed232652ae3f9e97c37246 https://github.com/Perl/perl5/commit/36e862998783e281e5ed232652ae3f9e97c37246 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/TEST Log Message: ----------- Also skip non-thread dist testing Commit: 9bf0a2ab2b878483503b203466185686082cfcba https://github.com/Perl/perl5/commit/9bf0a2ab2b878483503b203466185686082cfcba Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M cpan/Archive-Tar/t/02_methods.t Log Message: ----------- XXX skip Archive-Tar because of symlinks Commit: 8054e5e434028f39df2d8d5a21a47c6add06c474 https://github.com/Perl/perl5/commit/8054e5e434028f39df2d8d5a21a47c6add06c474 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/porting/cmp_version.t Log Message: ----------- XXX skip cmp_version.t because of sym links Commit: c366ab0f0aded5b331ac07f6155654f3d0c102b6 https://github.com/Perl/perl5/commit/c366ab0f0aded5b331ac07f6155654f3d0c102b6 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 4cc7ce8db816cdd5a4be74382662615a4f5f02e8 https://github.com/Perl/perl5/commit/4cc7ce8db816cdd5a4be74382662615a4f5f02e8 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 391d3c1c3ffa60580f39a9124ba3c1dcf647dc6f https://github.com/Perl/perl5/commit/391d3c1c3ffa60580f39a9124ba3c1dcf647dc6f Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 61fd3ef7f1950e8be3e1ec31cb1a23c71c357b40 https://github.com/Perl/perl5/commit/61fd3ef7f1950e8be3e1ec31cb1a23c71c357b40 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/run/locale.t Log Message: ----------- run/locale.t: more debug Commit: 06d58610558e96f041554804b9f7e38359f0d0d2 https://github.com/Perl/perl5/commit/06d58610558e96f041554804b9f7e38359f0d0d2 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 486fbba3fe73f33ff300f6b5fec5d8b37698dedb https://github.com/Perl/perl5/commit/486fbba3fe73f33ff300f6b5fec5d8b37698dedb Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M perl.h Log Message: ----------- XXX temp to test broken lconv on non-Windows Commit: 76e7ab064424f7cc6857adda8a26b0b2863963ab https://github.com/Perl/perl5/commit/76e7ab064424f7cc6857adda8a26b0b2863963ab Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/run/locale.t Log Message: ----------- XXX run/locale.t: maybe f move test Commit: 1ea88896c59c9ff9147a4589777c4e53ee52fd76 https://github.com/Perl/perl5/commit/1ea88896c59c9ff9147a4589777c4e53ee52fd76 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 4328639e641f936acd275ae0aa968b4d30672abb https://github.com/Perl/perl5/commit/4328639e641f936acd275ae0aa968b4d30672abb Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: ca2bf3fe2a85a1610fad5ccfe095385e3fa797ae https://github.com/Perl/perl5/commit/ca2bf3fe2a85a1610fad5ccfe095385e3fa797ae Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 19234afd71733c76ec97be884f9ed8261beaae6c https://github.com/Perl/perl5/commit/19234afd71733c76ec97be884f9ed8261beaae6c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M makedef.pl M perl.h Log Message: ----------- XXX temporary: Allow undef LC_ALL Commit: dd534e305a1106c135c7dfe0cb8d4bbddc1065a8 https://github.com/Perl/perl5/commit/dd534e305a1106c135c7dfe0cb8d4bbddc1065a8 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M perl.h Log Message: ----------- perl.h: Fake up win32 compile a bit Commit: 990042cee2bed027765a548ccc0657ec2ac4d376 https://github.com/Perl/perl5/commit/990042cee2bed027765a548ccc0657ec2ac4d376 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 3a08b7cff2f0529bf1f3db0d3d4a0d5cfa7e7314 https://github.com/Perl/perl5/commit/3a08b7cff2f0529bf1f3db0d3d4a0d5cfa7e7314 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 07b298e7c480e4a33f1f8eebead49479a5a3619a https://github.com/Perl/perl5/commit/07b298e7c480e4a33f1f8eebead49479a5a3619a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 04fe72b2fe4667324eb9757cd0fc75d15e6e9429 https://github.com/Perl/perl5/commit/04fe72b2fe4667324eb9757cd0fc75d15e6e9429 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 8e8157b46b80bf3873bd48f6a8ddc32db00176af https://github.com/Perl/perl5/commit/8e8157b46b80bf3873bd48f6a8ddc32db00176af Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M embed.fnc M proto.h M util.c Log Message: ----------- XXX memlog Commit: 28b2db26aabfcad730c91ee4221e8d67a5db2c09 https://github.com/Perl/perl5/commit/28b2db26aabfcad730c91ee4221e8d67a5db2c09 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M perl.h M t/run/switchDx.t Log Message: ----------- debug thread Commit: cbdd37e7afd3fdf360259e1e3ca9eedc08694304 https://github.com/Perl/perl5/commit/cbdd37e7afd3fdf360259e1e3ca9eedc08694304 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M dist/threads/threads.xs Log Message: ----------- threads.xs DEBUG_U Commit: a24cfab8ffac5736ac1034a4a0162d5faf967266 https://github.com/Perl/perl5/commit/a24cfab8ffac5736ac1034a4a0162d5faf967266 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M lib/locale.t Log Message: ----------- XXX temp: lib/locale.t: debug Commit: 014feea37dc3c126274d00b8df409b7771d58cc5 https://github.com/Perl/perl5/commit/014feea37dc3c126274d00b8df409b7771d58cc5 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M lib/locale.t Log Message: ----------- lib/locale.t FILE debug Commit: 17e9c6c53e14ecf858887115213ebe1f2411d42b https://github.com/Perl/perl5/commit/17e9c6c53e14ecf858887115213ebe1f2411d42b Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M lib/locale.t Log Message: ----------- lib/locale.t Commit: 923d8bf22c3b621cdf7c0d2dc8c12098f98ca32e https://github.com/Perl/perl5/commit/923d8bf22c3b621cdf7c0d2dc8c12098f98ca32e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M perl.h Log Message: ----------- XXX perl.h: Debugging mutex lock' Commit: 495cd76bad0839fb5f12b412a837497172bc7507 https://github.com/Perl/perl5/commit/495cd76bad0839fb5f12b412a837497172bc7507 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 4868790c37ee0e69d8c2a2ac0ebcf203cfbacf9c https://github.com/Perl/perl5/commit/4868790c37ee0e69d8c2a2ac0ebcf203cfbacf9c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M cpan/version/t/07locale.t Log Message: ----------- cpan/version/07locale.t: drop, bug have to recompute md5 Commit: b26ca91799b7651df83a33fe161a301db07bc4d8 https://github.com/Perl/perl5/commit/b26ca91799b7651df83a33fe161a301db07bc4d8 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/porting/customized.dat Log Message: ----------- customized.dat Commit: 2e14f65beff6d5e8789773306f99f834b3186ab4 https://github.com/Perl/perl5/commit/2e14f65beff6d5e8789773306f99f834b3186ab4 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) 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: a5f432956190b3b513f1663ffe1d93a42cba7bae https://github.com/Perl/perl5/commit/a5f432956190b3b513f1663ffe1d93a42cba7bae Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/loc_tools.pl Log Message: ----------- loc_tools: XXX Debug Commit: 3c6b273b71ec4463ab6f1307ea7e5c06bd670b28 https://github.com/Perl/perl5/commit/3c6b273b71ec4463ab6f1307ea7e5c06bd670b28 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- S_querylocale_2008_i: Add entry assertion Commit: 6e35c86223853e27cd778f5926ef8e6a4c63f52f https://github.com/Perl/perl5/commit/6e35c86223853e27cd778f5926ef8e6a4c63f52f Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- S_bool_setlocale_i: Add entry assertion Commit: aa841cec4ce28fa54e50a27b7a99d85c13950dfc https://github.com/Perl/perl5/commit/aa841cec4ce28fa54e50a27b7a99d85c13950dfc Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- savepv if threaded, unused I think Commit: 5cc514d63aa98b8cf1a1e9cb91d82846ed304d36 https://github.com/Perl/perl5/commit/5cc514d63aa98b8cf1a1e9cb91d82846ed304d36 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M hints/darwin.sh Log Message: ----------- darwin hints querylocale race in earlier darwins? Commit: 267682ff543b5caa4884bc622c63751a8d52c38a https://github.com/Perl/perl5/commit/267682ff543b5caa4884bc622c63751a8d52c38a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M pp.c Log Message: ----------- pp_study: Add memory use debugging Commit: 414f1d874f7eb002171a83b31cba3c548ea50fe2 https://github.com/Perl/perl5/commit/414f1d874f7eb002171a83b31cba3c548ea50fe2 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M pp.c Log Message: ----------- Revert "pp_study: Add memory use debugging" Commit: 63304ffd74b7ecc744fbfc4e969e7e22ffd2a21e https://github.com/Perl/perl5/commit/63304ffd74b7ecc744fbfc4e969e7e22ffd2a21e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M hints/darwin.sh Log Message: ----------- darwin Commit: 75eb285f35fb651c977698ac890cc67cbb4cc4cc https://github.com/Perl/perl5/commit/75eb285f35fb651c977698ac890cc67cbb4cc4cc Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: e820b6c07e9a96f2af3e3491c8cbaed86d242523 https://github.com/Perl/perl5/commit/e820b6c07e9a96f2af3e3491c8cbaed86d242523 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/run/locale.t Log Message: ----------- t/run/locale.t: debug Commit: 235a757bd356100935a587207520d275a94d820c https://github.com/Perl/perl5/commit/235a757bd356100935a587207520d275a94d820c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M lib/locale_threads.t Log Message: ----------- locale_threads: add a commented out yield Commit: 8b1490c9323c62058db20de88b9391dac67c5d28 https://github.com/Perl/perl5/commit/8b1490c9323c62058db20de88b9391dac67c5d28 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M lib/locale_threads.t Log Message: ----------- locale_threads: debugging Commit: 78fbd3e388b1ec2d862dc49c0be4d557755f522c https://github.com/Perl/perl5/commit/78fbd3e388b1ec2d862dc49c0be4d557755f522c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 583a12bb1b5e362a60e6b51b4862f9e3f3d0ebac https://github.com/Perl/perl5/commit/583a12bb1b5e362a60e6b51b4862f9e3f3d0ebac Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 4b940ecc6f5cb6e72d8784d20cb9d09091db2551 https://github.com/Perl/perl5/commit/4b940ecc6f5cb6e72d8784d20cb9d09091db2551 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: f8a9acd720a770567d4e9dcb716b355fc1bd12f0 https://github.com/Perl/perl5/commit/f8a9acd720a770567d4e9dcb716b355fc1bd12f0 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M thread.h Log Message: ----------- thread.h: White space only Indent some nested preproccessor defines Commit: 5eda23a858ce46ef58eaa420b7640c947a4fc80e https://github.com/Perl/perl5/commit/5eda23a858ce46ef58eaa420b7640c947a4fc80e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 1a17e60a38d3a8122030f7c210f8fdec9db99363 https://github.com/Perl/perl5/commit/1a17e60a38d3a8122030f7c210f8fdec9db99363 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M cpan/Time-Piece/Piece.xs Log Message: ----------- XXX Time::Piece strftime Commit: e7102bc99621f1d533592551feed6cac9fda78f6 https://github.com/Perl/perl5/commit/e7102bc99621f1d533592551feed6cac9fda78f6 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M cpan/Time-Piece/Piece.xs Log Message: ----------- Time-Piece: notes to myself Commit: c930302657d6ffb9bcfd747b74d7fd8e7807d518 https://github.com/Perl/perl5/commit/c930302657d6ffb9bcfd747b74d7fd8e7807d518 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M util.c M win32/perlhost.h Log Message: ----------- XXX Win32 mem log Commit: 91c885aec5f6c7a87b3100fe73830e13d8fbd34a https://github.com/Perl/perl5/commit/91c885aec5f6c7a87b3100fe73830e13d8fbd34a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M util.c Log Message: ----------- XXX util add thread to mem_log Commit: 5a25807eaad85562e423435b1fef91de2bf4b91b https://github.com/Perl/perl5/commit/5a25807eaad85562e423435b1fef91de2bf4b91b Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- Debug wrap wset Commit: 2ce71ed7abfca44dfd76622d01bb7ca9d89b2431 https://github.com/Perl/perl5/commit/2ce71ed7abfca44dfd76622d01bb7ca9d89b2431 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M pod/perlhacktips.pod Log Message: ----------- XXX incomplete perlhacktips: Commit: f0f7d3cbc21d601db8b7c83630bf7882610e0d2f https://github.com/Perl/perl5/commit/f0f7d3cbc21d601db8b7c83630bf7882610e0d2f Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M iperlsys.h Log Message: ----------- iperlsys.h: TODO need to look at adding mutexes Commit: 3c5f96f7d73215d99cfe04b2900fdea86ac42876 https://github.com/Perl/perl5/commit/3c5f96f7d73215d99cfe04b2900fdea86ac42876 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M regen/reentr.pl Log Message: ----------- reentr.pl: XXX about needing mutex Commit: 0745d559a7eed00b5390e01e3b3ff7ddde016c6b https://github.com/Perl/perl5/commit/0745d559a7eed00b5390e01e3b3ff7ddde016c6b Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: c3c15c339e5080917e738b1b01a6ee858f61d6d2 https://github.com/Perl/perl5/commit/c3c15c339e5080917e738b1b01a6ee858f61d6d2 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M pod/perlmod.pod Log Message: ----------- perlmod Commit: b3ce57e09ba59e716fac5e700d4e5b4568cb8d77 https://github.com/Perl/perl5/commit/b3ce57e09ba59e716fac5e700d4e5b4568cb8d77 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M pod/perllocale.pod Log Message: ----------- perllocale Xxx start of changes Commit: 6ea9e8852099c96aa7c364ae1fbe305dfe7dd0e2 https://github.com/Perl/perl5/commit/6ea9e8852099c96aa7c364ae1fbe305dfe7dd0e2 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M win32/config_H.gc M win32/config_h.PL M win32/config_sh.PL Log Message: ----------- XXX config Commit: a2d7ca9531b77fcf96ce0ce1692f44f794054247 https://github.com/Perl/perl5/commit/a2d7ca9531b77fcf96ce0ce1692f44f794054247 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/run/locale.t Log Message: ----------- XXX t/run/locale.t Commit: 6ffa02a521ccdce38b75d77439863427ba1de255 https://github.com/Perl/perl5/commit/6ffa02a521ccdce38b75d77439863427ba1de255 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M pod/perlembed.pod Log Message: ----------- f perlembed Commit: ddb3edec459c16e03f66f6b47e9f68b68325e90e https://github.com/Perl/perl5/commit/ddb3edec459c16e03f66f6b47e9f68b68325e90e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: ead021b021e08d8848b72c80cc5103d4d0b25b47 https://github.com/Perl/perl5/commit/ead021b021e08d8848b72c80cc5103d4d0b25b47 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M lib/locale_threads.t Log Message: ----------- locale_threads: start of using platform locales Commit: 8b6a8c64c1a10e75e1ba7d1be562cb9d95cbe1e2 https://github.com/Perl/perl5/commit/8b6a8c64c1a10e75e1ba7d1be562cb9d95cbe1e2 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M lib/locale_threads.t Log Message: ----------- Revert "locale_threads: start of using platform locales" This reverts commit a7a8dea3aabb81a05aacaf3a26c49854a5854111. Commit: 6690de14afd6f7ece97ba0eb588f3caaff571d2c https://github.com/Perl/perl5/commit/6690de14afd6f7ece97ba0eb588f3caaff571d2c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: a5c504f60ff22351af3f7bee9239801c37c6c7c7 https://github.com/Perl/perl5/commit/a5c504f60ff22351af3f7bee9239801c37c6c7c7 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 47ac352e5684500f4e93eb137031d23894074f93 https://github.com/Perl/perl5/commit/47ac352e5684500f4e93eb137031d23894074f93 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: d6933d9d7d7862eaddb0560039d97a6c544a717b https://github.com/Perl/perl5/commit/d6933d9d7d7862eaddb0560039d97a6c544a717b Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- rulereeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee Commit: e84292796760a7547a68bedf924302f90a3994a8 https://github.com/Perl/perl5/commit/e84292796760a7547a68bedf924302f90a3994a8 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Avoid a copy Using an else clause allows us to not make a copy. Commit: 6039fa3e8f4168efd4c02c0cc9075d6ae326d955 https://github.com/Perl/perl5/commit/6039fa3e8f4168efd4c02c0cc9075d6ae326d955 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 92e6c9a9b74d91133d6bacf65120ab6139be5388 https://github.com/Perl/perl5/commit/92e6c9a9b74d91133d6bacf65120ab6139be5388 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- C_thous better ifdef Commit: 5426487f4b2e7ddc5a6fa4a536f57efe0312071b https://github.com/Perl/perl5/commit/5426487f4b2e7ddc5a6fa4a536f57efe0312071b Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 9b27761295f850f7b94e0c41dd7cfecfb5733d0d https://github.com/Perl/perl5/commit/9b27761295f850f7b94e0c41dd7cfecfb5733d0d Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M t/loc_tools.pl Log Message: ----------- loctools use if dumper Commit: 3168bca97898c6a9b13e37170a1bcc46007ee0a4 https://github.com/Perl/perl5/commit/3168bca97898c6a9b13e37170a1bcc46007ee0a4 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M lib/locale.t Log Message: ----------- XXX lib/locale.t dont scan for LC_NUMERIC Commit: a40ebcf215074038ab39adfe6c134c027ed4829b https://github.com/Perl/perl5/commit/a40ebcf215074038ab39adfe6c134c027ed4829b Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) 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: 23cee54d9ea82e19065c7c7b1a010c790739bacb https://github.com/Perl/perl5/commit/23cee54d9ea82e19065c7c7b1a010c790739bacb Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- XXX msg: locale.c: Combine some more (WIn32) preprocessor directives Commit: 1d8146a10290832bbf527c0f4ff993edbfcc6b76 https://github.com/Perl/perl5/commit/1d8146a10290832bbf527c0f4ff993edbfcc6b76 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: White space only Commit: fcbc130b52ad4a9c0b6002fc088685836a124d19 https://github.com/Perl/perl5/commit/fcbc130b52ad4a9c0b6002fc088685836a124d19 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Do simple 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: a7eb18512736969fb181b16cf263db55bb0297d1 https://github.com/Perl/perl5/commit/a7eb18512736969fb181b16cf263db55bb0297d1 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) 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: 2ebd9336a63c4360ad8106b57849dde6ad0c9a2e https://github.com/Perl/perl5/commit/2ebd9336a63c4360ad8106b57849dde6ad0c9a2e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M ext/POSIX/lib/POSIX.pod Log Message: ----------- start of pod for localeconv Commit: df373f0eee590321a3f33f648daa012f77476ab4 https://github.com/Perl/perl5/commit/df373f0eee590321a3f33f648daa012f77476ab4 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 355149d0f0db45210bb675f8fa5b1100fbb86a6c https://github.com/Perl/perl5/commit/355149d0f0db45210bb675f8fa5b1100fbb86a6c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- debug populate localeconv Commit: 52ba4e1cbb2839b1dda4c3ed8625294825ab27d8 https://github.com/Perl/perl5/commit/52ba4e1cbb2839b1dda4c3ed8625294825ab27d8 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M dist/threads/threads.xs Log Message: ----------- debug thread xs Commit: a5cb732438795675d1cd1a0ffcca2f984dd89306 https://github.com/Perl/perl5/commit/a5cb732438795675d1cd1a0ffcca2f984dd89306 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) 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: b2c3c0fbfc3e39b1fe9ff9ded95bff47b9e223f9 https://github.com/Perl/perl5/commit/b2c3c0fbfc3e39b1fe9ff9ded95bff47b9e223f9 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M lib/locale_threads.t Log Message: ----------- lib/locale_threads.t: Add debugging info Commit: e9be77a8f278e9f258c3706112e4d2db0df27960 https://github.com/Perl/perl5/commit/e9be77a8f278e9f258c3706112e4d2db0df27960 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- Don't mortalize my_localeconv() for internal use For external consumption, retain the mortalization; but for internal explicitly decrement the reference count when done. Commit: 6b1ed9a01fba0daabbcb56e53b73f3e903365620 https://github.com/Perl/perl5/commit/6b1ed9a01fba0daabbcb56e53b73f3e903365620 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Don't compile unused function Since 0b52bb633d8c55bb15f05cdb19a4b7cb071ea271, this function isn't used unless localeconv() is available. Don't compile it unless that is true. Commit: dc7bb0c17709636acb99982673598b5f9a5d9fae https://github.com/Perl/perl5/commit/dc7bb0c17709636acb99982673598b5f9a5d9fae Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 62ef56274b8a8116c698d4be650aeb339662aea8 https://github.com/Perl/perl5/commit/62ef56274b8a8116c698d4be650aeb339662aea8 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Call newSVpvz() Commit: d47c74d130c06b352ebdd19838d81c5142242b01 https://github.com/Perl/perl5/commit/d47c74d130c06b352ebdd19838d81c5142242b01 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Each toggle locale must have matching restore The next commit will want this symmetry, which until now hasn't mattered. Commit: d86cca89f7e0be62559db03ac1bcd483c445aa38 https://github.com/Perl/perl5/commit/d86cca89f7e0be62559db03ac1bcd483c445aa38 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Use a critical section when locale is toggled Sometimes the locale for a category has to be toggled to some other locale, when the desired value is for a locale that isn't the current one. This doesn't present any problem when locales are thread-safe. The locale gets toggled back before any other work is done. But when locales are not thread-safe and we have threads, another thread can execute in the now-wrong locale. Perl, for a few releases now, tries to mitigate the issues with running locales under threads when yhread-safe locales are not in use, for mitigations that are easy to do. These very well may make things work for applications that don't change locales very much; say only on startup. But now perl itself changes locales briefly behind an application's back. It turns out it is easy to add a lock that will keep threads that otherwise would work to continue to work. That's what this commit does, by adding TOGGLE_LOCK and TOGGLE_UNLOCK macros that are no-ops for all but the unsafe-threaded locale implementation. The unused parameter to the macros is for future use. Commit: eecfa781d24f41389aaf37d8321ca3052a7a6505 https://github.com/Perl/perl5/commit/eecfa781d24f41389aaf37d8321ca3052a7a6505 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Reword comment for clarity Commit: f6a2174273a9834cc7b1ae947295f741edc9fa66 https://github.com/Perl/perl5/commit/f6a2174273a9834cc7b1ae947295f741edc9fa66 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M lib/locale.t M locale.c Log Message: ----------- Accept 0 for first alternate digit when no nl_langinfo() Commit 85857715f96ef9f591dd5ca0322dc293e1f07867 allows a locale to have an ASCII digit 0 to be the first alternate digit. This is to accommodate locales without a zero (such as Roman numerals) to use the modern day Western 0, and still have the rest of the digits be alternates. This commit extends that to perl's emulation of nl_langinfo() on systems that lack that libc function. Commit: a6cd33bd077d6488eacbc6717a4797462f28c1a1 https://github.com/Perl/perl5/commit/a6cd33bd077d6488eacbc6717a4797462f28c1a1 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- SvPV nomg Commit: f470442bcf0d847554f3a948386ac3f92a6416b0 https://github.com/Perl/perl5/commit/f470442bcf0d847554f3a948386ac3f92a6416b0 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- shorten_toggle Commit: 95bc8d341e40d48ca4990cfde0a361d6f27d33c3 https://github.com/Perl/perl5/commit/95bc8d341e40d48ca4990cfde0a361d6f27d33c3 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Swap the order of two functions The new ordering will make the diffs less in the next commit, and will make just as much sense going forward as the previous ordering. Commit: ff36a51e38a1659c4b28a62d37e7755b7a6059ca https://github.com/Perl/perl5/commit/ff36a51e38a1659c4b28a62d37e7755b7a6059ca Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Pass locale to strftime functions Commit: c4eb366895b11a0be67ea313657dfcbb0ca5436b https://github.com/Perl/perl5/commit/c4eb366895b11a0be67ea313657dfcbb0ca5436b Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- querylocale Maybe use C in the callers Commit: 2e7b98a34e57bbc7f6e74b93ac9fc597a9a811e3 https://github.com/Perl/perl5/commit/2e7b98a34e57bbc7f6e74b93ac9fc597a9a811e3 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- Revert "querylocale" This reverts commit b6ea27aa76a1c8785e84df9a1a42f1a71dcc81e2. Commit: 0e6b6e4aa6ee3441395205550239e863c6865f16 https://github.com/Perl/perl5/commit/0e6b6e4aa6ee3441395205550239e863c6865f16 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- toggle2 Commit: 2338a3debb504be4fbfcb74afb535606998a77a4 https://github.com/Perl/perl5/commit/2338a3debb504be4fbfcb74afb535606998a77a4 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M perl.h Log Message: ----------- Add DEBUG_SETLOCALE_INCONSISTENCIES Commit: cd1747bc6dc4923bfc31b714d97e0d39550cc0f4 https://github.com/Perl/perl5/commit/cd1747bc6dc4923bfc31b714d97e0d39550cc0f4 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M perl.h Log Message: ----------- Enable DEBUG_SETLOCALE_INCONSISTENCIES Commit: 02d2266cc347a0f30c61ebfb7356b1c26df7b187 https://github.com/Perl/perl5/commit/02d2266cc347a0f30c61ebfb7356b1c26df7b187 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- Make numeric standard inconsistent Commit: 4d7f361e60e456883e43f58fb530b3119e36ae8c https://github.com/Perl/perl5/commit/4d7f361e60e456883e43f58fb530b3119e36ae8c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: c67e85c350a4f2d684aff70fe18d3098ccaa232c https://github.com/Perl/perl5/commit/c67e85c350a4f2d684aff70fe18d3098ccaa232c Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- DEBUG Lv to U Commit: 8d9bd80ba77d057cb9ac271beb926ab5631d6346 https://github.com/Perl/perl5/commit/8d9bd80ba77d057cb9ac271beb926ab5631d6346 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- extra debug Commit: 6f8b78ef8a229bdec257abfa53bd0f2965d216cd https://github.com/Perl/perl5/commit/6f8b78ef8a229bdec257abfa53bd0f2965d216cd Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- f some emul old implement Commit: 7010af9d2c564b5bb4878620dcf579d4619879d7 https://github.com/Perl/perl5/commit/7010af9d2c564b5bb4878620dcf579d4619879d7 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- more emul locks Commit: ea1c375a8f70a59a67df12fd332fdb81428a595d https://github.com/Perl/perl5/commit/ea1c375a8f70a59a67df12fd332fdb81428a595d Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- Revert "more emul locks" This reverts commit 4733a1674423ee47b33eb0ee1882e1bf39faa1a6. Commit: f15d46312e6d2a5834ec6cf15110c645154a9528 https://github.com/Perl/perl5/commit/f15d46312e6d2a5834ec6cf15110c645154a9528 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- langinfo lock Commit: 332f28e201a163ef1a092fb85e3ff268fe234942 https://github.com/Perl/perl5/commit/332f28e201a163ef1a092fb85e3ff268fe234942 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- Revert "langinfo lock" This reverts commit acaff35d7ed83830fb36c149aafede5cdf400061. Commit: 97c4603de86a3062d74c78947e1c27d58c684b25 https://github.com/Perl/perl5/commit/97c4603de86a3062d74c78947e1c27d58c684b25 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- lock mask Commit: 962e45f641f4de9de324283a41b4eb05678f1f19 https://github.com/Perl/perl5/commit/962e45f641f4de9de324283a41b4eb05678f1f19 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- Revert "lock mask" This reverts commit 3fd528c9d5d5b9c05dc1c697e61570b81811fb95. Commit: da7888fc5810dcad25033b7e2c86c72e1ea8ab76 https://github.com/Perl/perl5/commit/da7888fc5810dcad25033b7e2c86c72e1ea8ab76 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Maybe comment' Commit: 3fb682a22fcd9ae70b275b1a20673a618e2c9866 https://github.com/Perl/perl5/commit/3fb682a22fcd9ae70b275b1a20673a618e2c9866 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- emul assertion Commit: 23cf04719bb91d1b8694d28b3ef6a895a17e72bd https://github.com/Perl/perl5/commit/23cf04719bb91d1b8694d28b3ef6a895a17e72bd Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c M makedef.pl 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: fcd74b49ff42836af338ebf056868e56835f8c90 https://github.com/Perl/perl5/commit/fcd74b49ff42836af338ebf056868e56835f8c90 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: 47287671139a2f780671ea15d6a92f3bb029ac58 https://github.com/Perl/perl5/commit/47287671139a2f780671ea15d6a92f3bb029ac58 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M makedef.pl M perl.h Log Message: ----------- Revert "Don't do thread-safe locales emulation on mingw" This reverts commit 4e4dfa1146e1f389110d001587ccb0fadec4323b. Commit: 76018c623baadf5786390f3ff7280c2f57fbfd65 https://github.com/Perl/perl5/commit/76018c623baadf5786390f3ff7280c2f57fbfd65 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M perl.h Log Message: ----------- XXX perl.h maybe drop Commit: f5666aab0d160a18646727c4f19e2863b600006a https://github.com/Perl/perl5/commit/f5666aab0d160a18646727c4f19e2863b600006a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M makedef.pl Log Message: ----------- makedef.pl: PL_cur_locale_obj is only POSIX 2008 multiplicity Commit: 53f2d8499914b4ea37159ae95ea7d891545df819 https://github.com/Perl/perl5/commit/53f2d8499914b4ea37159ae95ea7d891545df819 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) 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: 2450559fcfc4ae5e97039cdf5564146970c86e98 https://github.com/Perl/perl5/commit/2450559fcfc4ae5e97039cdf5564146970c86e98 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 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: d633562e14156c5737aeec77af4f5a560c176c28 https://github.com/Perl/perl5/commit/d633562e14156c5737aeec77af4f5a560c176c28 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- Debug uselocale Commit: c77e19326a23742e4ed01df6217e56e61918bc36 https://github.com/Perl/perl5/commit/c77e19326a23742e4ed01df6217e56e61918bc36 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M pp.c Log Message: ----------- pp_study: hook Commit: ed7951d07aac166fd21b2639a5ec3ca13a680ff2 https://github.com/Perl/perl5/commit/ed7951d07aac166fd21b2639a5ec3ca13a680ff2 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M sv.c Log Message: ----------- sv.c need to check for pv in sv in sv_setpvf Commit: 59195a480572476d9584a6bbe36720044bafc46a https://github.com/Perl/perl5/commit/59195a480572476d9584a6bbe36720044bafc46a Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M sv.c Log Message: ----------- perlapi: Add detail to sv_setpv_bufsize() Commit: e9aff5cb18056004be8faa11fdfd3b7ff4ffc0e7 https://github.com/Perl/perl5/commit/e9aff5cb18056004be8faa11fdfd3b7ff4ffc0e7 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M sv_inline.h Log Message: ----------- Add comment to sv_setpv_freshbuf Commit: 8ce51a12a42294bc2bbc2adca8bd833074a743d9 https://github.com/Perl/perl5/commit/8ce51a12a42294bc2bbc2adca8bd833074a743d9 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M perl.h Log Message: ----------- locale mutexes: Win32 are general without simulating We can get rid of the simulation needed for other platforms. Commit: 4b2af1cd0f97b6f1c26013b27d2fb3285f937cde https://github.com/Perl/perl5/commit/4b2af1cd0f97b6f1c26013b27d2fb3285f937cde Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Two loop indices are confined to an enum They don't take on all possible unsigned values. Create a macro to do the casting necessary for some compilers Commit: b64631077299ed384be0bb7348a09ac022856bc6 https://github.com/Perl/perl5/commit/b64631077299ed384be0bb7348a09ac022856bc6 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Use macro created in previous commit This is a more general macro than these others, which can be rewritten more simply in terms of it. Commit: 7e04b712de9a4de74a08781f7ffee681a3233199 https://github.com/Perl/perl5/commit/7e04b712de9a4de74a08781f7ffee681a3233199 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M perl.h Log Message: ----------- perl.h: Clarify comment Commit: 2c2e9112248b3f1b8fe94092e866152896f22c52 https://github.com/Perl/perl5/commit/2c2e9112248b3f1b8fe94092e866152896f22c52 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- White Commit: b07d459bddf44e885cd88eb959f373664e1c985f https://github.com/Perl/perl5/commit/b07d459bddf44e885cd88eb959f373664e1c985f Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- fundamental Commit: e81ad88933e4306a6c52c0dbd602c6b8108cab38 https://github.com/Perl/perl5/commit/e81ad88933e4306a6c52c0dbd602c6b8108cab38 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- immediate use Commit: 3c4bab2cc40edbd53973eb3550abbaf3eac65683 https://github.com/Perl/perl5/commit/3c4bab2cc40edbd53973eb3550abbaf3eac65683 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- more immed Commit: 37df5aa07f3a04650fa0ac32bf9c305a3f4aa08e https://github.com/Perl/perl5/commit/37df5aa07f3a04650fa0ac32bf9c305a3f4aa08e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- add is_cur_locale_utf8 Commit: 92b5ca1de9cb5ddf759ff670a45b8466ad2406b8 https://github.com/Perl/perl5/commit/92b5ca1de9cb5ddf759ff670a45b8466ad2406b8 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M embed.fnc M embed.h M proto.h Log Message: ----------- embed.fnc: Don't compile undefined function This function now is defined only when USE_LOCALE is #defined; move its specification in embed.fnc accordingly Commit: 10e8e8ed5bcda7bbdc00af5a4258e1f4beb31491 https://github.com/Perl/perl5/commit/10e8e8ed5bcda7bbdc00af5a4258e1f4beb31491 Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- move subs around Commit: c8dccac060b1522cca99af537d006f0afdb7729e https://github.com/Perl/perl5/commit/c8dccac060b1522cca99af537d006f0afdb7729e Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- locale.c: Comments, white space Commit: 2127217c51c56e4660a354234063ea2f38af876f https://github.com/Perl/perl5/commit/2127217c51c56e4660a354234063ea2f38af876f Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- final Commit: cda83987bff8f10b1e34e75969d01c8ec2cae65d https://github.com/Perl/perl5/commit/cda83987bff8f10b1e34e75969d01c8ec2cae65d Author: Karl Williamson <k...@cpan.org> Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M locale.c Log Message: ----------- MULT Compare: https://github.com/Perl/perl5/compare/044143209335...cda83987bff8