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 4b25433..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.8
+perldelta - what is new for perl v5.25.9
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.25.7 release and the 5.25.8
+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.6, first read
-L<perl5257delta>, which describes differences between 5.25.6 and 5.25.7.
+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,16 +27,6 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
-=head2 New Hash Function For 64-bit Builds
-
-We have switched to a hybrid hash function to better balance
-performance for short and long keys.
-
-For short keys, 16 bytes and under, we use an optimised variant of
-One At A Time Hard, and for longer keys we use Siphash 1-3. For very
-long keys this is a big improvement in performance. For shorter keys
-there is a modest improvement.
-
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -97,16 +87,9 @@ There may well be none in a stable release.
 
 =over 4
 
-=item * New Faster Hash Function on 64 bit builds
-
-We use a different hash function for short and long keys. This should
-improve performance and security, especially for long keys.
-
-=item * readline is faster
+=item *
 
-Reading from a file line-by-line with c<readline()> or C<< <> >> should
-now typically be faster due to a better implementation of the code that
-searches for the next newline character.
+XXX
 
 =back
 
@@ -140,11 +123,7 @@ L<XXX> has been upgraded from version A.xx to B.yy.
 
 =item *
 
-L<Pod::Simple> has been upgraded from version 3.32 to 3.35.
-
-=item *
-
-L<Test::Simple> has been upgraded from version 1.302067 to 1.302071.
+L<Module::CoreList> has been upgraded from version 5.20161220 to 5.20170120.
 
 =back
 
@@ -348,8 +327,24 @@ well.
 
 =item *
 
-A new API function, C<sv_set_undef(sv)>, has been added. This is
-equivalent to C<sv_setsv(sv, &PL_sv_undef)>, but is more efficient.
+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
 
@@ -364,7 +359,8 @@ files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
 
 =item *
 
-XXX
+Under C<use utf8>, the entire Perl program is now checked that the UTF-8
+is wellformed.  This resolves [perl #126310].
 
 =back