diff options
author | Karl Williamson <khw@cpan.org> | 2022-10-20 07:10:14 -0600 |
---|---|---|
committer | Karl Williamson <khw@cpan.org> | 2022-10-20 07:18:31 -0600 |
commit | f314fe7bb6c34b0db124d4fc87d9fc8e429f0087 (patch) | |
tree | e0a8eccd0c3ce1ec3c1e347f20449b905a376c44 | |
parent | 144dfbc7545720fb0e6e8364370a991bdf8acf76 (diff) | |
download | perl-f314fe7bb6c34b0db124d4fc87d9fc8e429f0087.tar.gz |
Add some perldelta entries for 5.37.5
-rw-r--r-- | pod/perldelta.pod | 44 |
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 |