This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for cfc7ef1
[perl5.git] / pod / perldelta.pod
index abd428e..1d8ad2f 100644 (file)
@@ -27,6 +27,15 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
+=head2 Infinity and NaN (not-a-number) handling improved
+
+Floating point values are able to hold the special values infinity
+(also -infinity), and NaN (not-a-number).  Now we more robustly recognize
+and propagate the value in computations, and on output normalize them
+to C<Inf> and C<NaN>.
+
+See also the L<POSIX> enhancements.
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -45,6 +54,23 @@ XXX For a release on a stable branch, this section aspires to be:
 
 [ List each incompatible change as a =head2 entry ]
 
+=head2 Changes to the C<*> prototype
+
+The C<*> character in a subroutine's prototype used to allow barewords
+to take precedence over most, but not all subroutines.  It was never
+consistent and exhibited buggy behaviour.
+
+Now it has been changed, so subroutines always take precedence over
+barewords, which brings it into conformity with similarly prototyped
+built-in functions:
+
+    sub splat($) { ... }
+    sub foo { ... }
+    splat(foo); # now always splat(foo())
+    splat(bar); # still splat('bar') as before
+    close(foo); # close(foo())
+    close(bar); # close('bar')
+
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -123,15 +149,11 @@ L<XXX> has been upgraded from version A.xx to B.yy.
 
 =item *
 
-L<File::Find> has been upgraded from version 1.27 to 1.28.
-
-C<find()> and C<finddepth()> will now warn if passed inappropriate or
-misspelled options.
+L<B::Concise> has been upgraded from version 0.992 to 0.993.
 
 =item *
 
-L<B::Concise> has been upgraded from version 0.992 to 0.993.
-
+L<CPAN::Meta::Requirements> has been upgraded from version 2.126 to 2.128.
 
 =item *
 
@@ -145,6 +167,23 @@ L<ExtUtils::Manifest> has been upgraded from version 1.65 to 1.66.
 
 =item *
 
+L<ExtUtils::ParseXS>:  Documentation has been added to
+F<ExtUtils-ParseXS/lib/perlxs.pod> concerning handling of locales when writing
+XS code.
+
+=item *
+
+L<File::Find> has been upgraded from version 1.27 to 1.28.
+
+C<find()> and C<finddepth()> will now warn if passed inappropriate or
+misspelled options.
+
+=item *
+
+L<Getopt::Std> has been upgraded from version 1.10 to 1.11.
+
+=item *
+
 L<HTTP::Tiny> has been upgraded from version 0.047 to 0.048.
 
 =item *
@@ -155,12 +194,19 @@ L<Module::CoreList> has been upgraded from version 5.021003 to 5.021004.
 
 L<POSIX> has been upgraded from version 1.42 to 1.43.
 
+The C99 math functions and constants (for example acosh, round,
+M_E, M_PI) have been added.
+
 =item *
 
 L<Pod::Perldoc> has been upgraded from version 3.23 to 3.24.
 
 =item *
 
+Scalar-List-Utils has been upgraded from version 1.40 to 1.41.
+
+=item *
+
 L<constant> has been upgraded from version 1.31 to 1.32.
 
 It now accepts fully-qualified constant names, allowing constants to be
@@ -209,6 +255,11 @@ section.
 
 XXX Description of the change here
 
+=item *
+
+L<perlsyn>: An ambiguity in the documentation of the Ellipsis statement has
+been corrected. [perl #122661]
+
 =back
 
 =head1 Diagnostics
@@ -263,10 +314,24 @@ XXX Describe change here
 
 =item *
 
+"Constant is not a FOO reference"
+
+Compile-time checking of constant dereferencing (e.g.,
+C<< my_constant->() >>) has been removed, since it was not taking
+overloading into account.  [perl #69456] [perl #122607]
+
+=item *
+
 The warning "Ambiguous use of -foo resolved as -&foo()" has been removed.
 There is actually no ambiguity here, and this impedes the use of negated
 constants; e.g., C<-Inf>.
 
+=item *
+
+The little-known C<my Class $var> syntax (see L<fields> and L<attributes>)
+could get confused in the scope of C<use utf8> if C<Class> were a constant
+whose value contained Latin-1 characters.
+
 =back
 
 =head1 Utility Changes
@@ -401,12 +466,6 @@ XXX
 
 =item *
 
-Compile-time checking of constant dereferencing (e.g.,
-C<< my_constant->() >>) has been removed, since it was not taking
-overloading into account.  [perl #69456] [perl #122607]
-
-=item *
-
 Constant dereferencing now works correctly for typeglob constants.
 Previously the glob was stringified and its name looked up.  Now the glob
 itself is used.  [perl #69456]
@@ -488,6 +547,28 @@ The parser no longer gets confused by C<\U=> within a double-quoted string.
 It used to roduce a syntax error, but now compiles it correctly.
 [perl #80368]
 
+=item *
+
+It has always been the intention for the C<-B> and C<-T> file test
+operators to treat UTF-8 encoded files as text.
+(L<perlfunc|perlfunc/-X FILEHANDLE> has been updated to say this.)
+Previously, it was possible for some files to be considered UTF-8 that
+actually weren't valid UTF-8.  This is now fixed.  The operators now
+work on EBCDIC platforms as well.
+
+=item *
+
+Under some conditions warning messages raised during regular expression
+pattern compilation were being output more than once.  This has now been
+fixed.
+
+=item *
+
+A regression has been fixed that was introduced in v5.20.0 (fixed in
+v5.20.1 as well as here) in which a UTF-8 encoded regular expression
+pattern that contains a single ASCII lowercase letter does not match its
+uppercase counterpart. [perl #122655]
+
 =back
 
 =head1 Known Problems