This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Return REPLACEMENT for UTF-8 empty malformation
[perl5.git] / pod / perldelta.pod
index 4c15c0a..fde4186 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.25.7
+perldelta - what is new for perl v5.25.9
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.25.6 release and the 5.25.7
+This document describes differences between the 5.25.8 release and the 5.25.9
 release.
 
-If you are upgrading from an earlier release such as 5.25.5, first read
-L<perl5256delta>, which describes differences between 5.25.5 and 5.25.6.
+If you are upgrading from an earlier release such as 5.25.7, first read
+L<perl5258delta>, which describes differences between 5.25.7 and 5.25.8.
 
 =head1 Notice
 
@@ -27,38 +27,6 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
-=head2 Indented Here-documents
-
-This adds a new modifier '~' to here-docs that tells the parser
-that it should look for /^\s*$DELIM\n/ as the closing delimiter.
-
-These syntaxes are all supported:
-
-    <<~EOF;
-    <<~\EOF;
-    <<~'EOF';
-    <<~"EOF";
-    <<~`EOF`;
-    <<~ 'EOF';
-    <<~ "EOF";
-    <<~ `EOF`;
-
-The '~' modifier will strip, from each line in the here-doc, the
-same whitespace that appears before the delimiter.
-
-Newlines will be copied as is, and lines that don't include the
-proper beginning whitespace will cause perl to croak.
-
-For example:
-
-    if (1) {
-      print <<~EOF;
-        Hello there
-        EOF
-    }
-
-prints "Hello there\n" with no leading whitespace.
-
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -121,12 +89,7 @@ There may well be none in a stable release.
 
 =item *
 
-Array and hash assignment are now faster, e.g.
-
-    (..., @a) = (...);
-    (..., %h) = (...);
-
-especially when the RHS is empty.
+XXX
 
 =back
 
@@ -158,6 +121,10 @@ XXX
 
 L<XXX> has been upgraded from version A.xx to B.yy.
 
+=item *
+
+L<Module::CoreList> has been upgraded from version 5.20161220 to 5.20170120.
+
 =back
 
 =head2 Removed Modules and Pragmata
@@ -189,13 +156,13 @@ 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<perlobj>
+=head3 L<XXX>
 
 =over 4
 
 =item *
 
-Added a section on calling methods using their fully qualified names.
+XXX Description of the change here
 
 =back
 
@@ -360,7 +327,24 @@ well.
 
 =item *
 
-XXX
+New versions of macros like C<isALPHA_utf8> have been added, each with the
+suffix C<_safe>, like C<isSPACE_utf8_safe>.  These take an extra
+parameter, giving an upper limit of how far into the string it is safe
+to read.  Using the old versions could cause attempts to read beyond the
+end of the input buffer if the UTF-8 is not well-formed.  Details are at
+L<perlapi/Character classification>.
+
+=item *
+
+Calling macros like C<isALPHA_utf8> on malformed UTF-8 have issued a
+deprecation warning since Perl v5.18.  They now die.
+
+=item *
+
+Calling the functions C<utf8n_to_uvchr> and its derivatives, while
+passing a string length of 0 is now asserted against in DEBUGGING
+builds, and otherwise returns the Unicode REPLACEMENT CHARACTER.   If
+you have nothing to decode, you shouldn't call the decode function.
 
 =back
 
@@ -375,17 +359,8 @@ files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
 
 =item *
 
-List assignment in list context where the LHS contained aggregates and
-where there were not enough RHS elements, used to skip scalar lvalues.
-Previously, C<(($a,$b,@c,$d) = (1))> in list context returned C<($a)>; now
-it returns C<($a,$b,$d)>. C<(($a,$b,$c) = (1))> is unchanged: it still
-returns <($a,$b,$c)>. This can be seen in the following:
-
-    sub inc { $_++ for @_ }
-    inc(($a,$b,@c,$d) = (10))
-
-Formerly, the values of C<($a,$b,$d)> would be left as C<(11,undef,undef)>;
-now they are C<(11,1,1)>.
+Under C<use utf8>, the entire Perl program is now checked that the UTF-8
+is wellformed.  This resolves [perl #126310].
 
 =back