This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta changes for this branch
[perl5.git] / pod / perldelta.pod
index ff79614..00a33b6 100644 (file)
@@ -5,15 +5,15 @@
 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
 to be processed before release. ]
 
-perldelta - what is new for perl v5.27.8
+perldelta - what is new for perl v5.27.9
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.27.7 release and the 5.27.8
+This document describes differences between the 5.27.8 release and the 5.27.9
 release.
 
-If you are upgrading from an earlier release such as 5.27.6, first read
-L<perl5277delta>, which describes differences between 5.27.6 and 5.27.7.
+If you are upgrading from an earlier release such as 5.27.7, first read
+L<perl5278delta>, which describes differences between 5.27.7 and 5.27.8.
 
 =head1 Notice
 
@@ -27,30 +27,22 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
-=head2 Close-on-exec flag set atomically
+=head2 New read-only predefined variable C<${^SAFE_LOCALES}>
 
-When opening a file descriptor, perl now generally opens it with its
-close-on-exec flag already set, on platforms that support doing so.
-This improves thread safety, because it means that an C<exec> initiated
-by one thread can no longer cause a file descriptor in the process
-of being opened by another thread to be accidentally passed to the
-executed program.
+This variable is 1 if the Perl interpreter is operating in an
+environment where it is safe to use and change locales (see
+L<perllocale>.)  This variable is true when the perl is
+unthreaded, or compiled in a platform that supports thread-safe locale
+operation (see next item).
 
-Additionally, perl now sets the close-on-exec flag more reliably, whether
-it does so atomically or not.  Most file descriptors were getting the
-flag set, but some were being missed.
+=head2 Locales are now thread-safe on systems that support them
 
-=head2 Mixed Unicode scripts are now detectable
+These systems include Windows starting with Visual Studio 2005, and in
+POSIX 2008 systems.
 
-A mixture of scripts, such as Cyrillic and Latin, in a string is often
-the sign of a spoofing attack.  A new regular expression construct
-now allows for easy detection of these.  For example, you can say
-
- qr/(?script_run: \d+ \b )/x
-
-And the digits matched will all be from the same set of 10.  You won't
-get a look-alike digit from a different script that has a different
-value than what it appears to be.
+The implication is that you are now free to use locales and changes them
+in a threaded environment.  Your changes affect only your thread.
+See L<perllocale/Multi-threaded operation>
 
 =head1 Security
 
@@ -70,14 +62,6 @@ XXX For a release on a stable branch, this section aspires to be:
 
 [ List each incompatible change as a =head2 entry ]
 
-=head2 Smartmatch and switch reversion
-
-The changes to the experimental smart match operator (C<~~>) and switch
-(C<given>/C<when>) constructs that were made in Perl 5.27.7 have been
-reverted due to the extent of the trouble caused to CPAN modules.
-It is expected that smartmatch will be changed again in the future,
-but preceded by some kind of explicit deprecation.
-
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -122,8 +106,7 @@ There may well be none in a stable release.
 
 =item *
 
-The performance of pattern matching C<[[:ascii:]]> and C<[[:^ascii:]]>
-has been improved significantly except on EBCDIC platforms.
+XXX
 
 =back
 
@@ -163,13 +146,6 @@ L<XXX> has been upgraded from version A.xx to B.yy.
 
 If there was something important to note about this change, include that here.
 
-=item *
-
-L<Unicode::UCD> has been upgraded from version 0.69 to 0.70.
-
-The function C<num> now accepts an optional parameter to help in
-diagnosing error returns.
-
 =back
 
 =head2 Removed Modules and Pragmata
@@ -247,7 +223,11 @@ XXX L<message|perldiag/"message">
 
 =item *
 
-XXX L<message|perldiag/"message">
+L<Locale '%s' contains (at least) the following characters which have
+non-standard meanings: %s  The Perl program will use the standard
+meanings|perldiag/"Locale '%s' contains (at least) the following
+characters which have non-standard meanings: %s  The Perl program will
+use the standard meanings">.
 
 =back
 
@@ -324,7 +304,8 @@ made:
 
 =item *
 
-XXX
+F<harness> no longer waits for 30 seconds when running
+F<t/io/openpid.t>.  [perl #121028][perl #132867]
 
 =back
 
@@ -348,6 +329,12 @@ source tree.
 
 XXX
 
+=item VMS
+
+CRTL features can now be set by embedders before invoking Perl by using the
+C<decc$feature_set> and C<decc$feature_set_value> functions.  Previously any attempt
+to set features after image initialization were ignored.
+
 =back
 
 =head2 Discontinued Platforms
@@ -389,7 +376,19 @@ well.
 
 =item *
 
-XXX
+A new compiler C<#define>, C<dTHX_DEBUGGING>. has been added.  This is
+useful for XS or C code that only need the thread context because their
+debugging statements that get compiled only under C<-DDEBUGGING> need
+one.
+
+=item *
+
+A new API function L<perlapi/Perl_setlocale> has been added.
+
+=item *
+
+L<perlapi/sync_locale> has been revised to return a boolean as to
+whether the system was using the global locale or not.
 
 =back
 
@@ -404,7 +403,22 @@ files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
 
 =item *
 
-XXX
+Failures while compiling code within other constructs, such as with
+string interpolation and the right part of C<s///e> now cause
+compilation to abort earlier.
+
+Previously compilation could continue in order to report other errors,
+but the failed sub-parse could leave partly parsed constructs on the
+parser shift-reduce stack, confusing the parser, leading to perl
+crashes. [perl #125351]
+
+=item *
+
+On threaded perls where the decimal point (radix) character is not a
+dot, it has been possible for a race to occur between threads when one
+needs to use the real radix character.  This has now been fixed by use
+of a mutex on systems without thread-safe locales, and the problem just
+doesn't come up on those with thread-safe locales.
 
 =back
 
@@ -422,15 +436,6 @@ platform specific bugs also go here.
 
 XXX
 
-=item *
-
-The bugfix for [perl #2754] in Perl 5.27.7 turned out to cause so much
-trouble on CPAN [perl #132577] that it is being postponed.  The bug has
-been restored, so C<exit(0)> in a C<UNITCHECK> or C<CHECK> block now
-once again permits the main program to run, and C<exit(0)> in a C<BEGIN>
-block once again permits C<INIT> blocks to run before exiting.  The bug
-will be fixed again for Perl 5.30.
-
 =back
 
 =head1 Errata From Previous Releases
@@ -453,7 +458,7 @@ died, add a short obituary here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.27.7..HEAD
+  perl Porting/acknowledgements.pl v5.27.8..HEAD
 
 =head1 Reporting Bugs