Branch: refs/heads/smoke-me/khw-env
Home: https://github.com/Perl/perl5
Commit: 69d296d8d045bffd8238c1326449c48886889346
https://github.com/Perl/perl5/commit/69d296d8d045bffd8238c1326449c48886889346
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M lib/locale.t
Log Message:
-----------
lib/locale.t:
Fixes #21697.
On some platforms, a locale name is specified in the code page (or
code set) that applies to it, rather than plain ASCII. Windows, and
hence MingW, is the prime example.
The locale name for a particular Turkish variety found in MingW is
"Turkish_T?????.1254" where the question marks represent different
characters that have meaning in the 1254 code page, but would look like
mojibake if I had reproduced their actual values here.
When doing a setlocale() here, if the current code page is incompatible
with the new one, it will fail; if compatible it will succeed.
On my box running MingW, locales are tried out by this test file in
alphabetical order, and the one before this Turkish happens to be Thai,
with a code page of 874. Apparently 1254 is not compatible with 874, so
switching directly from Thai to Turkish fails.
The solution is to switch into a neutral code page before switching into
one being trialed. "C" works in this case, and I suspect in all others.
Commit: 99df0f4f1df4a26b66db7788ad37136ddfba6517
https://github.com/Perl/perl5/commit/99df0f4f1df4a26b66db7788ad37136ddfba6517
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M charclass_invlists.h
M lib/unicore/Makefile
M lib/unicore/mktables
M lib/unicore/uni_keywords.pl
M regcharclass.h
M uni_keywords.h
Log Message:
-----------
mktables more verbose
Commit: 07175b9133124001b72139ae1b491e62b093ba7a
https://github.com/Perl/perl5/commit/07175b9133124001b72139ae1b491e62b093ba7a
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm
Log Message:
-----------
BlackBox dont use rare scripts
Commit: 50c59359017dde85d1b133c5ed46560e1cb7a6c6
https://github.com/Perl/perl5/commit/50c59359017dde85d1b133c5ed46560e1cb7a6c6
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/harness
Log Message:
-----------
XXX t/harness temp tweaks
Commit: a140a1aaa6b761185331d4ca7026bbf0dcdff16b
https://github.com/Perl/perl5/commit/a140a1aaa6b761185331d4ca7026bbf0dcdff16b
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/harness
Log Message:
-----------
XXX skip croak.t under sanitizer
Commit: d01160da7355fc2c98b9c0a0c78e4695a048d9c0
https://github.com/Perl/perl5/commit/d01160da7355fc2c98b9c0a0c78e4695a048d9c0
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/porting/bincompat.t
Log Message:
-----------
skip bincompat.t
Commit: 0a737c41a2f4e8d05d88660e24aa12cbff5b903f
https://github.com/Perl/perl5/commit/0a737c41a2f4e8d05d88660e24aa12cbff5b903f
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/porting/bincompat.t
Log Message:
-----------
Revert "skip bincompat.t"
This reverts commit 559abf36660fef3e16d1cd33dc5aa6ca2202b88c.
Commit: 840d4eab304f4b7f790b751f48fab5a01671245c
https://github.com/Perl/perl5/commit/840d4eab304f4b7f790b751f48fab5a01671245c
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/TEST
Log Message:
-----------
Skip cpan testing message
Commit: dcdfbd8fe35a23bfa1933cab1a8caf70bbcaecf5
https://github.com/Perl/perl5/commit/dcdfbd8fe35a23bfa1933cab1a8caf70bbcaecf5
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M perl.h
Log Message:
-----------
runconfigure: only usequery with that directory
Commit: d5f0736ee2076ddb0b07af9fbb797a0dc4f26afb
https://github.com/Perl/perl5/commit/d5f0736ee2076ddb0b07af9fbb797a0dc4f26afb
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/TEST
Log Message:
-----------
Also skip non-thread dist testing
Commit: 09f68e1a769095557e39d310fa85990f683da525
https://github.com/Perl/perl5/commit/09f68e1a769095557e39d310fa85990f683da525
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/Archive-Tar/t/02_methods.t
Log Message:
-----------
XXX skip Archive-Tar because of symlinks
Commit: b7e147e4fcc652718f726e21c974fade5bf1e101
https://github.com/Perl/perl5/commit/b7e147e4fcc652718f726e21c974fade5bf1e101
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/porting/cmp_version.t
Log Message:
-----------
XXX skip cmp_version.t because of sym links
Commit: 33070a7e935a1fc90dfa7c81756747dd4fd5b7a3
https://github.com/Perl/perl5/commit/33070a7e935a1fc90dfa7c81756747dd4fd5b7a3
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/Sys-Syslog/t/syslog-inet-udp.t
M cpan/Sys-Syslog/t/syslog.t
Log Message:
-----------
XXX skip syslog tests because fail without LC_TIME
Commit: 16809a9974c68293ece677d6ab3307214c7a2f8e
https://github.com/Perl/perl5/commit/16809a9974c68293ece677d6ab3307214c7a2f8e
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M dist/Tie-File/t/29a_upcopy.t
Log Message:
-----------
up timeout for dist/Tie-File/t/29a_upcopy.t
Commit: 2bc35b69e5d38a52debf5699d18a67d71fb3bd63
https://github.com/Perl/perl5/commit/2bc35b69e5d38a52debf5699d18a67d71fb3bd63
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M MANIFEST
A t/uni/idstart.pl
A t/uni/idstart00.t
A t/uni/idstart01.t
A t/uni/idstart02.t
A t/uni/idstart03.t
A t/uni/idstart04.t
A t/uni/idstart05.t
A t/uni/idstart06.t
A t/uni/idstart07.t
A t/uni/idstart08.t
A t/uni/idstart09.t
A t/uni/idstart10.t
A t/uni/idstart11.t
A t/uni/idstart12.t
A t/uni/idstart13.t
A t/uni/idstart14.t
A t/uni/idstart15.t
A t/uni/idstart16.t
A t/uni/idstart17.t
A t/uni/idstart18.t
A t/uni/idstart19.t
A t/uni/idstart20.t
A t/uni/idstart21.t
A t/uni/idstart22.t
A t/uni/idstart23.t
M t/uni/variables.t
Log Message:
-----------
Split t/uni/variables.t into multiple tests
These can be done in parallel; otherwise this is often the test that
finishes last, holding up the test suite completion.
Commit: 3cf41957fd6aa8e7dc8b68d1b31e55df77575e4d
https://github.com/Perl/perl5/commit/3cf41957fd6aa8e7dc8b68d1b31e55df77575e4d
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/run/locale.t
Log Message:
-----------
run/locale.t: more debug
Commit: 8edbc16cdd3583e3bc7f5a95969db8b8324899c1
https://github.com/Perl/perl5/commit/8edbc16cdd3583e3bc7f5a95969db8b8324899c1
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M MANIFEST
M charclass_invlists.h
M lib/unicore/mktables
M lib/unicore/uni_keywords.pl
M regcharclass.h
A t/re/uniprops11.t
A t/re/uniprops12.t
A t/re/uniprops13.t
A t/re/uniprops14.t
A t/re/uniprops15.t
A t/re/uniprops16.t
A t/re/uniprops17.t
A t/re/uniprops18.t
A t/re/uniprops19.t
A t/re/uniprops20.t
A t/re/uniprops21.t
A t/re/uniprops22.t
A t/re/uniprops23.t
A t/re/uniprops24.t
M uni_keywords.h
Log Message:
-----------
Make 24 uniprops.t tests
Commit: 628edfc290c4b6348e2545d2e52b7b056fb09745
https://github.com/Perl/perl5/commit/628edfc290c4b6348e2545d2e52b7b056fb09745
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M perl.h
Log Message:
-----------
XXX temp to test broken lconv on non-Windows
Commit: c2e2e00f92e5ab69c1eaa2bdeb20a1e7421c7a6a
https://github.com/Perl/perl5/commit/c2e2e00f92e5ab69c1eaa2bdeb20a1e7421c7a6a
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/run/locale.t
Log Message:
-----------
XXX run/locale.t: maybe f move test
Commit: b9e42eb07f54e82c31f70835ad0fd19fd268378a
https://github.com/Perl/perl5/commit/b9e42eb07f54e82c31f70835ad0fd19fd268378a
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/version/t/07locale.t
M t/porting/customized.dat
Log Message:
-----------
version::07locale.t: Use I18N::Langinfo, not POSIX::localeconv()
The former is always present; the latter might not be.
Commit: 0b56ac42290538b600f584c8968a596382cb4a3d
https://github.com/Perl/perl5/commit/0b56ac42290538b600f584c8968a596382cb4a3d
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/porting/cmp_version.t
Log Message:
-----------
XXX skip cmp_version.t prob. due to 5.38 tag issue
Commit: 89a57f2381ffd51b82a88530bf808e54fe07d77c
https://github.com/Perl/perl5/commit/89a57f2381ffd51b82a88530bf808e54fe07d77c
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/version/t/07locale.t
M t/porting/customized.dat
Log Message:
-----------
version 07locale.t should use LC_NUMERIC, not ALL
These outliers don't belong. This file is working on LC_NUMERIC only.
Commit: f7653609517459e3e04702e52674757faaf9d6a0
https://github.com/Perl/perl5/commit/f7653609517459e3e04702e52674757faaf9d6a0
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M makedef.pl
M perl.h
Log Message:
-----------
XXX temporary: Allow undef LC_ALL
Commit: d767f06a3c5517944b76816a2c50546c41ef02f9
https://github.com/Perl/perl5/commit/d767f06a3c5517944b76816a2c50546c41ef02f9
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M perl.h
Log Message:
-----------
perl.h: Fake up win32 compile a bit
Commit: d5815570c7e4b0fade1ba2be3dea201399c03039
https://github.com/Perl/perl5/commit/d5815570c7e4b0fade1ba2be3dea201399c03039
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M sv.c
Log Message:
-----------
newSVbool(): Fix compiler warning
The parameter was declared const in embed.fnc, but not in the function
prototype
Commit: 2f970b03f5998e5270f1b7beb50ab8c18a0415c4
https://github.com/Perl/perl5/commit/2f970b03f5998e5270f1b7beb50ab8c18a0415c4
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M embed.fnc
M proto.h
Log Message:
-----------
regnode_after(): Fix compiler warning
A parameter to this function was declared const in its prototype but not
in embed.fnc.
Commit: 0940facd1dcc8efdcdca4b9c80de503b8141092e
https://github.com/Perl/perl5/commit/0940facd1dcc8efdcdca4b9c80de503b8141092e
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M embed.fnc
M proto.h
M utf8.c
Log Message:
-----------
uvoffuni_to_utf8_flags_msgs(): Fix compiler warning
A parameter to this function was declared const in embed.fnc, but isn't
const.
This commit also adds a const to another parameter that is constant.
Commit: 72707a2271a60e726d0ac71f41f5ee88aac7f408
https://github.com/Perl/perl5/commit/72707a2271a60e726d0ac71f41f5ee88aac7f408
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M embed.fnc
M proto.h
Log Message:
-----------
S_clear_placeholders(): Fix compiler warning
A parameter to this function was declared const in its prototype but not
in embed.fnc, and had a different name
Commit: 2fe6ff3681d13c0d079570bab764fe1a737a2119
https://github.com/Perl/perl5/commit/2fe6ff3681d13c0d079570bab764fe1a737a2119
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M embed.fnc
M proto.h
M util.c
Log Message:
-----------
XXX memlog
Commit: b462aa685b3a322875d03b2cd7081d4df1356f0b
https://github.com/Perl/perl5/commit/b462aa685b3a322875d03b2cd7081d4df1356f0b
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M perl.h
M t/run/switchDx.t
Log Message:
-----------
debug thread
Commit: 01f9876a5fd3add10d97477ed4bdf3fa6da09520
https://github.com/Perl/perl5/commit/01f9876a5fd3add10d97477ed4bdf3fa6da09520
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M dist/threads/threads.xs
Log Message:
-----------
threads.xs DEBUG_U
Commit: 0f36a5b82d68e981d95173bf9ec1f0bcab0ea0a3
https://github.com/Perl/perl5/commit/0f36a5b82d68e981d95173bf9ec1f0bcab0ea0a3
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M lib/locale.t
Log Message:
-----------
XXX temp: lib/locale.t: debug
Commit: 38b3c157f797ecfa666f50e87a974b5fbe2e33cc
https://github.com/Perl/perl5/commit/38b3c157f797ecfa666f50e87a974b5fbe2e33cc
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M lib/locale.t
Log Message:
-----------
lib/locale.t FILE debug
Commit: c40e01df1ffc4771b0ec045841f54729d0d102f3
https://github.com/Perl/perl5/commit/c40e01df1ffc4771b0ec045841f54729d0d102f3
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M lib/locale.t
Log Message:
-----------
lib/locale.t
Commit: f163b7eeee60baee5a6b3553351abb1b8f065649
https://github.com/Perl/perl5/commit/f163b7eeee60baee5a6b3553351abb1b8f065649
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M perl.h
Log Message:
-----------
XXX perl.h: Debugging mutex lock'
Commit: 676b5e111d1d1d7e0f913c61e3c06e10c678cb85
https://github.com/Perl/perl5/commit/676b5e111d1d1d7e0f913c61e3c06e10c678cb85
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/version/t/07locale.t
M t/porting/customized.dat
Log Message:
-----------
07locale.t: Add some Windows locales to try
On various windows machines, none of the locales listed in <DATA> exist.
This commit copies ones from core's loc_tools.pl to give additional
possibilities to try
Commit: db8e700435e5abd1452bbc5a95740a7ea03e0b66
https://github.com/Perl/perl5/commit/db8e700435e5abd1452bbc5a95740a7ea03e0b66
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/version/t/07locale.t
Log Message:
-----------
cpan/version/07locale.t: drop, bug have to recompute md5
Commit: a746a829cff1b172252908ff2011dadb195fad71
https://github.com/Perl/perl5/commit/a746a829cff1b172252908ff2011dadb195fad71
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/porting/customized.dat
Log Message:
-----------
customized.dat
Commit: 41f04543195eaa8636b98aa0006e539476da02ca
https://github.com/Perl/perl5/commit/41f04543195eaa8636b98aa0006e539476da02ca
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/loc_tools.pl
Log Message:
-----------
loc_tools: XXX Debug
Commit: 7c073605d8020e7ea417343739941add26f97e7d
https://github.com/Perl/perl5/commit/7c073605d8020e7ea417343739941add26f97e7d
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
S_querylocale_2008_i: Add entry assertion
Commit: 7b872d68afd930e8bbdbbb940c4f68adff3b3643
https://github.com/Perl/perl5/commit/7b872d68afd930e8bbdbbb940c4f68adff3b3643
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
S_bool_setlocale_i: Add entry assertion
Commit: 20ef6a2f1f619ef1bf9b44c11a59d3e3325feaed
https://github.com/Perl/perl5/commit/20ef6a2f1f619ef1bf9b44c11a59d3e3325feaed
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
savepv if threaded, unused I think
Commit: c9981c1a7b4d637ef55b36a5e5c3b9e8d7380525
https://github.com/Perl/perl5/commit/c9981c1a7b4d637ef55b36a5e5c3b9e8d7380525
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M hints/darwin.sh
Log Message:
-----------
darwin hints querylocale race in earlier darwins?
Commit: cbf023b432069bb0770146414d6303f7403e094e
https://github.com/Perl/perl5/commit/cbf023b432069bb0770146414d6303f7403e094e
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M pp.c
Log Message:
-----------
pp_study: Add memory use debugging
Commit: 3325f8cf1fa1a15ab4f26c4a71b74290b4025419
https://github.com/Perl/perl5/commit/3325f8cf1fa1a15ab4f26c4a71b74290b4025419
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M pp.c
Log Message:
-----------
Revert "pp_study: Add memory use debugging"
Commit: 935656b8690aae7c3686147edd93a4a5cdb6be5d
https://github.com/Perl/perl5/commit/935656b8690aae7c3686147edd93a4a5cdb6be5d
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M hints/darwin.sh
Log Message:
-----------
darwin
Commit: eac6b2d100b99619d8fe9a693983e30646cbd376
https://github.com/Perl/perl5/commit/eac6b2d100b99619d8fe9a693983e30646cbd376
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M hints/freebsd.sh
Log Message:
-----------
Enable thread-safe locales on some freebsd versions
This had been disabled in the hints file due to bugs, which perl now
works around, so reenable (and reformat some lines for clarity)
Commit: 9f9190c8ecd9889c8034e7b0ace08e1ea25414a1
https://github.com/Perl/perl5/commit/9f9190c8ecd9889c8034e7b0ace08e1ea25414a1
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/run/locale.t
Log Message:
-----------
t/run/locale.t: debug
Commit: a18d473700a1ecface2ee2cb13405fdc3078fbbe
https://github.com/Perl/perl5/commit/a18d473700a1ecface2ee2cb13405fdc3078fbbe
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M lib/locale_threads.t
Log Message:
-----------
locale_threads: add a commented out yield
Commit: c0318fa017f4f361f9ad47a7f5433b04352884b1
https://github.com/Perl/perl5/commit/c0318fa017f4f361f9ad47a7f5433b04352884b1
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M lib/locale_threads.t
Log Message:
-----------
locale_threads: debugging
Commit: cfc0a552132b5081aacdcd5a5e365272cca30ac4
https://github.com/Perl/perl5/commit/cfc0a552132b5081aacdcd5a5e365272cca30ac4
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/Time-Piece/Piece.xs
Log Message:
-----------
Time::Piece: Use reentrant API
This single line magically makes this work much better under threading,
though critical section locks need to be added as well.
Commit: 0b2a13dd074c1f58602c0f9f556435bbd653cbaf
https://github.com/Perl/perl5/commit/0b2a13dd074c1f58602c0f9f556435bbd653cbaf
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/Time-Piece/Piece.xs
Log Message:
-----------
Time-Piece: Use foldEQ_locale() if available
This core function available since 5.13.2 is thread-safe and knows about
Perl internals, so is preferable to the similar libc function, which is
now used only as a fallback. This commit also bomb proofs the code by
adding an additional fallback, specified in C89, which isn't a great
substitute, but far better than nothing.
Commit: 084ee1f111638719ac41287065fb96f470bf485a
https://github.com/Perl/perl5/commit/084ee1f111638719ac41287065fb96f470bf485a
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/Time-Piece/Piece.xs
Log Message:
-----------
Time-Piece: Use isSPACE_LC, not isspace; etc
isDIGIT_LC() does the same thing as isdigit when everything goes well,
but is more robust when things get more complicated. The _LC forms are
thread safe, for example.
But note that this code doesn't work properly for a UTF-8 locale, as it
assumes that a byte and character are the same thing. A major overhaul
would be needed to handle that.
Commit: 44e99c7382ee769f55ad98235a59e52a4201b240
https://github.com/Perl/perl5/commit/44e99c7382ee769f55ad98235a59e52a4201b240
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M thread.h
Log Message:
-----------
thread.h: White space only
Indent some nested preproccessor defines
Commit: 245fef46371a2ec7f546c821825c0357d85e2741
https://github.com/Perl/perl5/commit/245fef46371a2ec7f546c821825c0357d85e2741
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/Time-Piece/Piece.pm
M cpan/Time-Piece/Piece.xs
M cpan/Time-Piece/Seconds.pm
M dist/Module-CoreList/lib/Module/CoreList.pm
Log Message:
-----------
Time::Piece: Add critical sections
This calls various macros to make certain libc calls uninterruptible, so
that they can be used safely in threaded applications, when this module
is loaded with a perl that supports this.
The macros are defined to do nothing if the perl doesn't contain working
versions of them. In such perls, the macros are also defined to do
nothing except on configurations that could have races.
Typically, an extra problem is that the libc calls return in a global
static buffer, subject to being overwritten by another thread. But an
earlier commit defined PERL_REENTRANT, which makes those functions
transparently return in a thread-local buffer instead. That doesn't
help if the function gets interrupted by another thread; this commit
completes the process.
Commit: 27c86e078798c18355c90cd0b70d646d56fc2eaa
https://github.com/Perl/perl5/commit/27c86e078798c18355c90cd0b70d646d56fc2eaa
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/Time-Piece/Piece.xs
Log Message:
-----------
XXX Time::Piece strftime
Commit: b545cb43f5d8846bf18e60a9bf3183af92f0627f
https://github.com/Perl/perl5/commit/b545cb43f5d8846bf18e60a9bf3183af92f0627f
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M cpan/Time-Piece/Piece.xs
Log Message:
-----------
Time-Piece: notes to myself
Commit: 883593856b0dfa82fefea4726b251f638c896af1
https://github.com/Perl/perl5/commit/883593856b0dfa82fefea4726b251f638c896af1
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M util.c
M win32/perlhost.h
Log Message:
-----------
XXX Win32 mem log
Commit: 95803afefa74695f936419f348fd471b675a4dce
https://github.com/Perl/perl5/commit/95803afefa74695f936419f348fd471b675a4dce
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M util.c
Log Message:
-----------
XXX util add thread to mem_log
Commit: dc43d4bbec998e050c0b7e4459b82b18e78234cb
https://github.com/Perl/perl5/commit/dc43d4bbec998e050c0b7e4459b82b18e78234cb
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
Debug wrap wset
Commit: aefd8c2da3963b2ba6346a3990546bd90156f827
https://github.com/Perl/perl5/commit/aefd8c2da3963b2ba6346a3990546bd90156f827
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M pod/perlhacktips.pod
Log Message:
-----------
XXX incomplete perlhacktips:
Commit: 62bb31921d6a7526eaf5a186037a8af03113b60b
https://github.com/Perl/perl5/commit/62bb31921d6a7526eaf5a186037a8af03113b60b
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M iperlsys.h
Log Message:
-----------
iperlsys.h: TODO need to look at adding mutexes
Commit: 89b37778ea7f2f969263e6dbcdbdd37e2c0486be
https://github.com/Perl/perl5/commit/89b37778ea7f2f969263e6dbcdbdd37e2c0486be
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M regen/reentr.pl
Log Message:
-----------
reentr.pl: XXX about needing mutex
Commit: 856904829a31e5d5c6f22405e70addf1fedf6e79
https://github.com/Perl/perl5/commit/856904829a31e5d5c6f22405e70addf1fedf6e79
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M dist/ExtUtils-ParseXS/lib/perlxs.pod
M pod/perlembed.pod
M pod/perlhacktips.pod
M pod/perllocale.pod
M t/porting/known_pod_issues.dat
Log Message:
-----------
perlxs
Commit: 53ec864bcc059e6c4c9723af086d5cc311d2ec79
https://github.com/Perl/perl5/commit/53ec864bcc059e6c4c9723af086d5cc311d2ec79
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M pod/perlmod.pod
Log Message:
-----------
perlmod
Commit: 6891773c05448faf6bd467e94bfd467e7bb96c57
https://github.com/Perl/perl5/commit/6891773c05448faf6bd467e94bfd467e7bb96c57
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M pod/perllocale.pod
Log Message:
-----------
perllocale Xxx start of changes
Commit: 2770ff968ced632f384393deefb8680030dc7807
https://github.com/Perl/perl5/commit/2770ff968ced632f384393deefb8680030dc7807
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M win32/config_H.gc
M win32/config_h.PL
M win32/config_sh.PL
Log Message:
-----------
XXX config
Commit: 7b2bd5cf0b16a6d1ed6b7e668dcb07500bd55eb6
https://github.com/Perl/perl5/commit/7b2bd5cf0b16a6d1ed6b7e668dcb07500bd55eb6
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M pod/perlembed.pod
Log Message:
-----------
f perlembed
Commit: 275862bd428022ca48529cfd9a5904cd3ef45fbb
https://github.com/Perl/perl5/commit/275862bd428022ca48529cfd9a5904cd3ef45fbb
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M intrpvar.h
M locale.c
M perl.h
Log Message:
-----------
Fixup FAKE_MINGW
This is used (by me) to partially emulate MingW on a *nix platform. It
was passing all its tests, but I discovered that I had the wrong #if
which was hence not enabling crucial parts of the emulation.
Commit: db995bfc6ef0960064eb5ce63718c519d9dd5046
https://github.com/Perl/perl5/commit/db995bfc6ef0960064eb5ce63718c519d9dd5046
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M lib/locale_threads.t
Log Message:
-----------
locale_threads: start of using platform locales
Commit: 7dec32a81ca37ec0f78ece7f0ff117eb0b9460c9
https://github.com/Perl/perl5/commit/7dec32a81ca37ec0f78ece7f0ff117eb0b9460c9
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M lib/locale_threads.t
Log Message:
-----------
Revert "locale_threads: start of using platform locales"
This reverts commit a7a8dea3aabb81a05aacaf3a26c49854a5854111.
Commit: e7fb54af4ec74d622d7854278612299e428c2f8c
https://github.com/Perl/perl5/commit/e7fb54af4ec74d622d7854278612299e428c2f8c
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
M perl.c
M sv.c
Log Message:
-----------
define numeric values to be C when no USE_NUMERIC
Commit: 849a8e900ac95f939ee3f13b6c9f895d6b8377a6
https://github.com/Perl/perl5/commit/849a8e900ac95f939ee3f13b6c9f895d6b8377a6
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
M perl.c
M sv.c
Log Message:
-----------
Revert "define numeric values to be C when no USE_NUMERIC"
This reverts commit 9bb7ff6531bf9e28d635a71e6d55c752a995da2d.
Commit: ff9df8778d2abf4ffc348cc2700eb354cf10aa56
https://github.com/Perl/perl5/commit/ff9df8778d2abf4ffc348cc2700eb354cf10aa56
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Add #define to separate label from declaration
This is designed to be mostly self-documenting.
Commit: 3a3b46654279bc9cb11c58d88691f485f822f3a2
https://github.com/Perl/perl5/commit/3a3b46654279bc9cb11c58d88691f485f822f3a2
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M pp.c
Log Message:
-----------
pp_study: hook
Commit: d5987d7bd4b0143b3655e0336ec531e55728c8c5
https://github.com/Perl/perl5/commit/d5987d7bd4b0143b3655e0336ec531e55728c8c5
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
rulereeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Commit: 76604d37449d7396cc52491c608cfd51fa133080
https://github.com/Perl/perl5/commit/76604d37449d7396cc52491c608cfd51fa133080
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M embed.fnc
M embed.h
M embedvar.h
M handy.h
M inline.h
M intrpvar.h
M locale.c
M makedef.pl
M mg.c
M perl.c
M perl.h
M pod/perlvar.pod
M proto.h
M sv.c
Log Message:
-----------
Add ability to emulate thread-safe locale operations
Locale information was originally global for an entire process. Later,
it was realized that different threads could want to be running in
different locales. Windows added this ability, and POSIX 2008 followed
suit (though using a completely different API). When available, perl
automatically uses these capabilities.
But many platforms have neither, or their implementation, such as on
Darwin, is buggy. This commit adds the capability for Perl programs to
operate as if the platform were thread-safe.
This implementation is based on the observation that the underlying
locale matters only to relatively few libc calls, and only during their
execution. It can be anything at all at any other time. perl keeps
what the proper locale should be for each category in a a per-thread
array. Each locale-dependent operation must be wrapped in mutex
lock/unlock operations. The lock additionally compares what libc knows
the locale to be, and what it should be for this thread at this time,
and changes the actual locale to the proper value if necessary. That's
all that is needed.
This commit adds macros to perl.h, for example "MBTOWC_LOCK_", that
expand to do the mutex lock, and change the global locale to the
expected value. On perls built without this emulation capability, they
are no-ops. All code in the perl core (unless I've missed something),
are changed to use these macros (there weren't actually many places that
needed this). Thus, any pure perl program will automatically become
locale-thread-safe under this Configuration.
In order for XS code to also become locale-thread-safe, it must use
these macros to wrap calls to locale-dependent functions. Relatively
few modules call such functions. For example, the only one I found that
ships with the perl core is Time::Piece, and it has more fundamental
issues with running under threads than this. I am preparing pull
requests for it.
Thus, this is not completely transparent to code like native-thread-safe
locale handling is. Therefore ${^SAFE_LOCALES} returns 2 (instead of 1)
for this type of thread-safety.
Another deficiency compared to the native thread safety is when a thread
calls a non-perl library that accesses the locale. The typical example is
Gtk (though this particular application can be configured to not be
problematic). With the native safe threads, everything works as long as
only one such thread is used per Perl program. That thread would then
be the only one operating in the global locale, hence there are no
conflicts. With this emulation, all threads are operating in the global
locale, and mutexes would have to be used to prevent conflicts. To
minimize those, the code added in this commit restores the global locale
when through to the state it was in when started.
A major concern is the performance impact. This is after all trading
speed for accuracy. lib/locale_threads.t is noticeably slower when this
is being used. But that is doing multiple threads constantly using
locale-dependent operations. I don't notice any change with the rest of
the test suite. In pure perl, this only comes into play while in the
scope of 'use locale' or when using some of the few POSIX:: functions
that are locale-dependent. And to some extent when formatting, but the
regular overhead there should dwarf what this adds.
This commit leaves this feature off by default. The next commit changes
that for the next few 5.39 development releases, so we can see if there
is actually an issue.
Commit: deeb804a67599b345e13a88bcbadb93e800bc239
https://github.com/Perl/perl5/commit/deeb804a67599b345e13a88bcbadb93e800bc239
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
maybe emul
Commit: 2ea9addecb82265497baa44159f32d0cfa64ae49
https://github.com/Perl/perl5/commit/2ea9addecb82265497baa44159f32d0cfa64ae49
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M embedvar.h
M intrpvar.h
M locale.c
M makedef.pl
M sv.c
Log Message:
-----------
more maybe
Commit: 1cbc8826872c46cb830701d062eef24afe8a1aef
https://github.com/Perl/perl5/commit/1cbc8826872c46cb830701d062eef24afe8a1aef
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Silence compiler warning
This tightens when this function is compiled to the actual
Configurations it is needed in.
Commit: f44c0a05fbebb75c22d57250810135157d929f60
https://github.com/Perl/perl5/commit/f44c0a05fbebb75c22d57250810135157d929f60
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
C_thous better ifdef
Commit: 1af8aa5aee9b3af9824195806b12d0647150c664
https://github.com/Perl/perl5/commit/1af8aa5aee9b3af9824195806b12d0647150c664
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M ext/POSIX/t/posix.t
M ext/POSIX/t/time.t
M ext/XS-APItest/t/locale.t
M lib/locale.t
M lib/locale_threads.t
Log Message:
-----------
skip tests if no strftime
Commit: 541d9bbc43e3758c896562d15a8f1a3c72eefd68
https://github.com/Perl/perl5/commit/541d9bbc43e3758c896562d15a8f1a3c72eefd68
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/loc_tools.pl
Log Message:
-----------
loctools use if dumper
Commit: f93144aeb233996dc5eb7da1f335e3128a663fcd
https://github.com/Perl/perl5/commit/f93144aeb233996dc5eb7da1f335e3128a663fcd
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M ext/POSIX/lib/POSIX.pod
Log Message:
-----------
start of pod for localeconv
Commit: 7a342f42522ce9935824e3cfc5b91a845aa90a21
https://github.com/Perl/perl5/commit/7a342f42522ce9935824e3cfc5b91a845aa90a21
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Add struct definition as a fallback
If we ever encountered a platform that didn't have localeconv(), nor its
structure definition, this could be used to get things to work.
Commit: 16129a30688b35a23b321325da90033d983a73b4
https://github.com/Perl/perl5/commit/16129a30688b35a23b321325da90033d983a73b4
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
debug populate localeconv
Commit: 28110821671ec36e8165f0d53368d7996a960962
https://github.com/Perl/perl5/commit/28110821671ec36e8165f0d53368d7996a960962
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M dist/threads/threads.xs
Log Message:
-----------
debug thread xs
Commit: 3b1545dc6acaa86449669cfdb4ee43f35cb12508
https://github.com/Perl/perl5/commit/3b1545dc6acaa86449669cfdb4ee43f35cb12508
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M lib/locale_threads.t
Log Message:
-----------
lib/locale_threads.t: Add debugging info
Commit: 8e3873bc718de305ced544f0e43ea9d709427375
https://github.com/Perl/perl5/commit/8e3873bc718de305ced544f0e43ea9d709427375
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M embed.fnc
M embed.h
M proto.h
M sv.c
Log Message:
-----------
Add newSVpvz() to create a sized SvPV.
There's no current trivial method to create a non-zero length SV that
will hold a PV.
Commit: 483a1ee8962ad043841c43cd22bd26e4ae947bb0
https://github.com/Perl/perl5/commit/483a1ee8962ad043841c43cd22bd26e4ae947bb0
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Call newSVpvz()
Commit: 6eb60082e99fecb7cfe69cb16826e9f6e64941ce
https://github.com/Perl/perl5/commit/6eb60082e99fecb7cfe69cb16826e9f6e64941ce
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Shorten critical section times
Toggling a category's locale has a cost, so if there are a bunch of
operations that are going to be done in a row in a particular toggled
state, it makes sense to toggle once, do them all, then toggle back.
Most of the toggling in this file is short term, but there are a few
places where it is advantageous to toggle once.
But on some Configurations, toggling creates a critical, uninterruptible
section. For these, keeping the amount of time spent in such a state
without letting other threads execute needs to be as short as feasible,
and this outweighs the cost of toggling and retoggling.
This commit balances these competing needs by creating new macros for
those cases where we want to have an overarching toggle. Those macros
become no-ops when the toggling creates an uninterruptible section.
Thus, when there is a cost to remaining toggled for longer periods,
those macros don't do anything, and the macros that are at the point of
the actual need are the ones that do the toggling/retoggling. In the
Configurations where there isn't such a cost, the overarching macros
kick in, and the shorter-term ones find that the state is already
toggled, and they return without doing anything.
Commit: 201cd81226c044fc3a4e771ae7f596cb61f95ec3
https://github.com/Perl/perl5/commit/201cd81226c044fc3a4e771ae7f596cb61f95ec3
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M perl.h
Log Message:
-----------
Add DEBUG_SETLOCALE_INCONSISTENCIES
Commit: e8f02bc4d2e24d0aeda397d01f4a6451505f0626
https://github.com/Perl/perl5/commit/e8f02bc4d2e24d0aeda397d01f4a6451505f0626
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M perl.h
Log Message:
-----------
Enable DEBUG_SETLOCALE_INCONSISTENCIES
Commit: 70ca551a1b12adc2c90c8a798e0a911535e1e024
https://github.com/Perl/perl5/commit/70ca551a1b12adc2c90c8a798e0a911535e1e024
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
Make numeric standard inconsistent
Commit: b0096cb47204408f0c7e191a80168f9445b32c76
https://github.com/Perl/perl5/commit/b0096cb47204408f0c7e191a80168f9445b32c76
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
M makedef.pl
M perl.h
Log Message:
-----------
Experimentally enable per-thread locale emulation
This is set to end in 5.39.10, but will give us field experience in the
meantime.
Commit: 5a45617e7079201b3f228a4e2eea2f88e460398c
https://github.com/Perl/perl5/commit/5a45617e7079201b3f228a4e2eea2f88e460398c
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M makedef.pl
M perl.h
Log Message:
-----------
Don't do thread-safe locales emulation on mingw
MingW when compiled with the Universal C runtime (UCRT) is thread-safe
with respect to locales, just as VS 2015 and later MSVCRT compilations
are.
However, versions not using UCRT cannot be compiled to emulate
thread-safe locale. I'm pretty sure this is due to a bug in the libc
strftime() function, having spent a bunch of hours working on this.
It often fails lib/locale_threads.t when using the emulation, but not
always. The failure is always in strftime().
What made me think it could be perl is another characteristic of the
failures. lib/locale_threads.t works by, in each thread, setting each
available locale category to a locale, different from any other category
in that thread, and as different as possible from the locale for the
corresponding category in any other thread. For example thread 0 might
have LC_CTYPE set to locale X, LC_NUMERIC to Y, LC_TIME to Z, etc.
Thread 1 would use a locale for LC_CTYPE, as different from X as
possible, meaning executing the same operation on thread 0 and thread 1
would yield different expected results. (It goes to some lengths to
calculate the biggest distance in the results.) Similarly LC_NUMERIC
would have something almost completely different from Y; and so on.
Then each thread executes a batch of iterations. Each iteration runs
all the operations I could find that perl uses that apply to LC_TYPE,
and all the ones that apply to each of the other categories. And
verifies that all the results are as expected.
Simultaneously, the other threads are executing their batch. It is
verifying that there is no bleed-through from one thread to another. If
the threads all have the same results as the other threads, we couldn't
detect if there is real bleed-through or not. This is solved by making
the results for each category as different as possible from any other
thread currently executing.
However, this isn't good enough. Every so many iterations, each thread
changes to use a new set of locales. This verifies that the locales can
be changed in a thread without that bleeding through to other threads.
And thread 0 is special. It harvests the other threads as they finish,
and keeps going for a while. This is to catch bugs in thread
completion, of which we've had a few.
MingW's failures all occur, when they occur, on the first iteration
following a switch to a new set of locales. That is suspiciously like
it is a race condition in cleaning up from the previous setting. But it
isn't the first test of the set of the first iteration of the next set.
It can be the 10th or so test. I added enough debugging statements to
convince me that it isn't perl.
This is the failing code in locale.c:
STRFTIME_LOCK;
int len = strftime(buf, bufsize, fmt, mytm);
STRFTIME_UNLOCK;
The returned 'buf' is not always correct.
T
The LOCK/UNLOCK macros on MingW with thread-safe emulation enabled, call
EnterCriticalSection(), and set the locales for the categories that
affect strftime() to the proper locale. Just to be sure. I tested
setting LC_ALL to the correct value. While in its uninterruptible (by
other locale handling code anyway) section, strftime() fills buf with
the result for the current locale (which STRFTIME_LOCK has set).
I added print statements within the critical section thusly
STRFTIME_LOCK;
DEBUG_U(PerlIO_printf(Perl_debug_log,
"calling strftime(%s), LC_ALL=%s\n",
fmt, setlocale(LC_ALL, NULL)));
int len = strftime(buf, bufsize, fmt, mytm);
DEBUG_U(PerlIO_printf(Perl_debug_log,
"return=%s, LC_ALL=%s\n",
buf, setlocale(LC_ALL, NULL)));
STRFTIME_UNLOCK;
On this platform, setlocale() expands to _wsetlocale(), a Windows libc
call.
Here's what they showed for one failure.
calling strftime(%b), LC_ALL=Hungarian_Hungary.1250
return=marc., LC_ALL=Hungarian_Hungary.1250
The 'a' in the Hungarian for March is supposed to be a U+00E1, with an
acute accent, so this is wrong.
strftime() also is passed a pointer to a struct tm, which is filled in
with various integers which indicate in this case which month the %b is
supposed to return. That it is returning something very much like márch
indicates those integers are correct.
Not shown in the example above are the other prints I added to verify
that we are indeed in a critical section. I didn't see a way to
actually test for this via a libc call, but one could use strace and
wade through the output. But there are print statements that print out
immediately before entering a critical section, and immediately after
leaving it. I verified that those prints indicate this code is in a
critical section.
I note that this box has actually not very many locales, so that the
distance between the results of various threads isn't all that large.
Pretty much all the locales are CP 1250, 1251, 1252, and 1257, and no
UTF-8 ones, so all locales are single byte. None of them map \XE1 into
plain 'a', which is what we are seeing returned, so the cleanup theory
seems wrong. Sometimes the return is '?' or a series of them,
indicating that the returned character is mojibake.
None of the locales I saw had 'marc\.' as a possible return. It appears
only here in the entire trace of all threads. This makes it again less
likely that it is a cleanup issue. But where did it come from?. I
don't know. The value for the C locale is 'Mar', so it didn't come from
there.
The localeconv() function is also broken in this Configuration. We long
ago figured out a workaround for that. I tried that same workaround for
strftime(), and it didn't help.
Commit: d236730017212c13b7b8568ed42e092f31856dbd
https://github.com/Perl/perl5/commit/d236730017212c13b7b8568ed42e092f31856dbd
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M perl.h
Log Message:
-----------
femul
Commit: a6637baff18e5462a292a0c991a29cf396238500
https://github.com/Perl/perl5/commit/a6637baff18e5462a292a0c991a29cf396238500
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
DEBUG Lv to U
Commit: 1e13247f48efc8e28a3357dc45171fcb6260554c
https://github.com/Perl/perl5/commit/1e13247f48efc8e28a3357dc45171fcb6260554c
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
extra debug
Commit: 5b85ca8dc551f1a45cae7ddc89026e9c5d3b15b9
https://github.com/Perl/perl5/commit/5b85ca8dc551f1a45cae7ddc89026e9c5d3b15b9
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
more emul locks
Commit: 3064edd9c6f13297c6e6854cdee173a56ae5bb99
https://github.com/Perl/perl5/commit/3064edd9c6f13297c6e6854cdee173a56ae5bb99
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
Revert "more emul locks"
This reverts commit 4733a1674423ee47b33eb0ee1882e1bf39faa1a6.
Commit: ba5ec11e5e1a36e9d58c63b235b3e37fb3ed05d2
https://github.com/Perl/perl5/commit/ba5ec11e5e1a36e9d58c63b235b3e37fb3ed05d2
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
langinfo lock
Commit: 9632c75a5c82b5be13bd6e2c0fcba98f328c3844
https://github.com/Perl/perl5/commit/9632c75a5c82b5be13bd6e2c0fcba98f328c3844
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
Revert "langinfo lock"
This reverts commit acaff35d7ed83830fb36c149aafede5cdf400061.
Commit: 9eb1346b1be03df559f1ad73022c1da9f0172e88
https://github.com/Perl/perl5/commit/9eb1346b1be03df559f1ad73022c1da9f0172e88
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
lock mask
Commit: e783974592ae7706677e6325158c29764e188b62
https://github.com/Perl/perl5/commit/e783974592ae7706677e6325158c29764e188b62
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
Revert "lock mask"
This reverts commit 3fd528c9d5d5b9c05dc1c697e61570b81811fb95.
Commit: b0a88a6139fa6589e32c2233ee3a9a2c0830e391
https://github.com/Perl/perl5/commit/b0a88a6139fa6589e32c2233ee3a9a2c0830e391
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Maybe comment'
Commit: c2b38049a586ea24b77db855c5bfaddab229acc8
https://github.com/Perl/perl5/commit/c2b38049a586ea24b77db855c5bfaddab229acc8
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M perl.h
Log Message:
-----------
XXX perl.h maybe drop
Commit: 8b77f69400fbfa6f4b8f5f22793ef883ef27e601
https://github.com/Perl/perl5/commit/8b77f69400fbfa6f4b8f5f22793ef883ef27e601
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M lib/locale_threads.t
Log Message:
-----------
Revert "locale_threads.t: Skip on OpenBSD and DragonFly threaded builds"
This reverts commit 1d74e8214dd53cf0fa9e8c5aab3e6187685eadcd, as they
have been modified
Commit: ecd4a88e6116c617f2fa7d8277d3b860e0d75a29
https://github.com/Perl/perl5/commit/ecd4a88e6116c617f2fa7d8277d3b860e0d75a29
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
Debug uselocale
Commit: 101196f7df2a5f03fae83929ea5458b328cdadf0
https://github.com/Perl/perl5/commit/101196f7df2a5f03fae83929ea5458b328cdadf0
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M sv.c
Log Message:
-----------
sv.c need to check for pv in sv in sv_setpvf
Commit: 1cf61457ed3db7622ae8d72b0142e0b74dd3f287
https://github.com/Perl/perl5/commit/1cf61457ed3db7622ae8d72b0142e0b74dd3f287
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M sv.c
Log Message:
-----------
sv
Commit: 48559f524e1557a91bc1147bd94e8e1f536d3ba9
https://github.com/Perl/perl5/commit/48559f524e1557a91bc1147bd94e8e1f536d3ba9
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
immediate use
Commit: d76456b9c4f28e5a4fee5e7c8bbf22b517fe4df9
https://github.com/Perl/perl5/commit/d76456b9c4f28e5a4fee5e7c8bbf22b517fe4df9
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
more immed
Commit: 67b523632e9c3ca2b9bc80a2e07e04cfc2d06f18
https://github.com/Perl/perl5/commit/67b523632e9c3ca2b9bc80a2e07e04cfc2d06f18
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
Revert "more immed"
This reverts commit d14fa3db195160b1170c3b169204fdfa10830fb8.
Commit: ec46a77511cf1762db8300ffb95422ea1e52bbeb
https://github.com/Perl/perl5/commit/ec46a77511cf1762db8300ffb95422ea1e52bbeb
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
Revert "immediate use"
This reverts commit f0df51da9259a5823f1561c492ff8e6b9eb2805a.
Commit: cf09c09a72fe4058f415962c585bdaabeaa53da1
https://github.com/Perl/perl5/commit/cf09c09a72fe4058f415962c585bdaabeaa53da1
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Comments, white space
Commit: 2c21e020c851a99fa0b9841a9ba3cf252d32c5ad
https://github.com/Perl/perl5/commit/2c21e020c851a99fa0b9841a9ba3cf252d32c5ad
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
add is_cur_locale_utf8
Commit: 5acd693545d45085a7edbdc17ed8df99a7a56131
https://github.com/Perl/perl5/commit/5acd693545d45085a7edbdc17ed8df99a7a56131
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M ext/POSIX/POSIX.xs
M locale.c
M perl.h
Log Message:
-----------
final
Commit: 201938f01a2dbf8180eb5120be0295527c45e6fd
https://github.com/Perl/perl5/commit/201938f01a2dbf8180eb5120be0295527c45e6fd
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/run/locale.t
Log Message:
-----------
t/run/locale.t: Change var name and hoist to larger scope
The old name was somewhat misleading
Commit: b1526b16e50959f10acd685009745c24d621bdb9
https://github.com/Perl/perl5/commit/b1526b16e50959f10acd685009745c24d621bdb9
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/run/locale.t
Log Message:
-----------
t/run/locale.t: Extract code into a sub
This is in preparation for it to be called from another place
Commit: 8c1410bc2993a597bdd730ad6c5b54740cf12011
https://github.com/Perl/perl5/commit/8c1410bc2993a597bdd730ad6c5b54740cf12011
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/run/locale.t
Log Message:
-----------
t/run/locale.t: Save sub return in an array
This is in preparation for it to be used again.
Commit: 28b41f6baf95fe40466e5ee3e349550c7c4e85ee
https://github.com/Perl/perl5/commit/28b41f6baf95fe40466e5ee3e349550c7c4e85ee
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M t/run/locale.t
Log Message:
-----------
t/run/locale.t: Add test
This is marked TODO; the next commit will cause this test to pass.
Commit: ec083d3e824ac77199917066653c26780cf26bb0
https://github.com/Perl/perl5/commit/ec083d3e824ac77199917066653c26780cf26bb0
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
M t/run/locale.t
Log Message:
-----------
S_find_locale_from_environment: Handle disparate LC_ALL
Prior to this commit, it was possible on some platforms to improperly
set a locale category from a locale of "".
Consider:
export LC_ALL="LC_CTYPE=de_DE;LC_NUMERIC=C;LC_TIME=de_DE;..."
and then run
print POSIX::setlocale(LC_NUMERIC, "");
It wouldn't know how to extract just the LC_NUMERIC part of the LC_ALL
string.
Commit: df6f8d129f8667fb796194fbc167141d6589dfe5
https://github.com/Perl/perl5/commit/df6f8d129f8667fb796194fbc167141d6589dfe5
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M perl.h
Log Message:
-----------
finish comment;: read env lock on posix setlocale lock
Commit: 5ba0d18460910ef80945b87168d97f0e96a94450
https://github.com/Perl/perl5/commit/5ba0d18460910ef80945b87168d97f0e96a94450
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Don't recalculate the locale
In these functions, we already know the locale, so pass it to the called
function instead of NULL, so that that function won't have to
recalculate it.
Commit: ad35a7da395595c26de1226f6a6918883344ff71
https://github.com/Perl/perl5/commit/ad35a7da395595c26de1226f6a6918883344ff71
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M regen/regen_lib.pl
Log Message:
-----------
regen/regen_lib.pl: Stop compile time warning
This suppresses the warning about negative repeat counts
Commit: 2a9f0465389eccaa8a66762cccd19c28401d0a75
https://github.com/Perl/perl5/commit/2a9f0465389eccaa8a66762cccd19c28401d0a75
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M regen/reentr.pl
Log Message:
-----------
regen/reentr.pl: Use hash instead of code conditionals
Fill this hash with the buffer sizes instead of using conditionals in
the code to do so. This is in preparation for more variance in the
sizes, which would otherwise increase the number of conditionals
Commit: e9b82552d3a7f376a9bd09dae899b65d620255b9
https://github.com/Perl/perl5/commit/e9b82552d3a7f376a9bd09dae899b65d620255b9
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M reentr.c
M regen/reentr.pl
Log Message:
-----------
reentr.pl: Increase strerror_r buffer size
We have seen cases where a libc strerror() buffer size of 80 is not
enough. See https://github.com/Perl/perl5/issues/21992.
One might think our current size for strerror_r() of 256 would handle
any situation, but in looking around for this, I saw that glibc bothers
to document that theirs is 1024. So this commit bumps it to that.
Commit: 7962cbc97de9b8a8c78347ebc046534dfa55558f
https://github.com/Perl/perl5/commit/7962cbc97de9b8a8c78347ebc046534dfa55558f
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M regen/reentr.pl
Log Message:
-----------
regen/reentr.pl: Update comments
Commit: f8abf906b3ab9a9c544ca9212509fef8d169935a
https://github.com/Perl/perl5/commit/f8abf906b3ab9a9c544ca9212509fef8d169935a
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M reentr.c
M regen/reentr.pl
Log Message:
-----------
regen/reentr.pl: Reserve L_cuserid bytes for getlogin_r buffer
This constant is defined by POSIX to be the max size of a user name. We
don't have to guess, as what was done before this commit.
Commit: 6297e503802e166a87b8d95496bd873489175f86
https://github.com/Perl/perl5/commit/6297e503802e166a87b8d95496bd873489175f86
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M reentr.c
M regen/reentr.pl
Log Message:
-----------
regen/reentr.pl: Reserve L_ctermid bytes for ttyname_r buffer
This constant is defined by POSIX to be the max size of the return of
ctermid(), which should be the same as for ttyname_r().
Commit: e43f252866c0c2cdd7a66d0d4a60cf854703772c
https://github.com/Perl/perl5/commit/e43f252866c0c2cdd7a66d0d4a60cf854703772c
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M doio.c
Log Message:
-----------
doio: Wrap functions with mutexes
Commit: ee878cda0f31f53c6f7ec1f8c2a4fc42ba7c1f55
https://github.com/Perl/perl5/commit/ee878cda0f31f53c6f7ec1f8c2a4fc42ba7c1f55
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M perl.c
Log Message:
-----------
perl.c: Wrap functions with mutexes
Commit: 35f70d68f52be28e630472fcc4b1add5a5ab1cf9
https://github.com/Perl/perl5/commit/35f70d68f52be28e630472fcc4b1add5a5ab1cf9
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M reentr.c
M reentr.h
M regen/reentr.pl
Log Message:
-----------
regen/reentr.pl: Update copyright year
Commit: 7d6be8f16416961074c742ad82293760cd1dacd8
https://github.com/Perl/perl5/commit/7d6be8f16416961074c742ad82293760cd1dacd8
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M reentr.h
M regen/reentr.pl
Log Message:
-----------
regen/reentr.pl: White-space, comment
Commit: dec29bc74b34ffbf4c1bc8fb12c7e039c5a8f9e6
https://github.com/Perl/perl5/commit/dec29bc74b34ffbf4c1bc8fb12c7e039c5a8f9e6
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M MANIFEST
A reentr_locks.h
M regen/reentr.pl
M t/porting/regen.t
Log Message:
-----------
regen/reentr.pl: Also generate mutex locking definitions
This program has a DATA table containing information about the reentrant
version of various functions. This commit adds two columns to that
tablwe containing information I researched about the thread-safety of
the non-reentrant functions vs the reentrant ones. It uses this to
generate a new header file of macro definitions that say how each
version should be locked.
The coder now need only use the name of a function to get to a macro
containing the appropriate definition; the coder need not know the
details.
Commit: 1481cb0dae7c86d26d01442973f8f94103ea5b34
https://github.com/Perl/perl5/commit/1481cb0dae7c86d26d01442973f8f94103ea5b34
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M perl.h
Log Message:
-----------
perl.h: Include the generated file from the previous commit
And remove the now duplicate LOCK definitions.
I checked an earlier version to make sure the new locks matched the old,
and the only changes were errors I had found in the old ones
e
Commit: 965c6b5eda85bb3e34c9793cf2a3ce92ac20a122
https://github.com/Perl/perl5/commit/965c6b5eda85bb3e34c9793cf2a3ce92ac20a122
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M pp_sys.c
Log Message:
-----------
pp_sys: Add locks around some calls
Commit: 9452fc9e2655f858d53344e0348b087ab68be985
https://github.com/Perl/perl5/commit/9452fc9e2655f858d53344e0348b087ab68be985
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M ext/I18N-Langinfo/Langinfo.xs
M iperlsys.h
M lib/locale.t
Log Message:
-----------
foo
Commit: f3634657d37c467fd34c724be2f8bb255d8c5e5b
https://github.com/Perl/perl5/commit/f3634657d37c467fd34c724be2f8bb255d8c5e5b
Author: Karl Williamson <[email protected]>
Date: 2024-02-19 (Mon, 19 Feb 2024)
Changed paths:
M locale.c
Log Message:
-----------
foo
Compare: https://github.com/Perl/perl5/compare/c6fcd80dc597...f3634657d37c
To unsubscribe from these emails, change your notification settings at
https://github.com/Perl/perl5/settings/notifications