This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
readd noreturn and silence "noreturn that returns" warning on MSVC
[perl5.git] / pod / perldelta.pod
index e031b7f..1e4e7b2 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.21.5
+perldelta - what is new for perl v5.21.6
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.21.4 release and the 5.21.5
+This document describes differences between the 5.21.5 release and the 5.21.6
 release.
 
-If you are upgrading from an earlier release such as 5.21.3, first read
-L<perl5214delta>, which describes differences between 5.21.3 and 5.21.4.
+If you are upgrading from an earlier release such as 5.21.4, first read
+L<perl5215delta>, which describes differences between 5.21.4 and 5.21.5.
 
 =head1 Notice
 
@@ -27,29 +27,21 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
-=head2 Perl now supports POSIX 2008 locale currency additions.
-
-On platforms that are able to handle POSIX.1-2008, the
-hash returned by
-L<C<POSIX::localeconv()>|perllocale/The localeconv function>
-includes the international currency fields added by that version of the
-POSIX standard.  These are
-C<int_n_cs_precedes>,
-C<int_n_sep_by_space>,
-C<int_n_sign_posn>,
-C<int_p_cs_precedes>,
-C<int_p_sep_by_space>,
-and
-C<int_p_sign_posn>.
+=head2 List form of pipe open implemented for Win32
 
-=head1 Security
+The list form of pipe:
+
+  open my $fh, "-|", "program", @arguments;
 
-=head2 Perl is now compiled with -fstack-protector-strong if available
+is now implemented on Win32.  It has the same limitations as C<system
+LIST> on Win32, since the Win32 API doesn't accept program arguments
+as a list.
+
+=head1 Security
 
-Perl has been compiled with the anti-stack-smashing option
-C<-fstack-protector> since 5.10.1.  Now Perl uses the newer variant
-called C<-fstack-protector-strong>, if available.  (This was added
-already in 5.21.4.)
+XXX Any security-related notices go here.  In particular, any security
+vulnerabilities closed should be noted here rather than in the
+L</Selected Bug Fixes> section.
 
 [ List each security issue as a =head2 entry ]
 
@@ -94,20 +86,18 @@ as an updated module in the L</Modules and Pragmata> section.
 
 =back
 
-=head2 Use of multiple /x regexp modifiers
+[ List each other deprecation as a =head2 entry ]
 
-It is now deprecated to say something like any of the following:
+=head2 Use of non-graphic characters in single-character variable names
 
-    qr/foo/xx;
-    /(?xax:foo)/;
-    use re qw(/amxx);
-
-That is, now C<x> should only occur once in any string of contiguous
-regular expression pattern modifiers.  We do not believe there are any
-occurrences of this in all of CPAN.  This is in preparation for a future
-Perl release having C</xx> mean to allow white-space for readability in
-bracketed character classes (those enclosed in square brackets:
-C<[...]>).
+The syntax for single-character variable names is more lenient than
+for longer variable names, allowing the one-character name to be a
+punctuation character or even invisible (a non-graphic).  Perl v5.20
+deprecated the ASCII-range controls as such a name.  Now, all
+non-graphic characters that formerly were allowed are deprecated.
+The practical effect of this occurs only when not under C<S<"use
+utf8">>, and affects just the C1 controls (code points 0x80 through
+0xFF), NO-BREAK SPACE, and SOFT HYPHEN.
 
 =head1 Performance Enhancements
 
@@ -120,14 +110,7 @@ There may well be none in a stable release.
 
 =item *
 
-C<length> is up to 20% faster for non-magical/non-tied scalars containing a
-string if it is a non-utf8 string or if C<use bytes;> is in scope.
-
-=item *
-
-Non-magical/non-tied scalars that contain only a floating point value and are
-on most Perl builds with 64 bit integers now use 8-32 less bytes of memory
-depending on OS.
+XXX
 
 =back
 
@@ -157,22 +140,9 @@ XXX
 
 =item *
 
