Branch: refs/heads/smoke-me/khw-env Home: https://github.com/Perl/perl5 Commit: 450fca8d9c174fcf826875d18214dff5318f02ce https://github.com/Perl/perl5/commit/450fca8d9c174fcf826875d18214dff5318f02ce Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023)
Changed paths: M t/harness Log Message: ----------- XXX skip croak.t under sanitizer Commit: 7e8f415e83dfb55793982b12752136ac4851e5aa https://github.com/Perl/perl5/commit/7e8f415e83dfb55793982b12752136ac4851e5aa Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/op/sub.t Log Message: ----------- op/sub.t: Cancel watchdog when done A watchdog timer should be cancelled after the test(s) it guards. Otherwise, when someone adds new tests after it in the file, and doesn't notice that the tests are under the watchdog, those new tests can fail. These failures may be intermittent, only happening under heavy load. Commit: fe5a44117ed34dd2954bb5ebb14744312d477afa https://github.com/Perl/perl5/commit/fe5a44117ed34dd2954bb5ebb14744312d477afa Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/test.pl Log Message: ----------- test.pl: Add comment that should clear watchdog As it says, failure to cancel a timer can lead to failing (or worse: flapping) tests Commit: 605fdd04c21f84526c780b0c817fb63359c9a534 https://github.com/Perl/perl5/commit/605fdd04c21f84526c780b0c817fb63359c9a534 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/TEST Log Message: ----------- XXX skip cpan testing Commit: cb71e6a86e57eaf76c574203d6b82201d5db6ed9 https://github.com/Perl/perl5/commit/cb71e6a86e57eaf76c574203d6b82201d5db6ed9 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M MANIFEST M charclass_invlists.h M lib/unicore/mktables M lib/unicore/uni_keywords.pl M regcharclass.h A t/re/uniprops11.t A t/re/uniprops12.t A t/re/uniprops13.t A t/re/uniprops14.t A t/re/uniprops15.t A t/re/uniprops16.t A t/re/uniprops17.t A t/re/uniprops18.t A t/re/uniprops19.t A t/re/uniprops20.t A t/re/uniprops21.t A t/re/uniprops22.t A t/re/uniprops23.t A t/re/uniprops24.t M uni_keywords.h Log Message: ----------- uniprops 24 Commit: 637da5444fa2c3ef2cad0be6e148802b07caee9b https://github.com/Perl/perl5/commit/637da5444fa2c3ef2cad0be6e148802b07caee9b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M MANIFEST A t/uni/idstart.pl A t/uni/idstart00.t A t/uni/idstart01.t A t/uni/idstart02.t A t/uni/idstart03.t A t/uni/idstart04.t A t/uni/idstart05.t A t/uni/idstart06.t A t/uni/idstart07.t A t/uni/idstart08.t A t/uni/idstart09.t A t/uni/idstart10.t A t/uni/idstart11.t A t/uni/idstart12.t A t/uni/idstart13.t A t/uni/idstart14.t A t/uni/idstart15.t A t/uni/idstart16.t A t/uni/idstart17.t A t/uni/idstart18.t A t/uni/idstart19.t A t/uni/idstart20.t A t/uni/idstart21.t A t/uni/idstart22.t A t/uni/idstart23.t M t/uni/variables.t Log Message: ----------- Split t/uni/variables.t into multiple tests These can be done in parallel; otherwise this is often the test that finishes last, holding up the test suite completion. Commit: 6e466ed339f2c6f9ef854b12bef0daa497abe94f https://github.com/Perl/perl5/commit/6e466ed339f2c6f9ef854b12bef0daa497abe94f Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/test.pl Log Message: ----------- XXX test.pl: dont unlink temps Commit: a4eb54e2ce861b27dc7f9308fc70daaa781c5937 https://github.com/Perl/perl5/commit/a4eb54e2ce861b27dc7f9308fc70daaa781c5937 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/test.pl Log Message: ----------- Revert "XXX test.pl: dont unlink temps" This reverts commit 1579ce0dbce549cb594214ba27d4e2fa389f891b. Commit: 14439d6b4ce292f2d4fb4c57c402b73faedf734b https://github.com/Perl/perl5/commit/14439d6b4ce292f2d4fb4c57c402b73faedf734b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/run/locale.t Log Message: ----------- run/locale.t: more debug Commit: eb2d97378097066ab7fe008ee3d97516ad00bfee https://github.com/Perl/perl5/commit/eb2d97378097066ab7fe008ee3d97516ad00bfee Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/run/locale.t Log Message: ----------- XXX run/locale.t: maybe f move test Commit: ebc058da54dec4b16a4a07e6e55e6d3b44b70082 https://github.com/Perl/perl5/commit/ebc058da54dec4b16a4a07e6e55e6d3b44b70082 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M vutil.c Log Message: ----------- vutil.c: Clean up white space/comments Change tabs to blanks; Fix indentation; chomp trailing white space Remove some blank lines that don't contribute to readability Add/change comment wording Commit: e797487fe7588b6f30e91db8ee4c6a1807550644 https://github.com/Perl/perl5/commit/e797487fe7588b6f30e91db8ee4c6a1807550644 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M vutil.c Log Message: ----------- vutil.c: Simplify locale handling I read the code over and realized that there was a much simpler way to do things. Commit: 721d1a4e372521ac514fc011d9234ae5ad81abce https://github.com/Perl/perl5/commit/721d1a4e372521ac514fc011d9234ae5ad81abce Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M vutil.c Log Message: ----------- vutil.c: Debug Commit: cdf461c65aaa7cfb80eaca91301930cc141fdde9 https://github.com/Perl/perl5/commit/cdf461c65aaa7cfb80eaca91301930cc141fdde9 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M vutil.c Log Message: ----------- vutil.c: Add logic to avoid having to change locales Prior to this commit, unless the locale was C or POSIX, it changed it temporarily so as to make sure the decimal point radix character was a dot. But on POSIX platforms or C99 compilers, there are easy ways to determine if the radix is a dot or not, without having to look at the locale. This commit changes to take advantage of those mechanisms to avoid toggling the locale unless it is actually needed to be done. Only if the compiler is C89 on a non-POSIX box will the previous existing method be used. Commit: 2e7708f2d12e8bae34ddfbe1b85b7858bf2162c3 https://github.com/Perl/perl5/commit/2e7708f2d12e8bae34ddfbe1b85b7858bf2162c3 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M vutil.c Log Message: ----------- vutil.c: C.UTF-8 also has a dot radix character This is another locale besides C and POSIX that are guaranteed to have the radix character be a dot. Very likely, locales beginning with "en_" will too. But this isn't guaranteed. Commit: 3ad7655f04d67a3b01e98b039690ccaf5b7b3cc6 https://github.com/Perl/perl5/commit/3ad7655f04d67a3b01e98b039690ccaf5b7b3cc6 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M vutil.c Log Message: ----------- vutil.c: Don't use Perl locale mechanisms The code in this function may be called from places that participate in the extensive Perl locale-handling mechanisms. But it may also be called from code that isn't. That means it has to use the base level libc functions for its locale handling, and to be careful to not interfere with the Perl data structures. When there is a possibility of collisions with other threads, a mutex must be used to prevent that. There is still the possibility of races if another thread is not using a mutex to protect its locale accesses; but that can't be helped. Recent perls have added mechanisms to allow for an API that can be used to do mutex locking without harming the Perl data structures. This commit changes vutil.c to use them if available, and using no-ops or the best available alternatives, if not. Commit: 2650d827f0475d1765a6dbb3e73e0b88137b50cd https://github.com/Perl/perl5/commit/2650d827f0475d1765a6dbb3e73e0b88137b50cd Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M vutil.c Log Message: ----------- f vutil Commit: 019d79115eea404a8567ca555184b21eb2e9e9e6 https://github.com/Perl/perl5/commit/019d79115eea404a8567ca555184b21eb2e9e9e6 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M cpan/version/t/07locale.t Log Message: ----------- version::07locale.t: Use I18N::Langinfo, not POSIX::localeconv() The former is always present; the latter might not be. Commit: fb92b32ed2e049359e570e960bfee0c48b8ea48d https://github.com/Perl/perl5/commit/fb92b32ed2e049359e570e960bfee0c48b8ea48d Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M cpan/version/t/07locale.t Log Message: ----------- version 07locale.t should use LC_NUMERIC, not ALL These outliers don't belong. This file is working on LC_NUMERIC only. Commit: c845e69b29064cc782e6ac4c1f3e1da5c0f61cc4 https://github.com/Perl/perl5/commit/c845e69b29064cc782e6ac4c1f3e1da5c0f61cc4 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M cpan/Archive-Tar/t/02_methods.t Log Message: ----------- XXX skip Archive-Tar because of symlinks Commit: 457a1ce0833a5345b58b1eeb72b4b68c43ace488 https://github.com/Perl/perl5/commit/457a1ce0833a5345b58b1eeb72b4b68c43ace488 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/porting/cmp_version.t Log Message: ----------- XXX skip cmp_version.t because of sym links Commit: 83db772dd702606cafe516fd2598fa65a8045eff https://github.com/Perl/perl5/commit/83db772dd702606cafe516fd2598fa65a8045eff Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- XXX temp to test broken lconv on non-Windows Commit: 05500982c69b0a97cf53b40f7e526a03c4bb49d9 https://github.com/Perl/perl5/commit/05500982c69b0a97cf53b40f7e526a03c4bb49d9 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M cpan/Sys-Syslog/t/syslog-inet-udp.t M cpan/Sys-Syslog/t/syslog.t Log Message: ----------- XXX skip syslog tests because fail without LC_TIME Commit: 8cc6fe8d1ff4d54e1f8a6dd18fcad85f9754bd81 https://github.com/Perl/perl5/commit/8cc6fe8d1ff4d54e1f8a6dd18fcad85f9754bd81 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M Configure Log Message: ----------- XXX Configure temporary to get no_nl, etc working Commit: 3465abf214a059bcd419c3e62d55cfacc48408b2 https://github.com/Perl/perl5/commit/3465abf214a059bcd419c3e62d55cfacc48408b2 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M win32/config_H.gc M win32/config_H.vc Log Message: ----------- Regenerate Configure after metaconfig backports applied Commit: 9bb3f79f024770c5cb0158239987b051a8b99656 https://github.com/Perl/perl5/commit/9bb3f79f024770c5cb0158239987b051a8b99656 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M Configure M config_h.SH M uconfig.h M win32/config_H.gc M win32/config_H.vc Log Message: ----------- Regenerate Configure after rm thread-safe nl_langinfo_l Commit: 837015f9b779ae03d8906b0b9cc0812526ecba17 https://github.com/Perl/perl5/commit/837015f9b779ae03d8906b0b9cc0812526ecba17 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M Configure M Cross/config.sh-arm-linux M Cross/config.sh-arm-linux-n770 M Porting/config.sh M config_h.SH M configure.com M metaconfig.h M plan9/config_sh.sample M uconfig.h M uconfig.sh M uconfig64.sh M win32/config.gc M win32/config.vc M win32/config_H.gc M win32/config_H.vc Log Message: ----------- XXX No count Regenerate Configure after LC_ALL Commit: 1dfae386b07c4dc56eebd998a50bd3389c67f312 https://github.com/Perl/perl5/commit/1dfae386b07c4dc56eebd998a50bd3389c67f312 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- perl.h: Use an enum to simplify consecutive value initialization This commit replaces the clumsy method to initialize some symbols with consecutive vaues. This also presents opportunities to declare variables as the particular enum type, to allow for better checking and code generation. Commit: ddada25ee81bc073a555b174f150cf9e7b2a5c2f https://github.com/Perl/perl5/commit/ddada25ee81bc073a555b174f150cf9e7b2a5c2f Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c M perl.h Log Message: ----------- locale.c: Always leave a space for LC_ALL entries Some platforms may not have the LC_ALL conglomerate category. This commit leaves a placeholder for it anyways. Having this always there can lead to some simplifications. Commit: 704c6fba98939012b4e911d800eca5bec4714074 https://github.com/Perl/perl5/commit/704c6fba98939012b4e911d800eca5bec4714074 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M intrpvar.h M perl.h Log Message: ----------- perl.h: Create a locale mnemonic #define for sync across files Commit: 5888ba5be034e211160f0e81d744396d8485de63 https://github.com/Perl/perl5/commit/5888ba5be034e211160f0e81d744396d8485de63 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M makedef.pl M perl.h Log Message: ----------- XXX temporary: undef LC_ALL Commit: 4c97472cfd5e0b05bfe9881c1d6a299d0005a68b https://github.com/Perl/perl5/commit/4c97472cfd5e0b05bfe9881c1d6a299d0005a68b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- perl.h: Fake up win32 compile a bit Commit: 92f7b780c43651690d4af90983ee8591700962af https://github.com/Perl/perl5/commit/92f7b780c43651690d4af90983ee8591700962af Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- ruler Commit: 95b49620ac5acbcde0a4d91dd24a7d09b3b1e084 https://github.com/Perl/perl5/commit/95b49620ac5acbcde0a4d91dd24a7d09b3b1e084 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M sv.c Log Message: ----------- newSVbool(): Fix compiler warning The parameter was declared const in embed.fnc, but not in the function prototype Commit: 0fc31f12ba6c90741721d5fac882b3d24662401b https://github.com/Perl/perl5/commit/0fc31f12ba6c90741721d5fac882b3d24662401b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M proto.h Log Message: ----------- regnode_after(): Fix compiler warning A parameter to this function was declared const in its prototype but not in embed.fnc. Commit: f7105723d40cc19f759a20efbeb361c3a8c299d4 https://github.com/Perl/perl5/commit/f7105723d40cc19f759a20efbeb361c3a8c299d4 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M proto.h M utf8.c Log Message: ----------- uvoffuni_to_utf8_flags_msgs(): Fix compiler warning A parameter to this function was declared const in embed.fnc, but isn't const. This commit also adds a const to another parameter that is constant. Commit: 7c67752ad35deedbd99c0c2f3f9bcf35566fa9e7 https://github.com/Perl/perl5/commit/7c67752ad35deedbd99c0c2f3f9bcf35566fa9e7 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M proto.h Log Message: ----------- S_clear_placeholders(): Fix compiler warning A parameter to this function was declared const in its prototype but not in embed.fnc, and had a different name Commit: d7b970b8f20dd322ac402073ef66a7d57c2faab8 https://github.com/Perl/perl5/commit/d7b970b8f20dd322ac402073ef66a7d57c2faab8 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- DEBUG_ Commit: 490558b04fc34f10fafdd143f6e584b4b42abc73 https://github.com/Perl/perl5/commit/490558b04fc34f10fafdd143f6e584b4b42abc73 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c M perl.c Log Message: ----------- XXX appears to be an existing bug need multiplicity for cur_locale obj SEE what is failing, maybe only non2008 nonsetlocale Commit: e34d656e762635dd8e9edd3813714de151dc0f33 https://github.com/Perl/perl5/commit/e34d656e762635dd8e9edd3813714de151dc0f33 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: debug with thread id Commit: b82ae84a4838a92e35de916709c2bc38221962b6 https://github.com/Perl/perl5/commit/b82ae84a4838a92e35de916709c2bc38221962b6 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M proto.h M util.c Log Message: ----------- XXX memlog Commit: 532dcb5eb4927c11ccfc66504031a2319153ba84 https://github.com/Perl/perl5/commit/532dcb5eb4927c11ccfc66504031a2319153ba84 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- XXX win workaround Commit: 0657dc4bda65c8598be2fedf56019afe5bd2b2fa https://github.com/Perl/perl5/commit/0657dc4bda65c8598be2fedf56019afe5bd2b2fa Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- just after XXX win workaround Commit: 394a7745ad40ed06f5f30deb811583d7e738dfcc https://github.com/Perl/perl5/commit/394a7745ad40ed06f5f30deb811583d7e738dfcc Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M lib/locale_threads.t M t/run/locale.t Log Message: ----------- locale_threads Commit: 9988441671bcae51280804b827f35cc60ab7d012 https://github.com/Perl/perl5/commit/9988441671bcae51280804b827f35cc60ab7d012 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M lib/locale_threads.t Log Message: ----------- XXX locale_threads.t: Add alarm Commit: 7baa7703a0f33c6d493f6a8253092c40d1810848 https://github.com/Perl/perl5/commit/7baa7703a0f33c6d493f6a8253092c40d1810848 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- perl.h: Debug locking Commit: b1342fada5879913378e8d1d833893c976e6bc8f https://github.com/Perl/perl5/commit/b1342fada5879913378e8d1d833893c976e6bc8f Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c M perl.h M t/run/switchDx.t Log Message: ----------- debug thread Commit: 265c1227bb58c318248aab3e0c76d3d226ef2818 https://github.com/Perl/perl5/commit/265c1227bb58c318248aab3e0c76d3d226ef2818 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M dist/threads/threads.xs M inline.h Log Message: ----------- threads.xs DEBUG_U Commit: e8ccdbafc59a534216baca73270641f1c402d332 https://github.com/Perl/perl5/commit/e8ccdbafc59a534216baca73270641f1c402d332 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M makedef.pl Log Message: ----------- XXX: UCRT mingw is not likely locale-thread safe In order for mingw to be locale-thread safe, it needs UCRT which current packages don't tend to have. But this commit adds a XXX -DUCRT Commit: 3a62e6d0636bea5fe237c51fe1e652fa569c9c9a https://github.com/Perl/perl5/commit/3a62e6d0636bea5fe237c51fe1e652fa569c9c9a Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/loc_tools.pl Log Message: ----------- loc_tools Commit: 951831cd35fcb72a1c4a29de355a32c12719a5a5 https://github.com/Perl/perl5/commit/951831cd35fcb72a1c4a29de355a32c12719a5a5 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/loc_tools.pl Log Message: ----------- XXX t/loc_tools.pl: Temp debug Commit: 143e4c6f93d99b360165457d70c1c3c887c51670 https://github.com/Perl/perl5/commit/143e4c6f93d99b360165457d70c1c3c887c51670 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- perl.h: define locale mutex under more cirumstances Prior to this commit, it wasn't defined if we aren't paying attention to locales; but that doesn't mean they don't exist, and the operations that affect them are still callable; so they should have a mutex to prevent one thread from overwriting another's. Commit: ded138e55c4c7a3032734b5b7c157d68eff23884 https://github.com/Perl/perl5/commit/ded138e55c4c7a3032734b5b7c157d68eff23884 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M makedef.pl M perl.h Log Message: ----------- perl.h: Also recognize -DNO_THREAD_SAFE_LOCALE It would be a reasonable Configure option to say -Accflags=-DNO_THREAD_SAFE_LOCALE Commit: 2c13be4f430439a3646dbc5770289e9ff5fe753f https://github.com/Perl/perl5/commit/2c13be4f430439a3646dbc5770289e9ff5fe753f Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: configthreadlocale() error checking The code previously just assumed the system call always worked. But it may not if the CRTL is wrong; this surfaced on a mingw compile. It's better to have it fail outright than to continue and silently give a wrong answer. Commit: e04d3929f208954ba8aa0f815d9a49df931452ba https://github.com/Perl/perl5/commit/e04d3929f208954ba8aa0f815d9a49df931452ba Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- perl.h: Turn mutex warning into a panic This was my attempt to keep going and try to recover after a problem was found: an unbalanced number of locks/unlocks. However, in looking at a many-million line execution trace, I realized that the recovery likely doesn't lead to correct results, and we should quit immediately when it happens. Commit: 8407d52d70bb07ce736fe53775848931a1a5d07b https://github.com/Perl/perl5/commit/8407d52d70bb07ce736fe53775848931a1a5d07b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- perl.h: White space, comments only Commit: 1cb358bb488d24c8300901f0720e266008e7c51f https://github.com/Perl/perl5/commit/1cb358bb488d24c8300901f0720e266008e7c51f Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- perl.h change lock debugging text Commit: bfb2c6354ccfb87c595c246ba080c39e095c3de0 https://github.com/Perl/perl5/commit/bfb2c6354ccfb87c595c246ba080c39e095c3de0 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/harness Log Message: ----------- XXX t/harness temp tweaks Commit: 482baca6a18d008b23057ede5bfd6719d9864afd https://github.com/Perl/perl5/commit/482baca6a18d008b23057ede5bfd6719d9864afd Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M pod/perllocale.pod Log Message: ----------- perllocale Xxx start of changes Commit: 0b8bf2533fed3f463ea155c165bd553bafa142c2 https://github.com/Perl/perl5/commit/0b8bf2533fed3f463ea155c165bd553bafa142c2 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M lib/locale_threads.t Log Message: ----------- XXX ruler lib/locale_threads.t Commit: ccf40605f69fd260f66988d9f3775e5ed926fca1 https://github.com/Perl/perl5/commit/ccf40605f69fd260f66988d9f3775e5ed926fca1 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M hints/freebsd.sh M hints/openbsd.sh Log Message: ----------- XXX try out bsd 2008 Commit: 6ac3477a682b664b0c21a44b9ca29af4a7483546 https://github.com/Perl/perl5/commit/6ac3477a682b664b0c21a44b9ca29af4a7483546 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M makedef.pl Log Message: ----------- makedef.pl: Don't use locale items unless using locale If we are configured to not look at locales at all, we shouldn't be looking at threaded locales nor POSIX 2008 ones. This commit fixes a situation that is not likely at all to show up in real life, but I stumbled across it in testing weird configurations. Commit: eecdf3fed268d7ef7ab0e9cc1bb4cbed9a55930b https://github.com/Perl/perl5/commit/eecdf3fed268d7ef7ab0e9cc1bb4cbed9a55930b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M makedef.pl Log Message: ----------- makedef.pl: Remove redundant set This ||= is useless, as just above we've already set MULTIPLICITY if USE_ITHREADS is set. Commit: 20cf254adbc4c5fc6236c60a47e50e619a71bfed https://github.com/Perl/perl5/commit/20cf254adbc4c5fc6236c60a47e50e619a71bfed Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M lib/locale.t Log Message: ----------- XXX temp: lib/locale.t: debug Commit: 33f7f79c82f79f395d5eeb9cfd04bc2b80653749 https://github.com/Perl/perl5/commit/33f7f79c82f79f395d5eeb9cfd04bc2b80653749 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M lib/locale.t Log Message: ----------- lib/locale.t FILE debug Commit: 0089b44c13032a39dc60641a749cf637d7afd54a https://github.com/Perl/perl5/commit/0089b44c13032a39dc60641a749cf637d7afd54a Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M lib/locale.t Log Message: ----------- lib/locale.t Commit: c6218e1ce3e767dfe67d4dd60d197577ce12f5ea https://github.com/Perl/perl5/commit/c6218e1ce3e767dfe67d4dd60d197577ce12f5ea Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M pod/perlhacktips.pod Log Message: ----------- XXX incomplete perlhacktips: Commit: 128c8ba108f0f8ffd151e081e9b86f159db40f38 https://github.com/Perl/perl5/commit/128c8ba108f0f8ffd151e081e9b86f159db40f38 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M handy.h Log Message: ----------- XXX cygwin debugging small macro buf Commit: 159e3f9810c395bafe4f1a0cdc68f6746c7e441a https://github.com/Perl/perl5/commit/159e3f9810c395bafe4f1a0cdc68f6746c7e441a Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M iperlsys.h Log Message: ----------- iperlsys.h: TODO need to look at adding mutexes Commit: 63991342243bd7695ec913b75a6dd06ef2f05934 https://github.com/Perl/perl5/commit/63991342243bd7695ec913b75a6dd06ef2f05934 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M regen/reentr.pl Log Message: ----------- reentr.pl: XXX about needing mutex Commit: 9526fe4f73ded83e4e1cd271ed8cfdedd551b037 https://github.com/Perl/perl5/commit/9526fe4f73ded83e4e1cd271ed8cfdedd551b037 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M regexec.c Log Message: ----------- regexec.c: XXX has cast to U8 for some reason Commit: c2d77164ee8c8d6149ebff8cad47765be00aa6ed https://github.com/Perl/perl5/commit/c2d77164ee8c8d6149ebff8cad47765be00aa6ed Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M sv.c Log Message: ----------- perlapi: Combine sv_eq(), sv_eq_flags() entries Commit: cc05f657a2abff2d9adb3501772b7baca3df762c https://github.com/Perl/perl5/commit/cc05f657a2abff2d9adb3501772b7baca3df762c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M dist/ExtUtils-ParseXS/lib/perlxs.pod M t/porting/known_pod_issues.dat Log Message: ----------- perlxs Commit: 98420c9d52f26b53ea03adcd44ad7d60780683af https://github.com/Perl/perl5/commit/98420c9d52f26b53ea03adcd44ad7d60780683af Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M dist/IO/IO.xs Log Message: ----------- XXX check if using ppport IO.xs: Remove fallback code furnished by ppport Commit: cd0b39ad214136ccf1fbd7325fe519a171d3503a https://github.com/Perl/perl5/commit/cd0b39ad214136ccf1fbd7325fe519a171d3503a Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M pp.c Log Message: ----------- Debug Windows memory usage in pp_study Commit: be3afd7d6ea5578f4e9fb9aeb7674d1fa758ac3c https://github.com/Perl/perl5/commit/be3afd7d6ea5578f4e9fb9aeb7674d1fa758ac3c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M pod/perlmod.pod Log Message: ----------- perlmod Commit: 2e1cd978b1336a7002d4411f042ec3b92c92d153 https://github.com/Perl/perl5/commit/2e1cd978b1336a7002d4411f042ec3b92c92d153 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- XXX perl.h: Debugging mutex lock' Commit: dc99856263cf05658bfdfe8a3d97757f4146bb57 https://github.com/Perl/perl5/commit/dc99856263cf05658bfdfe8a3d97757f4146bb57 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Rename S_calculate_LC_ALL_string() Its return is a string. Add the suffix '_string' to emphasize that Commit: 254ebaac08bd908ff59feabb9e714942365c1ca1 https://github.com/Perl/perl5/commit/254ebaac08bd908ff59feabb9e714942365c1ca1 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M cpan/version/t/07locale.t Log Message: ----------- 07locale.t: Add some Windows locales to try On various windows machines, none of the locales listed in <DATA> exist. This commit copies ones from core's loc_tools.pl to give additional possibilities to try Commit: 5dfd7e93e7f721dcfce5d437fe4b85857fa38dd0 https://github.com/Perl/perl5/commit/5dfd7e93e7f721dcfce5d437fe4b85857fa38dd0 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Use proper macro querylocale_c() likely will expand to the correct thing, but it isn't defined until higher in the stack of locale handling layers. Instead use the construct that is lower in the stack. Commit: 7fe542560d376901323acfbcd131d4ec574a35da https://github.com/Perl/perl5/commit/7fe542560d376901323acfbcd131d4ec574a35da Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Move some static functions within file This places them more conveniently. Future commits will continue this reordering until like-level and like-kind functions are close to each other physically in the file. Commit: b5dc8489f7136f976d72813933ccea1c46840c73 https://github.com/Perl/perl5/commit/b5dc8489f7136f976d72813933ccea1c46840c73 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Replace an assumption by a cpp check This commit adds a preprocessor directive to check if we are running on a POSIX 2008 system, rather than just assume we are if the earlier possibilities weren't the case. And it causes a compile time error if none pan out. Commit: 6df15795874bd107cae86ad2055de0c2c0459ba1 https://github.com/Perl/perl5/commit/6df15795874bd107cae86ad2055de0c2c0459ba1 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Don't compile without LC_ALL under POSIX 2008 The code assumes that if you have POSIX 2008, you have LC_ALL. This adds a compile-time error check to prevent someone from finding that out the harder way. Commit: f8bde6ce364023bdc261e2e42da2026ee3b8c2ef https://github.com/Perl/perl5/commit/f8bde6ce364023bdc261e2e42da2026ee3b8c2ef Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Move a parallel array adjacent to its mates This is in preparation for making their parallelism more obvious Commit: d93750c2585588aea0888a2b993f0abe539dfe88 https://github.com/Perl/perl5/commit/d93750c2585588aea0888a2b993f0abe539dfe88 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M proto.h Log Message: ----------- locale.c: Add warning if function return ignored Commit: 1f0c268a8a29a4c1de5042fcd6bbdb2c030cc9e9 https://github.com/Perl/perl5/commit/1f0c268a8a29a4c1de5042fcd6bbdb2c030cc9e9 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Properly identify reason for placeholder in arrays This is needed to handle the case where a locale category passed in (via Perl_setlocale) is unknown to perl, hence is considered illegal. The previous comments were misleading. Commit: e21756127a5f788d127aa1014055e3a8a1555a94 https://github.com/Perl/perl5/commit/e21756127a5f788d127aa1014055e3a8a1555a94 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M locale.c M proto.h Log Message: ----------- Change return of S_get_category_index_nowarn This is in preparation for it being called from more than a single place. Instead of returning -1 on error, it returns an out-of-bounds value 1 greater than the largest legal value. There is a placeholder entry in all the arrays this can be indexed into for that illegal value. This means if it somehow gets used, we wont get a segfault, like we would on the -1, but instead a value that will show up as wrong, but not crash. Commit: 4d1d286e17dc42c164f2b7d5693118720aaaad3e https://github.com/Perl/perl5/commit/4d1d286e17dc42c164f2b7d5693118720aaaad3e Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M ext/XS-APItest/t/locale.t M locale.c Log Message: ----------- locale.c: Check for illegal input category It is possible for Perl_setlocale() to be called with a category value that is illegal, or is just unknown to us. There is a function that maps category numbers into our internal indexing scheme. It maps any unknown value to the same index, larger than any legal one. Prior to this commit, there was no check that the input was valid; we went off processing it as if it were valid. That there was an element in the tables that corresponds to this index prevented any illegal memory acceses, but it is better to check early and return an error. Commit: 271374c161019a86e847d0d11fba9a47099c20c2 https://github.com/Perl/perl5/commit/271374c161019a86e847d0d11fba9a47099c20c2 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Revamp initialization of parallel arrays This new method eliminates a lot of #ifdef's in each of the array initializations, consolidating all the array entries for a category to be in a single group. This facilitates ease of checking that things are correct and the addition of new items. A Factory pattern to generate all these could be used instead. But I don't know how to do that in cpp (I suppose some recursive #includes would do it uglily), and I don't think it's worth it to do a regen script. There is a reason for the apparently weird indentation, that future commits will reveal. Commit: 7b4267340dce1bcbcb8e5b56fc0227be1b249e86 https://github.com/Perl/perl5/commit/7b4267340dce1bcbcb8e5b56fc0227be1b249e86 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c M perl.h Log Message: ----------- Rename SETLOCALE_LOCK to LOCALE_LOCK This mutex isn't just about the setlocale function; it applies to all locale related critical sections. Commit: a8c6496e1635dcc977306329c955a28bdc4e58c9 https://github.com/Perl/perl5/commit/a8c6496e1635dcc977306329c955a28bdc4e58c9 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Avoid runtime strlen() calls The lengths of these strings are known at compile time. This commit creates an array of those lengths to avoid calling strlen() in a loop unnecessarily. Commit: 1db5b9d23c1744f6faa2893592634b85516018e3 https://github.com/Perl/perl5/commit/1db5b9d23c1744f6faa2893592634b85516018e3 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Replace loop with a switch() locale.c uses tables to specify data and actions about the different locale categories on the system. The categories are opaque integers specified by libc, so they have to be mapped to indices into the tables for our use. Prior to this commit, that was done by a loop iterating over each possibility until it found a match. This commit changes that to use a switch() statement, so that the compiler can choose what the best way to implement things are. Commit: 6e326828156793394e4f6c52a079e76776dde3f9 https://github.com/Perl/perl5/commit/6e326828156793394e4f6c52a079e76776dde3f9 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Refactor S_get_category_index() There is actually only one place where the locale category can be input from code outside this file. Now that the previous commit added validation to that one spot, The rest of the calls should already be validated, and if the input is bad, it means that there is a serious error in the logic of this code, and warrants panicking. This commit collapses two functions into one plus a macro to call it with the right parameters. It moves the warning into the one place where it is useful, and panics if there is a problem otherwise. Commit: 72d9af9439df393a0f3dee5e489ece27144cf418 https://github.com/Perl/perl5/commit/72d9af9439df393a0f3dee5e489ece27144cf418 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c M makedef.pl M perl.h Log Message: ----------- XXXleaks: Remove PL_cur_LC_ALL for non-Windows This value is now held in a slot in PL_curlocales[] for non-Windows platforms. Commit: e2d2527a9ead97ebf65649cc798320785054457c https://github.com/Perl/perl5/commit/e2d2527a9ead97ebf65649cc798320785054457c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Rename S_myquerylocale_i() This name doesn't effectively describe it. The new name is querylocale_2008_i, indicating it is for the POSIX 2008 API. Commit: 8565e4c9f3727b9dc5d70652b879436b09ff265b https://github.com/Perl/perl5/commit/8565e4c9f3727b9dc5d70652b879436b09ff265b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Separate setlocale into bool and query There are two ways that POSIX specifies to change the locale. The earlier interface is setlocale(), which either returns NULL on failure, or a pointer to global static memory containing the character string of the changed locale. That may very well be the input locale name, or the platform can return something that to it is equivalent. The second, from the 2008 standard, is newlocale() which returns either NULL on failure or a pointer to an opaque object, and there is no official way to find out what the current locale is. (The next proposed version of the Standard will finally add this capability.) Some platforms have introduced a querylocale() to get this information. (glibc has a hidden function to do so.) Note that the return value of setlocale() is problematic, valid only until the next call to that function, which might be immediately from another thread. The value, if needed, has to be saved to a per-thread buffer in a critical section with the function call. That buffer presents opportunities for leaking or being destroyed too early, resulting in heap use after being freed. And it turns out that the value is often not needed; often what is needed is only if the operation failed or succeeded. This commit starts the process of limiting the use of the changed value to just where its really needed. It does this by changing the newlocale() form to return success/failure, removing all the macros that think you can set and get the value in the same operation, and minor fixups. Commit: 8b7c50b0b808aa29d935fea38449d078c5fc2cdb https://github.com/Perl/perl5/commit/8b7c50b0b808aa29d935fea38449d078c5fc2cdb Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Rmv less_dicey_void_setlocale_r() This function is simple, but almost entirely redundant with less_dicey_bool_setlocale_r(). A simple wrapper to the latter suffices. The commit also changes the macros for this to use void_setlocale_r() as the base which the other two are defined in terms of. This avoids a runtime calculation of the internal index corresponding to the input locale category except when we are about to panic. Commit: 5735a8f353dd062d3ffc40f2ded4d924cb22d90d https://github.com/Perl/perl5/commit/5735a8f353dd062d3ffc40f2ded4d924cb22d90d Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Avoid a runtime calculation As in the previous commit, this rewrites the void_setlocale_X macros so as to not need a runtime calculation except in the very rare event of executing a panic. Commit: 2b42f6ea9609c435d0a26d17dec5633fc5c94059 https://github.com/Perl/perl5/commit/2b42f6ea9609c435d0a26d17dec5633fc5c94059 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Add missing panic In just the POSIX 2008 implementation of setting locales, the panic upon failure had been omitted. The whole point of a void call is so that the caller doesn't have to check the return code of something that should never fail, and can just assume that if it gets to the next statement everything worked as expected. Commit: 4e430dbf250e9d691299cf0a2c634b27d27722ec https://github.com/Perl/perl5/commit/4e430dbf250e9d691299cf0a2c634b27d27722ec Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Reorder code, add comments There are three separate implementations of an internal API for locale handling. This commit makes them stand out in the code, and makes the ordering within each implementation parallel to the other implementations. And adds explanatory comments. Commit: 16fb36469bf286862bf6287ac2803d5e593bf5f6 https://github.com/Perl/perl5/commit/16fb36469bf286862bf6287ac2803d5e593bf5f6 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Remove one-off macro This was used to prevent an unnecessary copy. But the next commit will change the macro it was avoiding to not always do the copy. That will avoid more copies than this would. The copy that results will still be unnecessary in some cases, but there is a net gain. Commit: 09c2f03100dc4d937efd692d3fa53d9ab33ba950 https://github.com/Perl/perl5/commit/09c2f03100dc4d937efd692d3fa53d9ab33ba950 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Add a convenience macro query_nominal_locale_i This is used when the locale needs to be what an external caller would see. Adding this simplifies some code. Commit: 602b03a91200548f6fd26278a4983e9ed03f8ef8 https://github.com/Perl/perl5/commit/602b03a91200548f6fd26278a4983e9ed03f8ef8 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Move copy from macro to called function Not all returns from the function need to be copied. Thus this eliminates some extraneous copies. Commit: 23b222e441904bcfa465c5be7f174fb4951dba51 https://github.com/Perl/perl5/commit/23b222e441904bcfa465c5be7f174fb4951dba51 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_toggle_locale_i: Move some assert()s, initialization Commit: 13ae8e8da5a246f35e4afaab185e0511569467a6 https://github.com/Perl/perl5/commit/13ae8e8da5a246f35e4afaab185e0511569467a6 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M perl.h M proto.h Log Message: ----------- locale.c: Add extra debug info to panics This commit adds some call stack information to the message that gets output when about to panic because of an unanticipated failure in the locale handling code. Commit: e1b211afee395f23c54ee069c161b014de3ccd26 https://github.com/Perl/perl5/commit/e1b211afee395f23c54ee069c161b014de3ccd26 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Add void_setlocale_with_caller macros These pass a file and line number of further up the calling stack to a panic so as to improve debugging information. Commit: f42b1d43bb0c32083d22306fb097b6af00bad8c5 https://github.com/Perl/perl5/commit/f42b1d43bb0c32083d22306fb097b6af00bad8c5 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Initialize PL_curlocales at startup Previously this was done later, which meant other code had to take them being uninitialized into consideration over and over at runtime. That code is hereby removed. This commit enables further simplifications to follow in later commits. Commit: 3e275bce80c7821b52c2b447e9b43717c8d2190a https://github.com/Perl/perl5/commit/3e275bce80c7821b52c2b447e9b43717c8d2190a Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Use void_ macro form when ignoring return The void_ form panics if unsuccessful; and here we are relying on it being successful. Commit: ca5a025054f9f51719b199178a48b37316c903af https://github.com/Perl/perl5/commit/ca5a025054f9f51719b199178a48b37316c903af Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Don't exclude LC_ALL in loop This function was setting each individual locale category to the same value. But if all the subcomponents are the same, so is LC_ALL. No need to special case it Commit: 9ea1847eab3ac27de50a85c4158956f71f61e292 https://github.com/Perl/perl5/commit/9ea1847eab3ac27de50a85c4158956f71f61e292 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M locale.c M proto.h Log Message: ----------- locale.c: Change function to return void It just returns the input value unchanged; this is a no-op. Commit: d6bab4b44f486854a68ad032520b7a4e6f06f5db https://github.com/Perl/perl5/commit/d6bab4b44f486854a68ad032520b7a4e6f06f5db Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M perl.h M proto.h Log Message: ----------- locale.c: Remove no-longer needed parameter and computation When a locale category changes, LC_ALL necessarily also does. When we are looping changing a bunch of categories, LC_ALL's intermediate values are of no importance; only the final value matters. Prior to this commit, this was handled by setting a flag to not do the recalculation until the final loop iteration. But a more elegant solution is to not recalculate it all, until the value is actually needed. So the code is changed to invalidate the stored value if an individual locale category changes, and then do the calculation only when needed and invalidated. Commit: 40f7c90f0ff3b09a027bee9d7e40ef299a59794f https://github.com/Perl/perl5/commit/40f7c90f0ff3b09a027bee9d7e40ef299a59794f Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M locale.c M proto.h Log Message: ----------- locale.c: Change parameter name for static function category_locales_list is somewhat more descriptive than individ_locales Commit: e8d71b9884e654d8ccb6f898c1bd3e4225c22a34 https://github.com/Perl/perl5/commit/e8d71b9884e654d8ccb6f898c1bd3e4225c22a34 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Change API of S_calculate_LC_ALL_string This function looks at all the individual locale categories on the system. So far it is called with either an array of the current values for them, or an object from which those values can be derived. But the object is always the current locale object in effect. The querylocale_i() macro can be used to get this information without needing to have to name the object. Therefore the object parameter is superfluous, and the function could be notified to use querylocale_i by making the array parameter NULL. But right now you get one or the other. There are two signatures to this function, depending on the platform capabilities. This commit collapses those into one signature, the one with an array parameter. And then NULL is used to trigger calling querylocale_i(). The reason to do this is that future commits will want to pass an array to this function, even when it is compiled on a platform that currently doesn't allow that option. Commit: dcdcbfca8aeca687c3db5feae245295edbfd55bd https://github.com/Perl/perl5/commit/dcdcbfca8aeca687c3db5feae245295edbfd55bd Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Simplify S_get_LC_ALL_display The previous enhancements to calculate_LC_ALL_string means this function can just call it without having to loop itself. Commit: 35d9a5e9cb18529b7ab98a2ea623131aef11c587 https://github.com/Perl/perl5/commit/35d9a5e9cb18529b7ab98a2ea623131aef11c587 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Slight refactoring of S_querylocale_2008_i This just moves some asserts, adds comments and a branch prediction, and replaces a variable used in only one place by it value. Commit: 557a7495a3ef989c3373c220a8496489eb0ba9fc https://github.com/Perl/perl5/commit/557a7495a3ef989c3373c220a8496489eb0ba9fc Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Shortcut common case When using the POSIX 2008 locale interface, perl keeps (for the entire lifetime of the process) an object for when all locale categories are in the C locale. So, if someone queries the current locale, and the C object is the one in effect, the locale must be C, and we can return C immediately. This has the salubrious effect of hiding from perl bugs on some *BSD-related platforms. A link to a ticket to FREEBSD is in one of the comment lines of this commit. Commit: 4cebd4c612ffc70f9ecb6749eb8421afba47b2e8 https://github.com/Perl/perl5/commit/4cebd4c612ffc70f9ecb6749eb8421afba47b2e8 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Reorder #if clauses Currently, the two clauses are about the same length, but in the next commit the current first clause will become a lot longer. The principal that it's easier to read code that disposes of the easy cases first comes into play, so, reverse the clause order. Commit: 07f5f220ee1e44646fd5407cbd561f54513db234 https://github.com/Perl/perl5/commit/07f5f220ee1e44646fd5407cbd561f54513db234 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Inline only remaining use of querylocale_l() Future commits would make this macro need to be a function anyway, and since there is only one use of it, just inline it. The assertion it defines is no longer needed, as we know that the one place it is now placed is valid. This also adds explanatory comments Commit: 881fc8b24fbfc9e4d6b8e8b56124cd5b1bc0ddec https://github.com/Perl/perl5/commit/881fc8b24fbfc9e4d6b8e8b56124cd5b1bc0ddec Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Flatten two nested if's These can be combined into a single more cohesive construct Commit: ed279896756f5a6e355eea2fb1af13b3bd896b25 https://github.com/Perl/perl5/commit/ed279896756f5a6e355eea2fb1af13b3bd896b25 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Move a #define, and add a comment Commit: 1c873992310bacca40a1300a9140479e87f5056e https://github.com/Perl/perl5/commit/1c873992310bacca40a1300a9140479e87f5056e Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- XXX try reverting: locale.c: Lock around querylocale See what passes Commit: d8ab9615f20da80f5ccf594a71836cd3732f4e7f https://github.com/Perl/perl5/commit/d8ab9615f20da80f5ccf594a71836cd3732f4e7f Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- Revert "XXX try reverting: locale.c: Lock around querylocale" This reverts commit 899565f1db40eb12fba5733b20cd63362d7e5b5f. Commit: 761d887c34a8c0d339654a7aba4d05b2ef41a7f0 https://github.com/Perl/perl5/commit/761d887c34a8c0d339654a7aba4d05b2ef41a7f0 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M perl.h M proto.h Log Message: ----------- locale.c: Split up S_setlocale_from_aggregate_LC_ALL This splits out the parsing of the LC_ALL string from the locale setting. Future commits will use the parse portion in more places. The new code doesn't panic on syntax errors, unlike the old. This is because we should never panic on user input, but return failure instead. Commit: 161cb89dc6bce77c14357f8e3f73da9eccda67f6 https://github.com/Perl/perl5/commit/161cb89dc6bce77c14357f8e3f73da9eccda67f6 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Create is_disparate_LC_ALL() This macro uses the results of the new Configure probe that tells us how the platform represents disparate LC_ALL strings. Commit: 90305b418e8d4d061d5348c52923702e6cc8e143 https://github.com/Perl/perl5/commit/90305b418e8d4d061d5348c52923702e6cc8e143 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Move two helper functions for POSIX 2008 implementation Commit: 80387ae0f75efa630d259c00b4e6863f9a6ab9e1 https://github.com/Perl/perl5/commit/80387ae0f75efa630d259c00b4e6863f9a6ab9e1 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M perl.h M proto.h Log Message: ----------- Add development aid for simulating LC_ALL fake positional notation There are two ways that systems represent LC_ALL when not all individual categories are in the same locale. One is category_name=value pairs, and the other is a positional notation cat1_value|cat2_value|cat3_value|... where the separator (here '|') varies between platforms, and the position of a value determines which category it applies to. This commit adds the ability to simulate a positional box on a name=value box, so that many bugs can be found without having to access a real positional box. Commit: 90730ac68a166d752f77e0963004b130e305e58e https://github.com/Perl/perl5/commit/90730ac68a166d752f77e0963004b130e305e58e Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Add support for LC_ALL positional notation Some platforms use a positional notatiol for LC_ALL when not all categories are the same, like C/English/C.UTF-8/ ... This commit takes advantage of the new Configure probe to now handle those when parsing an LC_ALL string. Commit: 357ce64549e4761ac2270e081d89285125a37372 https://github.com/Perl/perl5/commit/357ce64549e4761ac2270e081d89285125a37372 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: use variable to avoid extra comparisons The mnemonic name also makes it clearer. Instead of comparing two variables multiple times, set a boolean once with the result, and use that. Commit: bfc55491a3d127d3347a6e00f454bd33a73f8392 https://github.com/Perl/perl5/commit/bfc55491a3d127d3347a6e00f454bd33a73f8392 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Windows Use .ACP for sys default fallback Prior to this commit the locale handling code thought that Windows used "" for the system default locale. But it's not, and to get to the change in the initialization code, the "" had already been tried and failed. Commit: 0bd3943808f968a667ff5864ca98fd93036e98b8 https://github.com/Perl/perl5/commit/0bd3943808f968a667ff5864ca98fd93036e98b8 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c M perl.h Log Message: ----------- locale.c, perl.h: comments, white space Commit: 71f0d9c10c7301991ba64597fa3fccad480c7af5 https://github.com/Perl/perl5/commit/71f0d9c10c7301991ba64597fa3fccad480c7af5 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- XXX maybe not for windows: S_calculate_LC_ALL_string(): save value after calculation On some platforms the string returned by this function also needs to be kept up-to-date in an array element. This commit changes the function to do the update (after the potentially expensive calculation) as a side-effect, so as to avoid unnecessary recalculations. Commit: c016eae45b34442d56066b1cb26cb75b2b2347c7 https://github.com/Perl/perl5/commit/c016eae45b34442d56066b1cb26cb75b2b2347c7 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Precalculate LC_ALL string boiler plate length When not all categories have the same locale, the internal representation of LC_ALL is a sequence of 'cat=value' pairs, separated by semi-colons. The only things that vary are the values. This commit sums up the non-varying portions at compile time. Commit: f4e08f1ed2e5298e7bdf99f4a1b878b2a342e643 https://github.com/Perl/perl5/commit/f4e08f1ed2e5298e7bdf99f4a1b878b2a342e643 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- S_querylocale_2008_i: Add caller's line# param This will be helpful in debugging Commit: ff49828854275ea50f947c15b44697061458f322 https://github.com/Perl/perl5/commit/ff49828854275ea50f947c15b44697061458f322 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M perl.h M proto.h Log Message: ----------- locale.c: Calculate native LC_ALL strings There are two methods of representing non-uniform LC_ALL strings. One is name=value pairs, and the other is positional. Now that there is a Configure probe that detects the details, calculate_LC_ALL_string() is here enhanced to have a parameter passed to it as to which variety the output should be in, and to generate the proper format. Commit: 27f4ad85c152b00c6912a5a65bdf46005298093d https://github.com/Perl/perl5/commit/27f4ad85c152b00c6912a5a65bdf46005298093d Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Revamp S_stdize_locale() We are now able to parse and construct non-uniform LC_ALL strings. A big part of this function was trying to deal with these, but now that can be farmed out. It's now extremely unlikely this function will now actually change anything, based on recent field experience. To save copying that therefore won't likely ever be needed, this function now returns its input if unchanged, and a mortalized copy if it unlikely does need to be changed. That means it no longer needs a buffer reserved for it. The input is going to be the static global buffer pointed to by the return of setlocale(). That means calls to this function need to be protected by mutexes in threaded systems, and the result safely copied during the critical section. This requirement is unchanged by this commit. Commit: b26ad0ceb5ee11f0665a521186c8d8d3f16b2fc8 https://github.com/Perl/perl5/commit/b26ad0ceb5ee11f0665a521186c8d8d3f16b2fc8 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embedvar.h M intrpvar.h M locale.c M makedef.pl M perl.c M sv.c Log Message: ----------- Rename the buffer in S_less_dicey_locale It was reusing the buffer formerly used by S_stdize_locale(), but now its only use is from this function, so name it accordingly. Commit: 070085d8221b5359966353c72ab03dc509d086a8 https://github.com/Perl/perl5/commit/070085d8221b5359966353c72ab03dc509d086a8 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_stdize_locale() Rmv testing for spurious '=' This code had been added to counteract occasional cases of improper syntax in a locale string. Other fixes to the locale handling have resulted in those cases not now showing up. It was never clear if the changes that code made to the locale name were actually the right thing to do. Now, we have the ability to correctly parse locale strings on all platforms tested on. If there is a problem with a platform, the parsing discovers it and returns an error, which stdize_locale() checks for and also returns an error if found, and so on back up the line to the user calling code. Commit: 46b15bce1d4a9897043ce295f0b84b6e2ed1c5e2 https://github.com/Perl/perl5/commit/46b15bce1d4a9897043ce295f0b84b6e2ed1c5e2 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M hints/aix.sh M locale.c M proto.h Log Message: ----------- XXX perldelta other pod: Compile stdize_setlocale() only if requested XXX perldelta, and where else? This very old function has been whittled down to just looking for newlines in returned locales. Those just haven't come up in platforms we have tested on in recent years. Therefore, this is extra work on most, or perhaps all platforms. Should a platform show that this is still needed, its hints file can be changed to add a Configure option. Commit: 352372798f99b8e0f1b90b2d01bddfd0f00e047c https://github.com/Perl/perl5/commit/352372798f99b8e0f1b90b2d01bddfd0f00e047c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- Properly handle broken setlocale(LC_ALL, NULL) Early AIX versions could return a truncated value in this case. https://www.ibm.com/support/pages/apar/IV22097 Tests were skipped as a result by 59b4d2932ceb16662879bca2a22315c3597276ae. This commit adds an easy workaround for this bug, changes the AIX hints page to enable it; the next commit will revert the test skipping. Commit: 941f9bccb2938b0155bcccbd5fc1810f4e68d22c https://github.com/Perl/perl5/commit/941f9bccb2938b0155bcccbd5fc1810f4e68d22c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M lib/locale.t M t/lib/warnings/regexec M t/run/locale.t Log Message: ----------- Revert "AIX: skip some locale tests" This reverts commit 59b4d2932ceb16662879bca2a22315c3597276ae. which was a temporary fix for 5.38.0. And now a workaround is in place for the defective libc implementation. Commit: a5a0a5530d368609cb6f1f83cd284155fc916346 https://github.com/Perl/perl5/commit/a5a0a5530d368609cb6f1f83cd284155fc916346 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Create STDIZED_SETLOCALE_LOCK Its best to use a mutex associated with the operation. This creates one for stdized_setlocale(), which is just an alias for another mutex. Commit: fffcc2babee3867380eb21325ac7725f4e26258d https://github.com/Perl/perl5/commit/fffcc2babee3867380eb21325ac7725f4e26258d Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Move a macro definition earlier in the file Commit: 2e8f57fc7eb9355fd79490922ce54d45d8a9f66b https://github.com/Perl/perl5/commit/2e8f57fc7eb9355fd79490922ce54d45d8a9f66b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Change DEBUG statements to include non-0 errno This is very helpful when things go wrong. Commit: ad52b8108126d7be6964ca023340b5c34b9aea5e https://github.com/Perl/perl5/commit/ad52b8108126d7be6964ca023340b5c34b9aea5e Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Only define string constant on platforms that need it Commit: e6f9b6170ba7782677d2eb71e24f373c7aca4375 https://github.com/Perl/perl5/commit/e6f9b6170ba7782677d2eb71e24f373c7aca4375 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- Perl_sync_locale(): Best to change to global locale This didn't actually cause a bug AFAIK, but prior to this commit, the comment was wrong. The comment makes sense, so bring the code into compliance. The reason it was not a bug is that even though the thread remained in the per-thread locale, it uses the global locale API to set things. Commit: c38d8f8b5bb22230d06f4ca99c62d666853c98ec https://github.com/Perl/perl5/commit/c38d8f8b5bb22230d06f4ca99c62d666853c98ec Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c(): Use LC_ALL if available Now that we have code that works on platforms with differing ways of representing LC_ALL, we can use it instead of looping through all the subcomponents. Commit: 18ef27735f64902ced08c9676492631c4a2a635d https://github.com/Perl/perl5/commit/18ef27735f64902ced08c9676492631c4a2a635d Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Extract code into a function This is in preparation for a future commit where it will be called from more than one place. Commit: 3a8e25aa76e942ddb5ecd814b08b734893f48cfe https://github.com/Perl/perl5/commit/3a8e25aa76e942ddb5ecd814b08b734893f48cfe Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Extract code into separate function This is in preparation for it being called from a second location in a future commit. Beyond the move, the only changes are to white space, and a PERL_UNUSED_ARG. Commit: 8cf63ec0c92a48a026090d4cce8eded1e4272f6c https://github.com/Perl/perl5/commit/8cf63ec0c92a48a026090d4cce8eded1e4272f6c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Complement initialization of boolean This was my attempt to make the difference listing in the next commit smaller, but it didn't help much. Commit: 79a06d3554b5cf7e951746199f261c6b31ca3268 https://github.com/Perl/perl5/commit/79a06d3554b5cf7e951746199f261c6b31ca3268 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Rework locale initialization loop The previous code was always hard to understand, with a self-modifying loop. I finally figured out a clearer way to do it, by using an enum with all the possibilities, and a switch statement that sets up the loop for each, or decides this possibility isn't valid on this platform. The first possibility that works exits the loop. Commit: f50bcf3e7b84c8d5edabfee2b89f19eefa35a745 https://github.com/Perl/perl5/commit/f50bcf3e7b84c8d5edabfee2b89f19eefa35a745 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- f Commit: ae95650a3683982c4aa51e6d144f4d22e6e1e9e6 https://github.com/Perl/perl5/commit/ae95650a3683982c4aa51e6d144f4d22e6e1e9e6 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Rmv redundant sanity check This was done only on Windows, to verify that the perl was operating on a system that has a working _configthreadlocale(), when our Configure expects it to. But the previous commit now executes this function anyway at the endif of initialization, so that is soon enough to fail if something is wrong, making this redundant. Commit: 1e5eab5f8c099249a2edc90a475831489b96bf33 https://github.com/Perl/perl5/commit/1e5eab5f8c099249a2edc90a475831489b96bf33 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M utf8.h Log Message: ----------- silence utf8.h warning Commit: af2c22a2b96bb15c4870f63961a508ef9a065437 https://github.com/Perl/perl5/commit/af2c22a2b96bb15c4870f63961a508ef9a065437 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Extract code into a macro This is in preparation for a simplification in future commits. Commit: 3e49595356a2bd669ef075c62ba10f1ac14842a2 https://github.com/Perl/perl5/commit/3e49595356a2bd669ef075c62ba10f1ac14842a2 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Extend macro from previous commit Actually this creates a macro of the same name that accomplishes the same thing, but specifically for Windows. Commit: 93877a2ff125a37c4e491ba9df66623f17b20a6b https://github.com/Perl/perl5/commit/93877a2ff125a37c4e491ba9df66623f17b20a6b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Don't over allocate array This previously added an extraneous unused element. Commit: c7f42e672b025f7afde14035979af51754dbde71 https://github.com/Perl/perl5/commit/c7f42e672b025f7afde14035979af51754dbde71 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Bring declaration inside #if's This would now cause a compilation error if the code gets screwed up. Commit: d74d40f5e2a6d9f28c07f77d75d089d09511a533 https://github.com/Perl/perl5/commit/d74d40f5e2a6d9f28c07f77d75d089d09511a533 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Slight refactor of switch_to_global_locale() Now that we can better handle any legal LC_ALL string, we can just use LC_ALL when available. Commit: 514dfa4eb8bfcd3556ced86c8150ef312d72407b https://github.com/Perl/perl5/commit/514dfa4eb8bfcd3556ced86c8150ef312d72407b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M proto.h M utf8.c Log Message: ----------- Perl__byte_dump_string(): Properly handle NULL input Instead of an assert, this returns (nil) and things can proceed. Commit: a39496ecc1e958e20992637c6c2fd8b5702cc39b https://github.com/Perl/perl5/commit/a39496ecc1e958e20992637c6c2fd8b5702cc39b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Combine two condiionals to rm special case The case removed is handled transparently below. Commit: 23e357e0d4e53caaa6635c662e5d97094483a846 https://github.com/Perl/perl5/commit/23e357e0d4e53caaa6635c662e5d97094483a846 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_find_locale_from_environment(): Change var name This variable is really the LANG environment variable; change its name to correspond. Commit: 8d382c4c9dae3757c6f780171dd56e7e54350707 https://github.com/Perl/perl5/commit/8d382c4c9dae3757c6f780171dd56e7e54350707 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_find_locale_from_environment(): Add comments Commit: a69fc8b73b2c22dd66eba500f422e3bc339c4a45 https://github.com/Perl/perl5/commit/a69fc8b73b2c22dd66eba500f422e3bc339c4a45 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_find_locale_from_environment(): Combine logic Prior to this commit, the logic was repeated for non-LC_ALL versus LC_ALL; the latter being executed in a loop. The logic is not really trivial and it would be better to have just one instance, so that it can't get out-of-sync. To do this, this commit moves everything to the loop, but sets it up for the non-LC_ALL case to just do a single iteration. It also avoids going out to the environment and fetching LANG unless needed. The previous behavior got LANG unconditionally if the loop was used. It is quite likely that not every locale category would have a corresponding environment variable set, so that fetch likely wasn't wasted. But in order to combine things, the checking for LANG is done in the loop. The bottom line is that there is extra code required to combine the two pieces of logic, but I believe the combining of this into a single paradigm is worth it. Commit: e9f805b333d9b5bea6181af30a59f39e165f1a07 https://github.com/Perl/perl5/commit/e9f805b333d9b5bea6181af30a59f39e165f1a07 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- XXX tests; linux doesn't allow this:S_find_locale_from_environment: Handle disparate LC_ALL Prior to this commit, it was possible on some platforms to improperly set a locale category from a locale of "". Consider: export LC_ALL="LC_CTYPE=de_DE;LC_NUMERIC=C;LC_TIME=de_DE;..." and in Perl run with that environment: print POSIX::setlocale(LC_NUMERIC, ""); Commit: 18735002dee41e71b61e16a5580213cb5741ff7b https://github.com/Perl/perl5/commit/18735002dee41e71b61e16a5580213cb5741ff7b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M locale.c M proto.h Log Message: ----------- Change parameter name for S_bool_setlocale_2008_i THe new name is more descriptive Commit: d318ea9407ef9783769c85a147513d707da43e7b https://github.com/Perl/perl5/commit/d318ea9407ef9783769c85a147513d707da43e7b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_bool_setlocale_2008_i: Improve debug statements Commit: afcd5b7dd06efaa84d2b81f2c3e1dd9b06021186 https://github.com/Perl/perl5/commit/afcd5b7dd06efaa84d2b81f2c3e1dd9b06021186 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_bool_setlocale_2008_i: Check for failure return Previously, this would forge ahead; looking at the code it seems it would fail later on anyway, but it is best to check and fail immediately. Commit: e5b68e8fe6ddb3641b27a169612535e89a56d30c https://github.com/Perl/perl5/commit/e5b68e8fe6ddb3641b27a169612535e89a56d30c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_bool_setlocale_2008_i: Separate out failure code This causes the failure to be handled by going to effectively a tail-call spot. This is in preparation for it being used in another place. Commit: 2fb53d6fde219665e43d9f831ed8053277ebbfa1 https://github.com/Perl/perl5/commit/2fb53d6fde219665e43d9f831ed8053277ebbfa1 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Move declaration closer to first use Commit: 5252755fb9dc4c9c6a27843731a6d3c6621a9e3f https://github.com/Perl/perl5/commit/5252755fb9dc4c9c6a27843731a6d3c6621a9e3f Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Extract two debug statements into macros This is in preparation for them being called from other places Commit: a2f161fdb473691956e291a6182c39ad7103176f https://github.com/Perl/perl5/commit/a2f161fdb473691956e291a6182c39ad7103176f Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Indent/outdent some lines This is to make the differences in the next commit smaller Commit: 3eb532c26c5cd727870f85f6589c310537d719b4 https://github.com/Perl/perl5/commit/3eb532c26c5cd727870f85f6589c310537d719b4 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Rmv obsolete code A "" input locale has been expanded by the time it gets here, so this is never true; it is a relict from previous implementations. Commit: aa9c2821dbbae0d054c244b70da1ac24eebb197e https://github.com/Perl/perl5/commit/aa9c2821dbbae0d054c244b70da1ac24eebb197e Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_bool_setlocale_2008_i: Copy function call. This removes a function call from a single place and inserts it in several. The reason is that it makes a future commit cleaner. Commit: c4b3b55919695e70293220f04aa842bfbdc429c5 https://github.com/Perl/perl5/commit/c4b3b55919695e70293220f04aa842bfbdc429c5 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- S_update_PL_curlocales(): Add parameter This is the ultimate caller's line number, which will be useful in a future commit; unused for now. Commit: 53c437ead4c6c9a1b7a8083925eb84b35765df7a https://github.com/Perl/perl5/commit/53c437ead4c6c9a1b7a8083925eb84b35765df7a Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_update_PL_curlocales_i(): Reverse order of conditionals The new ordering will play better with future commits Commit: eda041e43900d5104f03b1b898179aa63bf6396c https://github.com/Perl/perl5/commit/eda041e43900d5104f03b1b898179aa63bf6396c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c M perl.h Log Message: ----------- locale.c: Update comments, white-space in 2 functions Commit: 66a48ec8854eb1acb4a66824370b09647ce96139 https://github.com/Perl/perl5/commit/66a48ec8854eb1acb4a66824370b09647ce96139 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Avoid an (unlikely) leak As the comments say, this eventuality is unlikely to happen, but if it did, it would mean a leak. Commit: a14381950f7055e04ab25a2801745a80853eb00e https://github.com/Perl/perl5/commit/a14381950f7055e04ab25a2801745a80853eb00e Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_bool_setlocale_2008_i: Remove recursion This converts recursive calls of this function into an iterative loop. Besides the obvious benefits, some platforms don't even require a loop, as a future commit will do. Commit: fc823e0b517f36b9934b44981c8af226a376c792 https://github.com/Perl/perl5/commit/fc823e0b517f36b9934b44981c8af226a376c792 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- Rmv unused function: S_setlocale_from_aggregate_LC_ALL Previous commits have removed all uses of this Commit: 29b486fd7d9cc293123019225e2c641811ddc5c1 https://github.com/Perl/perl5/commit/29b486fd7d9cc293123019225e2c641811ddc5c1 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M perl.h M proto.h Log Message: ----------- S_parse_LC_ALL_string: Squash if categories are same locale It turns out that some platforms return something like C/C/C/C/C/C instead of just the equivalent 'C' when querying LC_ALL. This can lead to extra work for us, and unnecessary noise when displayed to the user. This commit changes parse_LC_ALL_string() to look for this case, and to coalesce the result to just the single value, which is returned in just the 0th element of the input array, leaving the other elements unused. It makes this behavior overridable by an input flag, which will be used in a future commit. Commit: e7c7c1088283015a2b8b09929bb2a2349a0fbdd3 https://github.com/Perl/perl5/commit/e7c7c1088283015a2b8b09929bb2a2349a0fbdd3 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_update_PL_curlocales(): accept arbitrary LC_ALL string Prior to this commit, this function couldn't handle an LC_ALL string that wasn't just a single locale for all categories. But now that we can parse a disparate string, update this function to use that. Commit: 72bcb62fa35944a3e075fb6990f6ddea84de0141 https://github.com/Perl/perl5/commit/72bcb62fa35944a3e075fb6990f6ddea84de0141 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_setlocale_2008_i(): Use single newlocale() if available On some platforms the newlocale() libc function when setting LC_ALL can handle an input locale that sets some categories to one thing; and others to another; etc. On such platforms, we don't have to loop through all categories individually. This commit changes to use that if the #define indicating its availability is set. Commit: 2a62e34308b6fe2acf7dae276ade34efcc301ec4 https://github.com/Perl/perl5/commit/2a62e34308b6fe2acf7dae276ade34efcc301ec4 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embedvar.h M intrpvar.h M locale.c M makedef.pl M perl.c M sv.c Log Message: ----------- XXX Partial need vutil.c first Rmv underlying numeric This object, only on POSIX 2008 systems, is no longer used. I've been keeping it around in case I could figure out if it had any remaining utility, but don't see any. Commit: 25b669c57d206d1aa3711adc1b0ad542f1767876 https://github.com/Perl/perl5/commit/25b669c57d206d1aa3711adc1b0ad542f1767876 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Use function already designed for the purpose Instead of several initialization calls, call the overarching one that includes them all. Commit: f1553c95712682933b7df4385c5a2eb136c369cc https://github.com/Perl/perl5/commit/f1553c95712682933b7df4385c5a2eb136c369cc Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Avoid a duplicate conditional Commit: d7b0fe631d4521556234eb0c136488bc73f1c64c https://github.com/Perl/perl5/commit/d7b0fe631d4521556234eb0c136488bc73f1c64c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Initialize PL_cur_locale_obj Commit: a46d41a241191fcdac07822f5ac38d787a0e037d https://github.com/Perl/perl5/commit/a46d41a241191fcdac07822f5ac38d787a0e037d Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- XXX Initial guess as to newlocale() capability glibc has a newlocale() that can handle disparate LC_ALL string input. This commit is until more data is gathered. Commit: 2626fc9edcd25ae9c7905d7dfeb69cdd523f43f2 https://github.com/Perl/perl5/commit/2626fc9edcd25ae9c7905d7dfeb69cdd523f43f2 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M perl.h M proto.h Log Message: ----------- Add caller location info to e.g. RESTORE_LC_NUMERIC These help pinpointing the error source when a failure occurs. Commit: 2477f472c3f14ebebf7a82632b6b65123ce56007 https://github.com/Perl/perl5/commit/2477f472c3f14ebebf7a82632b6b65123ce56007 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- XXX tests,delta: Handle glibc extra locale categories glibc has several locale categories not found in standards. This commit provides minimal support. Commit: 3ca638f1ddf4f0281a8c5fb3132404b90bc417dd https://github.com/Perl/perl5/commit/3ca638f1ddf4f0281a8c5fb3132404b90bc417dd Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M perl.h M proto.h Log Message: ----------- Properly handle ignored locale categories perl can be compiled to ignore arbitrary locale categories that are actually on the system. This has never worked transparently, especially on platforms that use postional notation to represent LC_ALL when not all categories are set to the same locale. The system calls will return a string containing the ignored category, and we dont know how to handle that. This large commit fixes that by compiling to include the information about all categories on the system. But if a category is to be ignored, instead we set it to the C locale, and thwart any effort to change it away from that locale. Commit: 32de87bc405abf9baffa6727156d7d8e2237059d https://github.com/Perl/perl5/commit/32de87bc405abf9baffa6727156d7d8e2237059d Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- Revise warnings when locale init has issues Previously, we didn't know the possible locale categories on this system, so grepped through the environment outputting anything that begins with 'LC_'. But now we do know all of them, and can just use those. Commit: 8d81d6845257cee121add60aefd2d6c054abf68b https://github.com/Perl/perl5/commit/8d81d6845257cee121add60aefd2d6c054abf68b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- S_calculate_LC_ALL_string: Add parameter This parameter is set only when this function is being called by Perl_setlocale(). This is purely for performance It causes this function to use a particular buffer and avoid extra copying. Commit: 142e280a3dfb4d646f513b66dc69e8d2883a9b41 https://github.com/Perl/perl5/commit/142e280a3dfb4d646f513b66dc69e8d2883a9b41 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- XXX why not failing tests before this?Create S_native_querylocale_i() and use it This new function differs from the already existing plain querylocale_i() in that it returns in the platform's native format, instead of the internal=to-perl one. The internal one is used generally so that code doesn't have to cope with multiple possible formats. The format of the new locale in Perl_setlocale() is going to be in native format. We effectively translate it into our internal one at the input edge, and that is used thereafter. But until this commit, the translation back to native format at the output edge was incomplete. This mostly worked because native format differs from locale.c internal format in just two ways. One is the locale for LC_NUMERIC. perl keeps it generally in the C locale, except for brief intervals which higher level code specifies, when the real locale is swapped in. (Actually, this isn't quite true. If the real locale is indistinguishable from C as far as LC_NUMERIC goes, perl is happy to use it rather than C, so as to save swapping.) locale.c had the code in it to translate the internal format back to native, so it worked for this case. The other is LC_ALL when not all categories are set to the same locale. Windows and Linux use 'name=value;' pairs notation, while things derived from BSD (and others) use a positional notation in which only the values are given, and the system knows which category a given value is for from its position in the string. Perl worked fine for the name=value pairs notation, because that is the same as its internal one, so no translation got done, but until this commit, there were issues on positional platforms. This seldom got in the way since most people, if they set the locale at all, will just set it to some single 'foo'. What this commit effectively does is change Perl_setlocale() to return the value in the native format which the libc functions are expecting. This differs from what it used to return only on platforms which use the positional notation and only for LC_ALL when not all categories are set to the same locale. The new function subsumes much of the work previously done in Perl_setlocale(), and it is able to simplify some of that work. Commit: 23effaeb7ddac4d2ee1fcb3d09b512e6c8d92682 https://github.com/Perl/perl5/commit/23effaeb7ddac4d2ee1fcb3d09b512e6c8d92682 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- XXX why: locale.c: revise new_LC_ALL This is because we don't want to use querylocale which is expecting things to already be set up; instead pass what should happen to finish the setup. Commit: df7180fa20cb7d0c82c985d500ef6db5ba5b0207 https://github.com/Perl/perl5/commit/df7180fa20cb7d0c82c985d500ef6db5ba5b0207 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- f after testing Commit: 7ba2048e2ca697ad06ccfbbadd16963425f4e6d4 https://github.com/Perl/perl5/commit/7ba2048e2ca697ad06ccfbbadd16963425f4e6d4 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Remove no longer used macro Commit: c2ac4dee44c4636adad64b2f0461eba98896979e https://github.com/Perl/perl5/commit/c2ac4dee44c4636adad64b2f0461eba98896979e Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- Add setlocale_i() This macro is defined on Configurations where a simple unadorned setlocale works for categories that don't have perl record keeping involved. This allows Perl_setlocale() to avoid a lot of unnecessary overhead for these. This commit defines it only for unthreaded perls. Commit: ca4b8f28284f87d75f15887f8a7d173bafacdd15 https://github.com/Perl/perl5/commit/ca4b8f28284f87d75f15887f8a7d173bafacdd15 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Move S_update_PL_curlocales() Prior to this commit, it was only for POSIX 2008, but a future commit will want to use it when not POSIX 2008. Commit: c8a344b1e79d12ac9444deca092ac896d587b679 https://github.com/Perl/perl5/commit/c8a344b1e79d12ac9444deca092ac896d587b679 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- savepv if threaded, unused I think Commit: 7c13b863763f3d4a1cdf82a526b5e32ad3079311 https://github.com/Perl/perl5/commit/7c13b863763f3d4a1cdf82a526b5e32ad3079311 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Rmv unexecuted statement after croak Commit: 8300fbb5711743fdfc2a2b143d46ba9028ee03af https://github.com/Perl/perl5/commit/8300fbb5711743fdfc2a2b143d46ba9028ee03af Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Improve collation debugging output This adds a special case for when the buffer is empty Commit: fbd2dd2e49cbae9cd19208b6cbcfbf10cc3f95fc https://github.com/Perl/perl5/commit/fbd2dd2e49cbae9cd19208b6cbcfbf10cc3f95fc Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- XXX introductory file comments Commit: ef54df171e074b71f875b5c53afd7bb7533da58a https://github.com/Perl/perl5/commit/ef54df171e074b71f875b5c53afd7bb7533da58a Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Only compile workaround on platforms needing it This code works around a bug on Windows with regard to localeconv(). And the bug only exists on such platforms that have thread-safety. Prior to this commit, the code was compiled on platforms lacking thread-safety, so was unnecessary. Commit: 356453326d73a0cc22b186a6d96e286d7062800c https://github.com/Perl/perl5/commit/356453326d73a0cc22b186a6d96e286d7062800c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M intrpvar.h M locale.c Log Message: ----------- locale.c: Use wider than U32 for a counter Processes that change locales are incrementing a counter that could eventully wrap if the process is long-lived. It's not likely, but it's also easy to make this a U64 if available, and make the chances of it happening much closer to zero. Commit: 06d90fac6b54b6a79f7e255da5beacb53870fef5 https://github.com/Perl/perl5/commit/06d90fac6b54b6a79f7e255da5beacb53870fef5 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Move setting errno out of critical section I doesn't matter much, but its better practice to make critical sections as small as possible. Commit: f893f93401365b9dcb759659e673f0702265dfea https://github.com/Perl/perl5/commit/f893f93401365b9dcb759659e673f0702265dfea Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- get_win32_message_utf8ness() Fix unlikely case This function calls get_locale_string_utf8ness_i(). The API of that function changed earlier in the 5.37 series, and this was not updated to correspond. It is calling it with category 0, wich it thinks is an out-of-bounds value, but it really is LC_ALL on Windows. Thus it actually probably doesn't lead to a failure, but it theoretically could fail if LC_ALL is not uniform. So it's better to not succeed just by accident. This commit changes to now use LC_CTYPE as the category. And if someone has managed to compile Windows without LC_CTYPE, it now just says that the input string isn't UTF-8, as without LC_CTYPE, you've only got the C locale. Commit: 301394d2cd4fc435ee43b2eed4dc3bdf487e8b2e https://github.com/Perl/perl5/commit/301394d2cd4fc435ee43b2eed4dc3bdf487e8b2e Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Only define a structure if needed Without LC_NUMERIC, this structure is unused, and generates a compiler warning. Commit: 6b391bc33906774202bb7ed592a5c83e4eded807 https://github.com/Perl/perl5/commit/6b391bc33906774202bb7ed592a5c83e4eded807 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Add a debugging statement This can be helpful in tracing what's happening with nl_langinfo() calls. Commit: 6f2ad25150aab5f70aea89a8519b0f10b8763c9e https://github.com/Perl/perl5/commit/6f2ad25150aab5f70aea89a8519b0f10b8763c9e Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- perlapi: Improve wording for Perl_langinfo() Commit: ae35956a007dae528dadc625cd73e26cbc1c8484 https://github.com/Perl/perl5/commit/ae35956a007dae528dadc625cd73e26cbc1c8484 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Critical section around initializing a global This code should only have a race in the unlikely event that it is an embedded perl, and there is another perl already running. But best to avoid the possibility at all. Commit: 4ce54e4c940f4e6a285a46cd5195077fa61b5e74 https://github.com/Perl/perl5/commit/4ce54e4c940f4e6a285a46cd5195077fa61b5e74 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Move #ifdef DEBUGGING This moves it up to precede a block that only does debugging info. Commit: 0da25268c3fc72d3a41d9be54a004d65ee6930e1 https://github.com/Perl/perl5/commit/0da25268c3fc72d3a41d9be54a004d65ee6930e1 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_stdize_locale: Set errno if fails Commit: dace3a4702d3780e244d2adf3ba2429bbb01751c https://github.com/Perl/perl5/commit/dace3a4702d3780e244d2adf3ba2429bbb01751c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- XXX experimental: Define setlocale_i() on unsafe threaded builds On threaded Configurations where thread-safe locale handling is not available, perl automatically does a modicum of prevention of races by executing locale changes in a critical section, and copying the results to a thread-safe location. This commit defines setlocale_i() on such builds. This macro is used to bypass more complex handling required in fully thread-safe builds. I don't see how this changes thread-safeness on the unsafe builds, and it passes the tests, but I'm considering it experimental for now, until later in the development cycle. Commit: 51bfd8b5df050c67ebdd627c61ef77212c8cda2f https://github.com/Perl/perl5/commit/51bfd8b5df050c67ebdd627c61ef77212c8cda2f Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/porting/bincompat.t Log Message: ----------- skip bincompat.t Commit: 19484e0fb177c75cda04008df5cf40d693aee902 https://github.com/Perl/perl5/commit/19484e0fb177c75cda04008df5cf40d693aee902 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M hints/darwin.sh Log Message: ----------- darwin hints querylocale race in earlier darwins? Commit: 0c9dc2c676cffcfc7665dd2a99bbde684c6d2d9f https://github.com/Perl/perl5/commit/0c9dc2c676cffcfc7665dd2a99bbde684c6d2d9f Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: make querylocale locking conditional Commit: 4713296905cbe0831075476f8dfcb9a409d43ab4 https://github.com/Perl/perl5/commit/4713296905cbe0831075476f8dfcb9a409d43ab4 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M intrpvar.h Log Message: ----------- intrpvar.h: Comments Commit: c90e574844e8b6647d479cd080382d2f6ef9a9ec https://github.com/Perl/perl5/commit/c90e574844e8b6647d479cd080382d2f6ef9a9ec Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M embedvar.h M handy.h M inline.h M intrpvar.h M locale.c M makedef.pl M mg.c M perl.c M perl.h M proto.h M sv.c Log Message: ----------- emul Commit: 72b94d18cd6ccb9925d82be346e5f22036af9f86 https://github.com/Perl/perl5/commit/72b94d18cd6ccb9925d82be346e5f22036af9f86 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M locale.c M proto.h Log Message: ----------- locale.c: Change to use enum type Instead of 'unsigned int', use the more restricted enum. Commit: 33d823fac0f588628756d0096bffa03485f8cf5d https://github.com/Perl/perl5/commit/33d823fac0f588628756d0096bffa03485f8cf5d Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Compile utf8ness on platforms that need it These two functions need to be compiled on certain other platforms than what was happening. Commit: b657e7e07f7132ca3bbaad9b9087ca713d119145 https://github.com/Perl/perl5/commit/b657e7e07f7132ca3bbaad9b9087ca713d119145 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Silence compiler warning on some platforms This argument isn't used on some platforms. Commit: f22a2f11a6b40efe8387d03a00fb5bf09cd5a4ef https://github.com/Perl/perl5/commit/f22a2f11a6b40efe8387d03a00fb5bf09cd5a4ef Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M Configure M locale.c M metaconfig.h M perl.h Log Message: ----------- f Configure Commit: f978eb0dec02cf933ed1e6e64082c7d8b69a2672 https://github.com/Perl/perl5/commit/f978eb0dec02cf933ed1e6e64082c7d8b69a2672 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M Configure M locale.c M metaconfig.h M perl.h Log Message: ----------- Revert "f Configure" This reverts commit 12d2cfd3fbf933bbbfb52a448d8bdda62f7ac100. Commit: c7b417b5128ed314720c012958fd6bcf18c0fa1d https://github.com/Perl/perl5/commit/c7b417b5128ed314720c012958fd6bcf18c0fa1d Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M makedef.pl Log Message: ----------- drop when Configure fixed Commit: a6cb4335f2d8940e93799ffc3bfb41a789fc0181 https://github.com/Perl/perl5/commit/a6cb4335f2d8940e93799ffc3bfb41a789fc0181 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M makedef.pl Log Message: ----------- makedef.pl: PL_cur_locale_obj is only POSIX 2008 multiplicity Commit: f0b6912c09c4f4f7ef5b09a721319caeee52dd48 https://github.com/Perl/perl5/commit/f0b6912c09c4f4f7ef5b09a721319caeee52dd48 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M makedef.pl Log Message: ----------- makedef.pl: Move comment Commit: ce11773491efa9a96c4d6da87d25b37262128280 https://github.com/Perl/perl5/commit/ce11773491efa9a96c4d6da87d25b37262128280 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M makedef.pl Log Message: ----------- Maybe drop: makedef.pl: Move code Commit: c42de721c73c57babcfb46b573ea28757160feec https://github.com/Perl/perl5/commit/c42de721c73c57babcfb46b573ea28757160feec Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M makedef.pl Log Message: ----------- makedef.pl: Remove obsolete symbol Commit: 91f2d258c449aac6329a512b8bdefbe8cebe340e https://github.com/Perl/perl5/commit/91f2d258c449aac6329a512b8bdefbe8cebe340e Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- Add DEBUG_SETLOCALE_INCONSISTENCIES Commit: 2fd061d0a833f001c877372a141d40bcc4f08e82 https://github.com/Perl/perl5/commit/2fd061d0a833f001c877372a141d40bcc4f08e82 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- Fix mingw locale builds Experience has shown that mingw with an older runtime library doesn't have more modern Windows features working properly. This commit causes it to compile with workarounds, but allows the user to -Accflags='-DUCRT_USED' to indicate to Configure that the code will be using the modern CRT. Commit: 8b7787608f3961841e9e0f46883f146c368f9048 https://github.com/Perl/perl5/commit/8b7787608f3961841e9e0f46883f146c368f9048 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- Enable DEBUG_SETLOCALE_INCONSISTENCIES Commit: cf9a101717490616fa4a49d74684b6d49f073a16 https://github.com/Perl/perl5/commit/cf9a101717490616fa4a49d74684b6d49f073a16 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- perl.h: Add detail to locale mutex debug Commit: 3ced563d6d4634d85d25106efd97b6f26f1227dc https://github.com/Perl/perl5/commit/3ced563d6d4634d85d25106efd97b6f26f1227dc Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c M perl.h Log Message: ----------- XXX remaining loose ends Commit: 9895256e689127106da7b972ecfb96ddfa2991c2 https://github.com/Perl/perl5/commit/9895256e689127106da7b972ecfb96ddfa2991c2 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M cpan/version/t/07locale.t M pod/perlembed.pod M t/porting/customized.dat Log Message: ----------- final commit Commit: 95fcd3a4b3e953f068d1284fb94eecb10732c90e https://github.com/Perl/perl5/commit/95fcd3a4b3e953f068d1284fb94eecb10732c90e Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- use enum, maybe drop Commit: bbe26000a2250c29f663a0002b0c667ed93905b4 https://github.com/Perl/perl5/commit/bbe26000a2250c29f663a0002b0c667ed93905b4 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- Revert "prev commit" This reverts commit 4be10ec67fb8fef94cb573a8f7b51cb23610517f. Commit: d2ea21975b9198a1ee7b4c189fb70c7121562912 https://github.com/Perl/perl5/commit/d2ea21975b9198a1ee7b4c189fb70c7121562912 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M locale.c M proto.h Log Message: ----------- more cat index enum Commit: e839353bc1ff193787435236d9553fa13ac402d5 https://github.com/Perl/perl5/commit/e839353bc1ff193787435236d9553fa13ac402d5 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M dist/Tie-File/t/29a_upcopy.t Log Message: ----------- XXX temp: dist/Tie-File/t/29a_upcopy.t: Up alarm Commit: ca6179f58c169cb5e795636ed6719157dca075bf https://github.com/Perl/perl5/commit/ca6179f58c169cb5e795636ed6719157dca075bf Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- f Commit: 3b983b4d823bdfe0a1c3337a72821487263755ff https://github.com/Perl/perl5/commit/3b983b4d823bdfe0a1c3337a72821487263755ff Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- perl.h fixup Commit: 29ec2fe36619d929fb5e4ce14ce2858aff1e6457 https://github.com/Perl/perl5/commit/29ec2fe36619d929fb5e4ce14ce2858aff1e6457 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M Configure Log Message: ----------- f Configure for positional Commit: da23d939eb78e86762424460b0d31ea86f34f06c https://github.com/Perl/perl5/commit/da23d939eb78e86762424460b0d31ea86f34f06c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- fixup init for C C C C C Commit: ad50b487a02268d8d04467a86d3f3a989982e393 https://github.com/Perl/perl5/commit/ad50b487a02268d8d04467a86d3f3a989982e393 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- perlapi: Fix strftime inaccuracies, clarify Commit: d54b13d65df0d10271c6a404a85fcee65b0dda6b https://github.com/Perl/perl5/commit/d54b13d65df0d10271c6a404a85fcee65b0dda6b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- Set errno when my_strftime() fails. The libc strftime() doesn't have any way to distinguish between erroneous input and that which just doesn't generate any output; hence it doesn't set errno. But my_strftime() has logic to reasonably confidently make that distinction, so it should set errno when it determines that it is erroneous input. Commit: 42c9a0987786dd9b5d016974b13784c35a23cd7e https://github.com/Perl/perl5/commit/42c9a0987786dd9b5d016974b13784c35a23cd7e Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- add is_cur_locale_utf8 Commit: 0275d286eeaa3c3fad4cab2165a48f69d3a87635 https://github.com/Perl/perl5/commit/0275d286eeaa3c3fad4cab2165a48f69d3a87635 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Simplify S_new_ctype By creating a temporary variable, an else is eliminated, and the lock/unlock are brought close together. Commit: 7b4defd1cb5da0c874edefdff100a357f80881ea https://github.com/Perl/perl5/commit/7b4defd1cb5da0c874edefdff100a357f80881ea Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M dist/threads/threads.xs M embed.fnc M locale.c M perl.h M proto.h M util.c M win32/win32thread.c Log Message: ----------- switch_locale_context: Add aTHX This fixes GH #21040 Instead of a dTHX, this passes aTHX automatically, and skips calling this function if there is no valid context. It moves that decision into the macro itself, avoiding some #ifdef directives. And it adds explanation f Commit: 3a43f68b1c26b3d1d24aa7244e14ed924d650fb9 https://github.com/Perl/perl5/commit/3a43f68b1c26b3d1d24aa7244e14ed924d650fb9 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- strftime: Always restore LC_CTYPE locale my_strftime toggles LC_CTYPE to match LC_TIME to avoid mojibake. In reading the code, I realized that there was a code path that doesn't properly restore it, namely when failure is returned. This commit fixes that. Commit: f79a40e51f2c74254e19bf4061bdf50633849741 https://github.com/Perl/perl5/commit/f79a40e51f2c74254e19bf4061bdf50633849741 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M cpan/Time-Piece/Piece.xs Log Message: ----------- Time::Piece: Use reentrant API This single line magically makes this work much better under threading, though critical section locks need to be added as well. Commit: fe66e9d91e2e40034f5cd36d3ad710c36e29b20c https://github.com/Perl/perl5/commit/fe66e9d91e2e40034f5cd36d3ad710c36e29b20c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M cpan/Time-Piece/Piece.xs Log Message: ----------- Time-Piece: Use foldEQ_locale() if available This supported core function is thread-safe and knows about Perl internals, so is preferable to the similar libc function, which is now used only as a fallback. This commit also bomb proofs the code by adding an additional fallback, specified in C89, which isn't a great substituted, but far better than nothing. Commit: b3633b337c9e31894ab9155c87f99ae7a4ee34df https://github.com/Perl/perl5/commit/b3633b337c9e31894ab9155c87f99ae7a4ee34df Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M cpan/Time-Piece/Piece.xs Log Message: ----------- Time-Piece: Use isSPACE_LC, not isspace; etc isDIGIT_LC() does the same thing as isdigit when everything goes well, but is more robust when things get more complicated. The _LC forms are thread safe, for example. But note that this code doesn't work properly for a UTF-8 locale, as it assumes that a byte and character are the same thing. A major overhaul would be needed to handle that. Commit: 5dfa529a8cbd3ed2689553ab4374c06dc6c46142 https://github.com/Perl/perl5/commit/5dfa529a8cbd3ed2689553ab4374c06dc6c46142 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Don't compile unreachable code This code is attempting to compute the nl_langinfo() codeset of the current locale. If there is no LC_CTYPE available on the system, the codeset must be 'C', and the only callers to this static function know that, and return that answer without calling this function. That means this part of the function will never be executed. So don't compile it. Commit: 44400a6cdeaa57927b03043907c6fa0a1305ba05 https://github.com/Perl/perl5/commit/44400a6cdeaa57927b03043907c6fa0a1305ba05 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embedvar.h M intrpvar.h M locale.c M makedef.pl Log Message: ----------- locale.c: Prevent infinite recursion This could happen on the very rare platform that isn't Windows, nor supports nl_langinfo(), and has a buggy (or non-existent) mbtowc(). The code implements nl_langinfo() itself by recursion, and for some locales could end up recursing indefinitely. This commit adds guards to prevent that. Commit: 36fb0c85e92e2b1c94d81cc8b8bcc3585630e7f5 https://github.com/Perl/perl5/commit/36fb0c85e92e2b1c94d81cc8b8bcc3585630e7f5 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- perl.h: Add DISABLE_LC_NUMERIC_CHANGES macro This is for code that needs to keep other code from changing LC_NUMERIC out from under it, but avoids the knowledge of PL_numeric_standard, which is used when perl controls the locale handling. This is designed for 'version' (vutil.c) to use, because it has to operate seamlessly in the mode where perl controls the handling, and when it doesn't, even if it doesn't know it doesn't. Commit: f5092c225ae112bececad9fc23c46c02b16824e0 https://github.com/Perl/perl5/commit/f5092c225ae112bececad9fc23c46c02b16824e0 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- perl.h: Remove extraneous ';' Commit: 23a9d560559926a74fef8918638ae7739dfcaef9 https://github.com/Perl/perl5/commit/23a9d560559926a74fef8918638ae7739dfcaef9 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M dist/threads/threads.xs Log Message: ----------- XXX threads.xs: Move #ifdef to beginning of file XXX saves an interior ifdef, but unsure if worth it. Commit: c60e7f6a126f813e3a1b89952461e91ff4a30f51 https://github.com/Perl/perl5/commit/c60e7f6a126f813e3a1b89952461e91ff4a30f51 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M perl.h Log Message: ----------- perl.h: localeconv() isn't broken on Windows unthreaded Nor is it broken if compiled without per-thread locale handling. The bug in it until VS 2015 was that it always looked at the global locale. When the only locale available is the global one, there is not breakage. This commit thus avoids compiling workaround code for the bug when it isn't necessary. Commit: 68508ca189981dffddc3fff996db8bb54e0b9e20 https://github.com/Perl/perl5/commit/68508ca189981dffddc3fff996db8bb54e0b9e20 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M thread.h Log Message: ----------- thread.h: White space only Indent some nested preproccessor defines Commit: 01d279687970513b9a97e66e3521923076768078 https://github.com/Perl/perl5/commit/01d279687970513b9a97e66e3521923076768078 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M win32/Makefile Log Message: ----------- win32 perl mem log Commit: 6e87a56885347b953728af20e104ac9a785a5ecc https://github.com/Perl/perl5/commit/6e87a56885347b953728af20e104ac9a785a5ecc Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M ext/POSIX/t/time.t Log Message: ----------- time.t Commit: d7bd20f757704cc34da35eb44a428c8af20d0587 https://github.com/Perl/perl5/commit/d7bd20f757704cc34da35eb44a428c8af20d0587 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M ext/POSIX/t/time.t Log Message: ----------- POSIX/t/time.t: Remove no longer necessary code POSIX::strftime() now automatically handles the case where the locales of LC_TIME and LC_CTYPE aren't the same. So no need to explicitly do this in the test file. Commit: d57be68c5491c93f235efeb6f006d50f5012def7 https://github.com/Perl/perl5/commit/d57be68c5491c93f235efeb6f006d50f5012def7 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M ext/POSIX/t/time.t Log Message: ----------- XXX see how affects earlier commits: time.t: Add more strftime tests Commit: 011b6652a5e9ed3d8ebfccfe0f5f8a6f15a0a123 https://github.com/Perl/perl5/commit/011b6652a5e9ed3d8ebfccfe0f5f8a6f15a0a123 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Split my_strftime into 2 functions Future commits will want the individual functionality the two provided separately. Commit: 34a737298a430b42004bbb0bc6cb3d16cac469b3 https://github.com/Perl/perl5/commit/34a737298a430b42004bbb0bc6cb3d16cac469b3 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Move my_strftime() within the file This will be more logically placed after future commits Commit: b434bd568f6ed2aeeab4d346b97a83005a82f461 https://github.com/Perl/perl5/commit/b434bd568f6ed2aeeab4d346b97a83005a82f461 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M embed.fnc M embed.h M ext/POSIX/POSIX.xs M locale.c M proto.h Log Message: ----------- Implement sv_strftime_tm and sv_strftime_ints These two functions are designed to free the caller from having to know anything about the intricacies of handling UTF-8 in using strftime(), as they take SV inputs and return an SV with the UTF-8 flag appropriately set. They differ only in that one takes a bunch of integer arguments that define the various components of the time; and the other takes a pointer to a struct tm. The POSIX implementation of strftime is converted to use these. Commit: 4d5f5d3dc4f5f6f5502ff982f9a4c6e987d19885 https://github.com/Perl/perl5/commit/4d5f5d3dc4f5f6f5502ff982f9a4c6e987d19885 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M cpan/Time-Piece/Piece.pm M cpan/Time-Piece/Piece.xs M cpan/Time-Piece/Seconds.pm M dist/Module-CoreList/lib/Module/CoreList.pm 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: 77538870735c27385e81e270a1715a5e26cb4294 https://github.com/Perl/perl5/commit/77538870735c27385e81e270a1715a5e26cb4294 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M cpan/Time-Piece/Piece.xs Log Message: ----------- Implement sv_strftime_tm and sv_strftime_ints These two functions are designed to free the caller from having to know anything about the intricacies of handling UTF-8 in using strftime(), as they take SV inputs and return an SV with the UTF-8 flag appropriately set. They differ only in that one takes a bunch of integer arguments that define the various components of the time; and the other takes a pointer to a struct tm. The POSIX implementation of strftime is converted to use these. Commit: c3eaeded7032d6bb861bb4c30afbef15f4d63128 https://github.com/Perl/perl5/commit/c3eaeded7032d6bb861bb4c30afbef15f4d63128 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- S_get_locale_string_utf8ness_i: Fix return If the input is NULL, the utf8ness of the string isn't NO, but actually, IMMATERIAL, as there is nothing there that matters Commit: 0af046d973ddf878419a7fa27f4dbf3cca689f8c https://github.com/Perl/perl5/commit/0af046d973ddf878419a7fa27f4dbf3cca689f8c Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Avoid work that would be thrown away If the caller to this function doesn't care about the UTF-8ness of the result, no need to calculate it. Commit: 4fc54e6445808587a38d5063b4151c48f584161b https://github.com/Perl/perl5/commit/4fc54e6445808587a38d5063b4151c48f584161b Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M intrpvar.h M locale.c M makedef.pl M sv.c M util.c Log Message: ----------- Attempts to fix windows free pool panic Commit: b86dd212cf637da5342bbcd5c3d443580b2cc1e1 https://github.com/Perl/perl5/commit/b86dd212cf637da5342bbcd5c3d443580b2cc1e1 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M cpan/Time-Piece/Piece.xs Log Message: ----------- Time-Piece: notes to myself Commit: 91ad52577589174710e7c577117bc1bb122c2e60 https://github.com/Perl/perl5/commit/91ad52577589174710e7c577117bc1bb122c2e60 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- dregs Commit: a755b19a4cd1595bfa40b2ca5e40dc5d3ceb0367 https://github.com/Perl/perl5/commit/a755b19a4cd1595bfa40b2ca5e40dc5d3ceb0367 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Slightly change wording of DEBUG messages This makes them more consistent with the other messages in this file. Commit: 8096b97a3d15bd7fdcb39e105a927493e80a71f7 https://github.com/Perl/perl5/commit/8096b97a3d15bd7fdcb39e105a927493e80a71f7 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M t/loc_tools.pl Log Message: ----------- loc_tools Commit: 548c5949796d7794ca5954819be113716ab5c159 https://github.com/Perl/perl5/commit/548c5949796d7794ca5954819be113716ab5c159 Author: Karl Williamson <k...@cpan.org> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M locale.c M t/loc_tools.pl M t/porting/customized.dat M t/run/locale.t Log Message: ----------- foo Commit: 657b8b2a6545cb822a8ab1e7ad94c2742f39fbbc https://github.com/Perl/perl5/commit/657b8b2a6545cb822a8ab1e7ad94c2742f39fbbc Author: Karl Williamson <k...@cpan.org> Date: 2023-05-27 (Sat, 27 May 2023) Changed paths: M ext/XS-APItest/t/locale.t M locale.c M t/loc_tools.pl Log Message: ----------- bar Compare: https://github.com/Perl/perl5/compare/19c3e0e2a83a...657b8b2a6545