This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
for storage of NVs, use "IV in sv_u in head no-body trick" where possible
[perl5.git] / pod / perldelta.pod
index 4418bba..a420c09 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.4
+perldelta - what is new for perl v5.21.5
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.21.3 release and the 5.21.4
+This document describes differences between the 5.21.4 release and the 5.21.5
 release.
 
-If you are upgrading from an earlier release such as 5.21.2, first read
-L<perl5213delta>, which describes differences between 5.21.2 and 5.21.3.
+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.
 
 =head1 Notice
 
@@ -27,6 +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>.
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -89,7 +104,14 @@ There may well be none in a stable release.
 
 =item *
 
-XXX
+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.
 
 =back
 
@@ -119,73 +141,9 @@ XXX
 
 =item *
 
-L<XXX> has been upgraded from version A.xx to B.yy.
-
-=item *
-
-L<B::Concise> has been upgraded from version 0.992 to 0.993.
-
-=item *
-
-L<CPAN::Meta::Requirements> has been upgraded from version 2.126 to 2.128.
-
-=item *
-
-L<ExtUtils::CBuilder> has been upgraded from version 0.280216 to 0.280219.
-[perl #122675].
+L<Module::CoreList> has been upgraded from version 5.20140920 to 5.20141020.
 
-=item *
-
-L<ExtUtils::Manifest> has been upgraded from version 1.65 to 1.66.
-[perl #122415].
-
-=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 *
-
-L<Module::CoreList> has been upgraded from version 5.021003 to 5.021004.
-
-=item *
-
-L<POSIX> has been upgraded from version 1.42 to 1.43.
-
-=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
-defined in packages other than the caller.
-
-=item *
-
-L<threads> has been upgraded from version 1.95 to 1.96.
+Updated to cover the latest releases of Perl.
 
 =back
 
@@ -226,11 +184,6 @@ 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
@@ -279,32 +232,6 @@ XXX Describe change here
 
 =back
 
-=head2 Diagnostic Removals
-
-=over 4
-
-=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
 
 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
@@ -418,6 +345,8 @@ well.
 
 =over 4
 
+=item *
+
 XXX
 
 =back
@@ -435,89 +364,6 @@ files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
 
 XXX
 
-=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]
-
-=item *
-
-When parsing a funny character ($ @ % &) followed by braces, the parser no
-longer tries to guess whether it is a block or a hash constructor (causing
-a syntax error when it guesses the latter), since it can only be a block.
-
-=item *
-
-C<undef $reference> now frees the referent immediately, instead of hanging
-on to it until the next statement.  [perl #122556]
-
-=item *
-
-Various cases where the name of a sub is used (autoload, overloading, error
-messages) used to crash for lexical subs, but have been fixed.
-
-=item *
-
-Bareword lookup now tries to avoid vivifying packages if it turns out the
-bareword is not going to be a subroutine name.
-
-=item *
-
-Compilation of anonymous constants (e.g., C<sub () { 3 }>) no longer
-deletes any subroutine named C<__ANON__> in the current package.  Not only
-was C<*__ANON__{CODE}> cleared, but there was a memory leak, too.  This bug
-goes back to perl 5.8.0. 
-
-=item *
-
-Stub declarations like C<sub f;> and C<sub f ();> no longer wipe out
-constants of the same name declared by C<use constant>.  This bug was
-introduced in perl 5.10.0.
-
-=item *
-
-Under some conditions a warning raised in compilation of regular
-expression patterns could be displayed multiple times.  This is now
-fixed.
-
-=item *
-
-C<qr/[\N{named sequence}]/> now works properly in many instances.  Some
-names known to C<\N{...}> refer to a sequence of multiple characters,
-instead of the usual single character.  Bracketed character classes
-generally only match single characters, but now special handling has
-been added so that they can match named sequences, but not if the class
-is inverted or the sequence is specified as the beginning or end of a
-range.  In these cases, the only behavior change from before is a slight
-rewording of the fatal error message given when this class is part of a
-C<?[...])> construct.  When the C<[...]> stands alone, the same
-non-fatal warning as before is raised, and only the first character in
-the sequence is used, again just as before.
-
-=item *
-
-Tainted constants evaluated at compile time no longer cause unrelated
-statements to become tainted.  [perl #122669]
-
-=item *
-
-C<open $$fh, ...>, which vivifies a handle with a name like "main::_GEN_0",
-was not giving the handle the right reference count, so a double free could
-happen.
-
-=item *
-
-When deciding that a bareword was a method name, the parser would get
-confused if an "our" sub with the same name existed, and look up the method
-in the package of the "our" sub, instead of the package of the invocant.
-
-=item *
-
-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]
-
 =back
 
 =head1 Known Problems
@@ -545,6 +391,13 @@ XXX
 XXX Add anything here that we forgot to add, or were mistaken about, in
 the perldelta of a previous release.
 
+=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.
+
 =back
 
 =head1 Obituary
@@ -556,7 +409,7 @@ here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.21.3..HEAD
+  perl Porting/acknowledgements.pl v5.21.4..HEAD
 
 =head1 Reporting Bugs