-L<attributes> has been upgraded from version 0.23 to 0.24.
-
-Avoid reading beyond the end of a buffer. [perl #122629]
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20140920 to 5.20141020.
-
-Updated to cover the latest releases of Perl.
-
-=item *
-
-L<XSLoader> has been upgraded from version 0.17 to 0.18.
+L<IO::Socket> has been upgraded from version 1.37 to 1.38.
 
-Allow XSLoader to load modules from a different namespace.
-[perl #122455]
+Document the limitations of the isconnected() method.  [perl #123096]
 
 =back
 
@@ -205,18 +175,14 @@ XXX Changes which significantly change existing files in F<pod/> go here.
 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
 section.
 
-=head3 L<XXX>
+=head3 L<perldata/Identifier parsing>
 
 =over 4
 
 =item *
 
-Clarifications have been added to L<perlrecharclass/Character Ranges>
-to the effect that Perl guarantees that C<[A-Z]>, C<[a-z]>, C<[0-9]> and
-any subranges thereof in regular expression bracketed character classes
-are guaranteed to match exactly what a naive English speaker would
-expect them to match, even on platforms (such as EBCDIC) where special
-handling is required to accomplish this.
+The syntax of single-character variable names has been brought
+up-to-date and more fully explained.
 
 =back
 
@@ -250,7 +216,24 @@ XXX L<message|perldiag/"message">
 
 =item *
 
-XXX L<message|perldiag/"message">
+L<Use of literal non-graphic characters in variable names is deprecated|perldiag/"Use of literal non-graphic characters in variable names is deprecated">
+
+=item *
+
+A new C<locale> warning category has been created, with the following warning
+messages currently in it:
+
+=over 4
+
+=item *
+
+L<Locale '%s' may not work well.%s|perldiag/Locale '%s' may not work well.%s>
+
+=item *
+
+L<Can't do %s("%s") on non-UTF-8 locale; resolved to "%s".|perldiag/Can't do %s("%s") on non-UTF-8 locale; resolved to "%s".>
+
+=back
 
 =back
 
@@ -298,7 +281,7 @@ L</Platform Support> section, instead.
 
 =item *
 
-XXX
+F<Configure> with C<-Dmksymlinks> should now be faster. [perl #122002]
 
 =back
 
@@ -363,15 +346,28 @@ L</Modules and Pragmata> section.
 
 =over 4
 
-=item EBCDIC
+=item XXX-some-platform
+
+XXX
+
+=back
+
+=head3 Win32
+
+=over 4
+
+=item *
+
+In the experimental C<:win32> layer, a crash in C<open> was fixed. Also
+opening C</dev/null>, which works the Win32 Perl's normal C<:unix> layer, was
+implemented for C<:win32>.
+L<[perl #122224]|https://rt.perl.org/Ticket/Display.html?id=122224>
+
+=item *
 
-Special handling is required on EBCDIC platforms to get C<qr/[i-j]/> to
-match only C<"i"> and C<"j">, since there are 7 characters between the
-code points for C<"i"> and C<"j">.  This special handling had only been
-invoked when both ends of the range are literals.  Now it is also
-invoked if any of the C<\N{...}> forms for specifying a character by
-name or Unicode code point is used instead of a literal.  See
-L<perlrecharclass/Character Ranges>.
+A new makefile option, C<USE_LONG_DOUBLE>, has been added to the Windows
+dmake makefile for gcc builds only.  Set this to "define" if you want perl to
+use long doubles to give more accuracy and range for floating point numbers.
 
 =back
 
@@ -387,10 +383,9 @@ well.
 
 =item *
 
-SVs of type SVt_NV are now bodyless when a build configure and platform allow
-it, specifically C<sizeof(NV) <= sizeof(IV)>. The bodyless trick is the same one
-as for IVs since 5.9.2, but for NVs, unlike IVs, is not guarenteed on all
-platforms and build configurations.
+C<screaminstr> has been removed. Although marked as public API, it is
+undocumented and has no usage in modern perl versions on CPAN Grep. Calling it
+has been fatal since 5.17.0.
 
 =back
 
@@ -405,7 +400,30 @@ files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
 
 =item *
 
-XXX
+fchmod() and futimes() now set C<$!> when they fail due to being
+passed a closed file handle.  [perl #122703]
+
+=item *
+
+Perl now comes with a corrected Unicode 7.0 for the erratum issued on
+October 21, 2014 (see L<http://www.unicode.org/errata/#current_errata>),
+dealing with glyph shaping in Arabic.
+
+=item *
+
+op_free() no longer crashes due to a stack overflow when freeing a
+deeply recursive op tree. [perl #108276]
+
+=item *
+
+scalarvoid() would crash due to a stack overflow when processing a
+deeply recursive op tree. [perl #108276]
+
+=item *
+
+In Perl 5.20.0, C<$^N> accidentally had the internal UTF8 flag turned off
+if accessed from a code block within a regular expression, effectively
+UTF8-encoding the value.  This has been fixed.  [perl #123135]
 
 =back
 
@@ -421,7 +439,10 @@ platform specific bugs also go here.
 
 =item *
 
-XXX
+Starting in 5.21.6, accessing L<perlapi/CvPADLIST> in an XSUB is forbidden.
+CvPADLIST has be reused for a different internal purpose for XSUBs. Guard all
+CvPADLIST expressions with C<CvISXSUB()> if your code doesn't already block
+XSUB CV*s from going through optree CV* expecting code.
 
 =back
 
@@ -445,7 +466,7 @@ here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.21.4..HEAD
+  perl Porting/acknowledgements.pl v5.21.5..HEAD
 
 =head1 Reporting Bugs