X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/a19564f7dac42c5dc47e1e3e792d670223548c44..4ee2b8db537d28b77d127a86307e426289e5c8b5:/pod/perldelta.pod diff --git a/pod/perldelta.pod b/pod/perldelta.pod index c218051..467f17f 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -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.6 +perldelta - what is new for perl v5.25.9 =head1 DESCRIPTION -This document describes differences between the 5.25.5 release and the 5.25.6 +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.4, first read -L, which describes differences between 5.25.4 and 5.25.5. +If you are upgrading from an earlier release such as 5.25.7, first read +L, which describes differences between 5.25.7 and 5.25.8. =head1 Notice @@ -47,7 +47,15 @@ XXX For a release on a stable branch, this section aspires to be: =head1 Deprecations -XXX Any deprecated features, syntax, modules etc. should be listed here. +=head2 String delimiters that aren't stand-alone graphemes are now +deprecated + +In order for Perl to eventually allow string delimiters to be Unicode +grapheme clusters (which look like a single character, but may be +a sequence of several ones), we have to stop allowing a single char +delimiter that isn't a grapheme by itself. These are unlikely to exist +in actual code, as they would typically display as attached to the +character in front of them. =head2 Module removals @@ -80,19 +88,16 @@ as an updated module in the L section. =head1 Performance Enhancements -=over 4 +XXX Changes which enhance performance without changing behaviour go here. +There may well be none in a stable release. -=item * +[ List each enhancement as a =item entry ] -Converting a single-digit string to a number is now substantially faster. +=over 4 =item * -The internal op implementing the C builtin has been simplified and -sped up. Firstly, it no longer requires a subsidiary internal C op -to do its work. Secondly, code of the form C is now -optimised in the same way as C<@x = split(...)>, and is therefore a few -percent faster. +XXX =back @@ -122,12 +127,79 @@ XXX =item * -L now produces output that is more descriptive for C -flags. +L has been upgraded from version A.xx to B.yy. =item * -L has been upgraded from version A.xx to B.yy. +L has been upgraded from version 1.05 to 1.06. + +=item * + +L has been upgraded from version 1.07 to 1.08. + +=item * + +L has been upgraded from version 1.35 to 1.36. + +=item * + +L has been upgraded from version 1.05 to 1.06. + +=item * + +L has been upgraded from version 1.40 to 1.41. + +=item * + +L has been upgraded from version 1.27 to 1.28. + +=item * + +L has been upgraded from version 1.33 to 1.34. + +=item * + +L has been upgraded from version 0.41 to 0.42. + +=item * + +L has been upgraded from version 0.63 to 0.64. + +=item * + +L has been upgraded from version 5.20161220 to 5.20170120. + +=item * + +L has been upgraded from version 1.11 to 1.12. + +=item * + +L has been upgraded from version 1.50 to 1.51. + +=item * + +L has been upgraded from version 2.59 to 2.60. + +=item * + +L has been upgraded from version 1.07 to 1.08. + +=item * + +L has been upgraded from version 1.15 to 1.16. + +=item * + +L has been upgraded from version 1.29 to 1.30. + +=item * + +L has been upgraded from version 0.67 to 0.68. + +=item * + +L has been upgraded from version 0.24 to 0.26. =back @@ -212,15 +284,7 @@ XXX Changes (i.e. rewording) of diagnostic messages go here =item * -Details as to the exact problem have been added to the diagnostics that -occur when malformed UTF-8 is encountered when trying to convert to a -code point. - -=item * - -Executing C where C<$x> is tied or magical no longer incorrectly -blames the variable for an uninitialized-value warning encountered by the -tied/magical code. +XXX Describe change here =back @@ -256,8 +320,7 @@ L section, instead. =item * -Builds using C now work again; this configuration had -bit-rotted. +XXX =back @@ -275,11 +338,7 @@ that they represent may be covered elsewhere. =item * -Some parts of the test suite that try to exhaustively test edge cases in the -regex implementation have been restricted to running for a maximum of five -minutes. On slow systems they could otherwise take several hours, without -significantly improving our understanding of the correctness of the code -under test. +XXX =back @@ -292,16 +351,16 @@ changes as paragraphs below it. ] =head2 New Platforms +XXX List any platforms that this version of perl compiles on, that previous +versions did not. These will either be enabled by new files in the F +directories, or new subdirectories and F files at the top level of the +source tree. + =over 4 -=item NetBSD/VAX +=item XXX-some-platform -Perl now compiles under NetBSD on VAX machines. However, it's not -possible for that platform to implement floating-point infinities and -NaNs compatibly with most modern systems, which implement the IEEE-754 -floating point standard. The hexadecimal floating point (C<0x...p[+-]n> -literals, C) is not implemented, either. -The C passes 98% of tests. +XXX =back @@ -344,51 +403,47 @@ well. =item * -The C type has changed from being unsigned to signed, and -several pad-related variables such as C have changed from being -of type C to type C. +New versions of macros like C and C have +been added, each with the +suffix C<_safe>, like C. 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, and ther use +now raises a deprecation warning. Details are at +L. =item * -The function C> has been changed to not -abandon searching for other malformations when the first one is -encountered. A call to it thus can generate multiple diagnostics, -instead of just one. +Calling macros like C on malformed UTF-8 have issued a +deprecation warning since Perl v5.18. They now die. +Similarly, macros like C on malformed UTF-8 now die. =item * -A new function, C>, has been added for -use by modules that need to know the details of UTF-8 malformations -beyond pass/fail. Previously, the only ways to know why a sequence was -ill-formed was to capture and parse the generated diagnostics, or to do -your own analysis. +Calling the functions C 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. =item * -Several new functions for handling Unicode have been added to the API: -C>, -C>, -C>, -C>, -C>, -C>, -C>, -C>, -C>, -C>, -C>, -C>. - -These functions are all extensions of the C functions, -that apply various restrictions to the UTF-8 recognized as valid. +The functions C and its derivatives now return the +Unicode REPLACEMENT CHARACTER if called with UTF-8 that has the overlong +malformation, and that malformation is allowed by the input parameters. +This malformation is where the UTF-8 looks valid syntactically, but +there is a shorter sequence that yields the same code point. This has +been forbidden since Unicode version 3.1. =item * -All parts of the internals now agree that the C op is a C; -previously it was listed as a C in F, which meant -that several parts of the internals had to be special-cased to accommodate -it. This oddity's original motivation was to handle code like C<$x ||= 1>; -that is now handled in a simpler way. +The functions C and its derivatives now accept an input +flag to allow the overflow malformation. This malformation is when the +UTF-8 may be syntactically valid, but the code point it represents is +not capable of being represented in the word length on the platform. +What "allowed" means in this case is that the function doesn't return an +error, and advances the parse pointer to beyond the UTF-8 in question, +but it returns the Unicode REPLACEMENT CHARACTER as the value of the +code point (since the real value is not representable). =back @@ -403,20 +458,8 @@ files in F and F are best summarized in L. =item * -A sub containing a "forward" declaration with the same name (e.g., -C) could sometimes crash or loop infinitely. [perl -#129090] - -=item * - -A crash in executing a regex with a floating UTF-8 substring against a -target string that also used UTF-8 has been fixed. [perl #129350] - -=item * - -Previously, a shebang line like C<#!perl -i u> could be erroneously -interpreted as requesting the C<-u> option. This has been fixed. [perl -#129336] +Under C, the entire Perl program is now checked that the UTF-8 +is wellformed. This resolves [perl #126310]. =back