summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2022-10-20 07:10:14 -0600
committerKarl Williamson <khw@cpan.org>2022-10-20 07:18:31 -0600
commitf314fe7bb6c34b0db124d4fc87d9fc8e429f0087 (patch)
treee0a8eccd0c3ce1ec3c1e347f20449b905a376c44
parent144dfbc7545720fb0e6e8364370a991bdf8acf76 (diff)
downloadperl-f314fe7bb6c34b0db124d4fc87d9fc8e429f0087.tar.gz
Add some perldelta entries for 5.37.5
-rw-r--r--pod/perldelta.pod44
1 files changed, 41 insertions, 3 deletions
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 0c4dcbb764..3f44832b92 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -17,7 +17,32 @@ L<perl5374delta>, which describes differences between 5.37.3 and 5.37.4.
=head1 Notice
-XXX Any important notices here
+Perl 5.28 introduced "thread-safe" locales on systems that supported
+them, namely modern Windows, and systems supporting POSIX 2008 locale
+operations. These systems accomplish this by having per-thread locales,
+while continuing to support the older global locale operations for code
+that doesn't take the steps necessary to use the newer per-thread ones.
+
+It turns out that some POSIX 2008 platforms have or have had buggy
+implementations, which forced perl to not use them. The
+C<${^SAFE_LOCALES}> scalar variable contains 0 or 1 to indicate whether
+or not the current platform is considered by perl to have a working
+thread-safe implementation. Some implementations have been fixed
+already, but FreeBSD and Cygwin have been newly discovered to be
+sufficiently buggy that the thread-safe operations are no longer used by
+perl, starting in this release. Hence, C<${^SAFE_LOCALES}> is now 0 for
+them. Older versions of perl can be configured to avoid these buggy
+implementations by adding the F<Configure> option
+C<-DNO_POSIX_2008_LOCALE>.
+
+And 5.37.5 fixes a bug in all previous perls that led to locales not
+being fully thread-safe. The first thread that finishes caused
+the main thread (named C<thread0>) to revert to the global locale in
+effect at startup, discarding whatever the thread's locale had been
+previously set to. If any other thread had switched to the global
+locale by calling C<switch_to_global_locale()> in XS code, those threads
+would all share the global locale, and C<thread0> would not be
+thread-safe.
=head1 Core Enhancements
@@ -173,13 +198,26 @@ section.
Additionally, the following selected changes have been made:
-=head3 L<XXX>
+=head3 L<perlhacktips/Writing safer macros>
+
+=over 4
+
+=item *
+
+A new section has been added to discuss pitfalls and solutions to using
+C macros in C and XS code.
+
+=back
+
+=head3 L<perlhacktips/Choosing good symbol names>
=over 4
=item *
-XXX Description of the change here
+A new section has been added to discuss unexpected gotchas with names.
+(Actually this section was added in v5.37.4, but notice of it was
+inadvertently left out of that perl delta.)
=back