From f8f432a1aefb2ccf5facc7c4e4403e3fe6f064bb Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Sat, 21 Oct 2023 14:07:32 -0600 Subject: [PATCH] perldelta for locale changes --- pod/perldelta.pod | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/pod/perldelta.pod b/pod/perldelta.pod index d6dd0b8b7ba5..b8dfd80736d2 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -415,6 +415,46 @@ Don't clear the integer flag C from lines in the C<< @{"_<$sourcefile"} >> array when a C op is removed for that line. This was broken when fixing [GH #19198]. [GH #21564] +=item * + +Many bug fixes have been made for using locales under threads and in +embedded perls. And workarounds for libc bugs have been added. As a +result thread-safe locale handling is now the default under OpenBSD, and +MingW when compiled with UCRT. + +However, testing has shown that Darwin's implementation of thread-safe +locale handling has bugs. So now Perl doesn't attempt to use the +thread-safe operations when compiled on Darwin. + +As before, you can check to see if your program is running with +thread-safe locales by checking if the value of C<${^SAFE_LOCALES}> is +1. + +=item * + +Various bugs have been fixed when perl is configured with +C<-Accflags=-DNO_LOCALE_NUMERIC> or any other locale category (or +categories). + +=item * + +Not all locale categories need be set to the same locale. Perl now +works around bugs in the libc implementations of locale handling on some +platforms that previously could result in mojibake. + +=item * + +C is represented in one of two ways when not all locale +categories are set to the same locale. On some platforms, such as Linux +and Windows, the representation is of the form of a series of +C<'category=locale-name'> pairs. On other platforms, such as *BSD, the +representation is positional like S / I / ... >>. +I is always for a particular category as defined by the platform, +as are the other names. The sequence that separates the names +(the S> above) also varies by platform. Previously, perl had +problems with platforms that used the positional notation. This is now +fixed. + =back =head1 Known Problems